0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用Arduino制作Knight Rider LED扫描仪

454398 来源:网络整理 作者:网络整理 2019-11-28 10:11 次阅读

曾经希望您拥有自己的Knight Industries 2000(KITT)汽车-您知道吗,来自Knight Rider?通过构建LED扫描仪,使您的梦想更接近现实!这是最终结果:

您需要什么

该项目不需要很多零件,您可能已经有很多零件了:

1 x Arduino UNO或类似的

1 x面包板

8 x红色LEDs

8 x 220欧姆电阻

1 x 10k欧姆电位器

公对公连接线

如果您有Arduino入门套件,则很可能所有这些部件都可以(用入门工具可以做什么)套件。)

只要有八个可用的引脚(几乎从未使用过Arduino?请从这里开始),几乎任何Arduino都可以使用。您可以使用移位寄存器来控制LED,尽管该项目不需要此操作,因为Arduino具有足够的引脚。

构建计划

使用Arduino制作Knight Rider LED扫描仪

这是一个非常简单的项目。尽管从大量的电线来看可能看起来很复杂,但是每个单独的部分都非常简单。每个发光二极管(LED)连接到其自己的Arduino引脚。这意味着每个LED均可单独打开和关闭。电位计连接到Arduino模拟输入引脚,用于调整扫描仪的速度。

电路

电位器的外部左引脚(从正面看,引脚在底部)接地。将相反的外部引脚连接到+ 5v。如果不能正常工作,则将这些引脚接反。在2中将中间引脚连接到Arduino模拟量。

将每个LED的阳极(长脚)连接到数字引脚1至8。将阴极(短脚)连接到Arduino地面。

代码

创建一个新草图并将其另存为“ knightRider”。代码如下:

const int leds[] = {1,2,3,4,5,6,7,8}; // Led pins

const int totalLeds = 8;

int time = 50; // Default speed

void setup() {

// Initialize all outputs

for(int i = 0; i 《= totalLeds; ++i) {

pinMode(leds[i], OUTPUT);

}

}

void loop() {

for(int i = 0; i 《 totalLeds - 1; ++i) {

// Scan left to right

time = analogRead(2);

digitalWrite(leds[i], HIGH);

delay(time);

digitalWrite(leds[i + 1], HIGH);

delay(time);

digitalWrite(leds[i], LOW);

}

for(int i = totalLeds; i 》 0; --i) {

// Scan right to left

time = analogRead(2);

digitalWrite(leds[i], HIGH);

delay(time);

digitalWrite(leds[i - 1], HIGH);

delay(time);

digitalWrite(leds[i], LOW);

}

}

让我们对其进行分解。每个LED引脚都存储在一个数组中:

const int leds[] = {1,2,3,4,5,6,7,8};

数组本质上是相关项目的集合。这些元素被定义为常量(“ const”),这意味着它们以后无法更改。尽管建议使用常量,但不必使用常量(如果删除“ const”,代码将正常工作)。

使用方括号(“ []”)访问数组的元素和一个称为索引的整数。索引从零开始,因此“ leds [2]”将返回数组中的第三个元素—针脚3。数组使代码更快地编写且更易于阅读,它们使计算机难以完成工作!

一个for循环用于将每个引脚设置为输出:

for(int i = 0; i 《= totalLeds; ++i) {

pinMode(leds[i], OUTPUT);

}

此代码位于“ setup()”函数内部,因为它仅需要在以下位置运行一次程序的开始。 For循环非常有用。它们允许您一次又一次地运行相同的代码,每次都使用不同的值。它们非常适合使用数组。声明了整数“ i”,并且只有循环内部的代码才能访问此变量(称为“作用域”)。 i的值从零开始,对于循环的每次迭代,i都增加1。一旦i的值小于或等于“ totalLeds”变量,则循环“中断”(停止)。

i的值用于访问“ leds”数组。该循环访问数组中的每个元素,并将其配置为输出。您可以手动键入“ pinMode(pin,OUTPUT)”八次,但是为什么您可以写八行却可以写三行呢?

尽管有些编程语言可以告诉您数组中有多少个元素(通常使用像array.length这样的语法),Arduino并没有使其变得如此简单(它涉及到更多的数学运算)。由于数组中元素的数目是已知的,所以这不是问题。

在主循环内部( void loop())是另外两个for循环。第一个循环将LED从1 – 8设置为ON,然后关闭。第二个循环将LED从8 – 1设置为ON,然后关闭。请注意,如何将电流引脚设置为ON,同时将电流引脚加一个也设置为ON。这样可以确保始终同时有两个LED,从而使扫描仪看起来更逼真。

在每个循环开始时,电位计的值都将被读取到“时间”变量中:/p》 time = analogRead(2);

此操作执行两次,每个循环一次。这需要不断检查和更新。如果此操作不在循环中,它仍然可以工作,但是会有一个小的延迟-它仅在循环完成执行后才运行。电位计是模拟的,因此为什么要使用“ analogRead(pin)”。这将返回零(最小值)到1023(最大值)之间的值。 Arduino能够将这些值转换为更有用的值,但是对于这种使用情况,它们是完美的选择。

更改LED的间隔(或扫描仪的速度)之间的延迟以毫秒为单位(1/1000秒) ),因此最长时间仅为1秒。

高级扫描器

现在,您已经了解了基本知识,让我们来看一下在更复杂的地方。该扫描仪将从外部开始并在工作中成对点亮LED。然后将其反转,从内部到外部成对发光。以下是代码:

const int leds[] = {1,2,3,4,5,6,7,8}; // Led pins

const int totalLeds = 8;

const int halfLeds = 4;

int time = 50; // Default speed

void setup() {

// Initialize all outputs

for(int i = 0; i 《= totalLeds; ++i) {

pinMode(leds[i], OUTPUT);

}

}

void loop() {

for(int i = 0; i 《 (halfLeds - 1); ++i) {

// Scan outside pairs in

time = analogRead(2);

digitalWrite(leds[i], HIGH);

digitalWrite(leds[(totalLeds - i) - 1], HIGH);

delay(time);

digitalWrite(leds[i], LOW);

digitalWrite(leds[(totalLeds - i) - 1], LOW);

delay(time);

}

for(int i = (halfLeds - 1); i 》 0; --i) {

// Scan inside pairs out

time = analogRead(2);

digitalWrite(leds[i], HIGH);

digitalWrite(leds[(totalLeds - i) - 1], HIGH);

delay(time);

digitalWrite(leds[i], LOW);

digitalWrite(leds[(totalLeds - i) - 1], LOW);

delay(time);

}

}

此代码稍微复杂一些。请注意,两个循环如何从零变为“ halfLeds – 1”(3)。这使扫描仪更好。如果两个循环都从4 – 0和0 – 4变为循环,则相同的LED将以相同的顺序闪烁两次-看起来效果不佳。

您现在应该拥有一台工作正常的Knight Rider LED扫描仪!修改它以使用更多或更大的LED或实现您自己的图案将很容易。该电路很容易移植到Raspberry Pi(是Pi的新功能?从此处开始)或ESP8266

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 扫描仪
    +关注

    关注

    2

    文章

    413

    浏览量

    67804
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186554
收藏 人收藏

    评论

    相关推荐

    大幅扫描仪扫描地图怎么操作

    1. 准备扫描仪和地图 在开始扫描之前,确保您的大幅扫描仪已经安装并正确配置。您可能需要安装特定的驱动程序或软件,以便扫描仪能够与您的计算机通信。 检查
    的头像 发表于 10-14 15:47 357次阅读

    蔡司激光三维扫描仪有效扫描金属材料

    蔡司激光三维扫描仪因其高精度和多功能性,在工业检测、逆向工程、质量控制等领域得到了广泛应用。对于金属材料的扫描,用户常常关心的是ZEISS激光三维扫描仪是否能够有效地完成这项任务。本文蔡司代理-三本
    的头像 发表于 09-26 15:08 380次阅读
    蔡司激光三维<b class='flag-5'>扫描仪</b>有效<b class='flag-5'>扫描</b>金属材料

    何为电磁干扰(EMI)扫描仪,哪里需要它?

    什么是电磁干扰扫描仪?电磁干扰扫描仪(Electromagneticinterferencescanner)又称EMI扫描仪,是属于电磁兼容(EMC)测所试设备,具备干扰频谱分析、定频干扰成像功能
    的头像 发表于 08-30 13:02 316次阅读
    何为电磁干扰(EMI)<b class='flag-5'>扫描仪</b>,哪里需要它?

    如何选择电磁干扰(EMI)扫描仪,看看这几点

    在上期讲完了电磁干扰(EMI)扫描仪的定义和应用以后,我们应该如何去选择一款合适的电磁干扰(EMI)扫描仪?在当今复杂的电子设备环境中,选择合适的电磁干扰(EMI)扫描仪对于确保产品质量、符合标准
    的头像 发表于 08-30 13:02 380次阅读
    如何选择电磁干扰(EMI)<b class='flag-5'>扫描仪</b>,看看这几点

    lidar激光雷达扫描仪有什么用

    LiDAR(Light Detection and Ranging,激光探测与测距)是一种利用激光技术进行距离测量和成像的技术。LiDAR激光雷达扫描仪具有高精度、高分辨率、快速扫描等特点,广泛应用
    的头像 发表于 08-29 16:58 580次阅读

    泰来三维| faro orbis 移动三维扫描仪扫描公园广场

    扫描仪
    泰来三维
    发布于 :2024年01月17日 14:14:48

    泰来三维|如何轻松玩转三维扫描仪中手持快速扫描模式

    如何轻松玩转三维扫描仪中手持快速扫描模式,EinScan Pro 2X 2020系列EinScan Pro 2X plus三维扫描仪包含普通模式和精细模式
    的头像 发表于 01-11 15:44 433次阅读
    泰来三维|如何轻松玩转三维<b class='flag-5'>扫描仪</b>中手持快速<b class='flag-5'>扫描</b>模式

    faro orbis 移动扫描仪一体化混合扫描

    扫描仪
    泰来三维
    发布于 :2023年12月19日 15:44:33

    泰来三维| FARO Orbis是如何与 Focus Premium 激光扫描仪一起协同工作

    Faro Orbis扫描仪能够同时提供移动扫描和固定式扫描。Orbis 扫描仪允许操作人员在行走和静止扫描之间进行无缝切换,同时连续获取36
    的头像 发表于 12-19 15:41 420次阅读

    蔡司激光手持三维扫描仪蓝光3D扫描仪问题探讨

    扫描仪厂家三本精密仪器,一起来探讨蔡司激光手持三维扫描仪蓝光3D扫描仪问题1:光学扫描受外部光源的影响有多大?解答:对外部光源需要稳定不在太阳光下即可,所以基本上所有车间都是满足需求
    的头像 发表于 12-14 15:44 818次阅读
    蔡司激光手持三维<b class='flag-5'>扫描仪</b>蓝光3D<b class='flag-5'>扫描仪</b>问题探讨

    蓝光三维扫描仪和激光扫描仪问题解答

    关于蓝光三维扫描仪和激光扫描仪问题解答,扫描仪厂家三本精密仪器讲解如下:问题1:蓝光和激光的扫描,效果哪个更好,两者有什么优缺点?解答:蓝光设备属于固定拍照式,精度较高,针对中小零件,
    的头像 发表于 12-14 15:08 930次阅读
    蓝光三维<b class='flag-5'>扫描仪</b>和激光<b class='flag-5'>扫描仪</b>问题解答

    多功能安全扫描仪工具介绍

    Trivy(发音)是一款全面且多功能的安全扫描仪。Trivy 拥有用于查找安全问题的扫描仪,以及可以找到这些问题的目标。 目标(Trivy 可以扫描的内容):
    的头像 发表于 12-13 10:20 720次阅读
    多功能安全<b class='flag-5'>扫描仪</b>工具介绍

    无缝切换,集移动和固定于一体的混合扫描仪-FARO Orbis 移动扫描仪

    rbis 有力地体现创新和扩大服务市场,兼有 FARO 技术和 GeoSlam 和 HoloBuilder所带来的功能。具有移动扫描仪不具备的功能和基于三脚架的激光扫描仪的精度,为 3D 现实捕获
    的头像 发表于 12-06 10:47 544次阅读
    无缝切换,集移动和固定于一体的混合<b class='flag-5'>扫描仪</b>-FARO Orbis 移动<b class='flag-5'>扫描仪</b>

    faro orbis 移动扫描仪如何实现一体化混合扫描扫描快10倍#电路知识

    电路扫描仪
    泰来三维
    发布于 :2023年11月22日 16:08:14