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

    文章

    459

    浏览量

    68934
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197445
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    病理切片扫描仪EMC电磁兼容解决方案

    病理切片扫描仪EMC电磁兼容解决方案 随着数字病理技术的快速发展,病理切片扫描仪已成为现代医疗诊断体系中的关键设备。其通过高精度光学成像与高速数据处理,将传统玻片转化为高分辨率数字图像,为远程诊断
    的头像 发表于 04-21 09:33 17次阅读
    病理切片<b class='flag-5'>扫描仪</b>EMC电磁兼容解决方案

    禾赛科技与如视即将推出手持实景扫描仪庞加莱R1

    2025 年 11 月 4 日,全球领先的激光雷达企业禾赛科技与数字空间综合解决方案引领者如视联合宣布将推出手持实景扫描仪庞加莱 R1。该产品搭载禾赛迷你型超半球 3D 激光雷达 JT128 ,配合
    的头像 发表于 11-06 15:46 1086次阅读

    SICK激光扫描仪:为工业高精度检测及测量保驾护航

    作为工业传感器领域的全球领先企业,SICK公司凭借其创新的激光扫描技术,为各行各业提供了多种高效、可靠的解决方案。从简单的物体检测到复杂的安全防护,__SICK激光扫描仪__产品正不断推动着工业
    的头像 发表于 11-06 14:25 472次阅读
    SICK激光<b class='flag-5'>扫描仪</b>:为工业高精度检测及测量保驾护航

    三维扫描仪 | 先临三维RobotScan Q12自动化扫描机器人零部件

    扫描仪
    jf_37811293
    发布于 :2025年10月28日 10:44:21

    200万粉汽车达人的改装秘诀:用这台手持扫描仪,让法拉利轮辋完美适配

    mbDesign 的合作案例,看看蔡司 ZEISS T-SCAN hawk 2 手持式 3D 扫描仪,如何为法拉利 F12 Berlinetta 的轮罩与轮辋优化提供关键支持。 一 、 合作背景:以设计为
    的头像 发表于 09-26 17:10 1253次阅读
    200万粉汽车达人的改装秘诀:用这台手持<b class='flag-5'>扫描仪</b>,让法拉利轮辋完美适配

    Brother全新发布两款网络扫描仪,助力企业加速迈入数字化办公新生态

    上海2025年8月25日 /美通社/ -- 纸质文档电子化是构建数字化办公的基础环节。Brother全新推出高速办公网络扫描仪ADS-3350W和ADS-2750W。在速度、容量和功能方面做出优化
    的头像 发表于 08-25 13:46 662次阅读
    Brother全新发布两款网络<b class='flag-5'>扫描仪</b>,助力企业加速迈入数字化办公新生态

    三维扫描仪 | 先临三维工程师使用AutoScan Inspec2扫描耳机外壳

    扫描仪
    jf_37811293
    发布于 :2025年08月18日 08:53:02

    M12连接器在激光扫描仪传感器上的广泛运用

    在工业自动化与精密制造领域,激光技术(如切割、焊接、测量等)对设备连接的可靠性、抗干扰性及紧凑性提出了极高要求。M12连接器凭借其标准化设计、高防护等级及灵活的芯数配置,成为激光扫描仪传感器上的核心
    发表于 08-08 15:12 0次下载

    蔡司三维扫描仪第三方代抄数检测机构

    在智能制造与数字化转型的浪潮中,蔡司三维激光扫描仪以其卓越的技术性能和广泛的应用场景,成为工业检测领域的标杆工具。蔡司官方授权代理-广东三本测量获悉:作为全球光学与光电技术领域的领导者,蔡司推出
    的头像 发表于 08-02 11:57 1215次阅读
    蔡司三维<b class='flag-5'>扫描仪</b>第三方代抄数检测机构

    三维扫描仪 | 先临三维AutoScan Inspec2进行叶轮全尺寸检测

    扫描仪
    jf_37811293
    发布于 :2025年07月28日 08:37:19

    三维扫描仪 | 先临三维工程师使用FreeScan UE Pro2扫描汽车缸体

    扫描仪
    jf_37811293
    发布于 :2025年06月05日 10:17:17

    超酷的树莓派激光雷达扫描仪

    摘要这款DIY的PiLiDAR扫描仪项目利用树莓派进行激光雷达测绘。激光雷达通过发射激光来扫描周围环境,从而创建三维模型。该项目需要树莓派4、摄像头、电机以及激光雷达套件。你是否了解过激光雷达扫描仪
    的头像 发表于 06-01 08:33 1260次阅读
    超酷的树莓派激光雷达<b class='flag-5'>扫描仪</b>!

    积木易搭上新3D空间扫描仪RayZoom G100,搭载3D高斯泼溅+开发者方案

    近日,积木易搭旗下子公司——武汉睿数信息技术有限公司(简称“睿数信息”)上新了一款手持式3D空间扫描仪——RayZoom G100。  RayZoom G100是一款通用型3D空间扫描仪,能够满足
    的头像 发表于 04-24 09:14 1384次阅读