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

    文章

    422

    浏览量

    67844
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186913
收藏 人收藏

    评论

    相关推荐

    微软已修复扫描仪USB连接问题

    微软对其支持文档予以更新,并宣告已将 Windows 11 版本 24H2 中的扫描仪 USB 连接问题处理好。 在此之前,Windows 11 24H2 的 eSCL 协议出现了故障,设备在需要
    的头像 发表于 12-12 16:55 201次阅读

    国产纯硅振荡器替换SITime用于三维扫描仪

    国产纯硅振荡器替换SITime用于三维扫描仪
    的头像 发表于 12-04 10:18 108次阅读
    国产纯硅振荡器替换SITime用于三维<b class='flag-5'>扫描仪</b>中

    如何将三维激光扫描仪与BIM结合使用

    将三维激光扫描仪与BIM(建筑信息模型)结合使用,可以充分发挥两者的优势,提高工程测量的精度和效率。以下是将三维激光扫描仪与BIM结合使用的具体步骤和注意事项: 一、前期准备 确定扫描目标 : 明确
    的头像 发表于 11-28 10:18 160次阅读

    三维激光扫描仪在工程测量中的优势

    三维激光扫描仪在工程测量中展现出了显著的优势,这些优势使得它在该领域得到了广泛的应用。以下是对三维激光扫描仪在工程测量中优势的分析: 高精度测量 : 三维激光扫描仪采用非接触式测量方式,避免了传统
    的头像 发表于 11-28 10:12 164次阅读

    三维激光扫描仪与无人机结合的应用

    三维激光扫描仪与无人机结合的应用为多个领域带来了革命性的变化。以下是对这种结合应用的具体分析: 一、应用概述 三维激光扫描仪与无人机技术的结合,通过无人机搭载三维激光扫描仪进行空中作业,能够
    的头像 发表于 11-28 10:10 258次阅读

    三维激光扫描仪使用技巧 三维激光扫描仪测量精度分析

    三维激光扫描仪使用技巧 三维激光扫描仪的使用技巧涵盖了多个方面,旨在确保扫描过程的准确性和高效性。以下是一些关键的使用技巧: 稳定操作环境 :确保扫描过程中有一个稳定的操作环境,避免震
    的头像 发表于 11-28 10:07 187次阅读

    三维激光扫描仪应用领域 三维激光扫描仪与传统测量工具比较

    三维激光扫描仪应用领域 三维激光扫描仪因其高精度、高效率和非接触式的测量方式,在多个领域得到了广泛应用: 测绘领域 :用于地形、公路铁路、河道及建筑基地的测绘,提供精确的空间数据。 工业测量 :在
    的头像 发表于 11-28 10:04 201次阅读

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

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

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

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

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

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

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

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

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

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

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

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

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

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