514 次查看
光敏电阻 (LDR) 的阻值会根据照射在其上的光强度的变化而变化。将 LDR 与 Arduino 接口非常简单。您只需创建一个如下所示的分压器 - LDR 的一端连接到 5V,另一端连接到一个电阻(其阻值应与 LDR 的最大阻值大致相同)。例如,我们使用阻值为 90K 的 LDR,电阻的最大阻值为 150K。电阻的另一端连接到 GND,并且 ... 阅读更多
11K+ 次查看
像 UART(串口)、I2C 和 SPI 这样的通信协议非常流行,因为可以使用这些协议将多个外设与 Arduino 连接。CAN(控制器局域网络)是另一种此类协议,它在一般情况下并不十分流行,但在汽车领域却有许多应用。虽然深入探讨 CAN 总线细节不在本文的讨论范围之内,但您可以在此处找到相关信息。但是,以下是一些您应该了解的事情:CAN 是一种基于消息的协议(即,消息和内容比发送者更重要)。一个设备发送的消息会被 ... 阅读更多
619 次查看
触摸传感器如下图所示:它有 3 个引脚 - Vcc、GND 和信号。每当有人触摸传感器时,信号引脚都会变为高电平(在不触摸时通常输出低电平)。因此,我们只需对信号引脚进行数字读取,并确定是否触摸了传感器。电路图电路图非常简单,如下所示如您所见,触摸传感器的 GND 引脚连接到 Arduino 的 GND 引脚,Vcc 引脚连接到 5V,SIG 引脚连接到 Arduino 的 7 号引脚。示例代码代码也很简单,如 ... 阅读更多
2K+ 次查看
有各种类型的接近传感器可用。我们在另一篇文章中讨论过的超声波传感器也可用于作为接近传感器。但是,在本文中,我们将考虑红外接近传感器。典型的红外接近传感器如下图所示:有一个红外发射 LED 和一个红外接收器(光电二极管)。如您所见,该传感器有 3 个引脚(VCC、GND 和 OUT)。当存在充当反射面的障碍物时,OUT 引脚会发出低电平信号,并且 LED 发出的光会反射回 ... 阅读更多
487 次查看
Arduino Uno 或任何其他微控制器通常有 3 种类型的内存:闪存这是存储 Arduino 草图的地方。使用 PROGMEM 或 F() 宏定义的任何变量也存储在此处。请注意,默认情况下,此类变量是不可变的,即其值在运行时无法更改。闪存是非易失性的(即,即使电源关闭后,存储的内容也不会丢失)它比 SRAM 访问速度慢,但由于它的尺寸比 SRAM 大得多,因此可以将一些不可变的字符串/数组存储在这里以避免 SRAM 溢出。它通常具有 10,000 次读/写 ... 阅读更多
通常,您的 Arduino 代码中可能有很多打印语句。这些通常存储在 SRAM 中。但是,如果您的草图有太多这样的打印语句,它们可能会很快填满 SRAM。在这种情况下,明智的做法可能是将这些打印语句存储在闪存中(闪存的尺寸通常比 SRAM 大得多)。假设您的草图没有占用整个闪存(通常情况并非如此)。示例类似于以下的打印语句:Serial.print("要打印的典型常量字符串");可以用以下内容替换:Serial.print(F("要打印的典型常量字符串 ... 阅读更多
7K+ 次查看
当您希望将数据存储在程序内存(闪存)而不是 SRAM 中时,PROGMEM 是您使用的关键字。虽然您可以对单个变量使用 PROGMEM,但这没有多大意义。毕竟,SRAM 的空间足以容纳您的单个变量,并且访问存储在 SRAM 中的变量的速度会更快。PROGMEM 主要用于大量数据(主要是数组),这些数据可能会压垮 SRAM(SRAM 的尺寸通常比闪存小得多,但访问速度更快)。存储 ... 阅读更多
4K+ 次查看
CRC 代表循环冗余校验 (CRC)。简单来说,它是一种用于检测接收到的消息中错误的算法。其思想类似于奇偶校验,但它更加鲁棒。如果发送方正在将数据包发送到接收方,则发送方将根据数据包上的一些多项式计算来计算 CRC 代码,并将其附加到数据包中。接收方将对数据包执行相同的计算,并检查生成的 CRC 是否与数据包中附带的 CRC 匹配。如果两者匹配,则传输过程中没有引入错误, ... 阅读更多
743 次查看
AVR 库由 Atmel 开发。您可能知道大多数 Arduino 板中使用的微控制器是 Atmel 微控制器(ATmega328P、ATmega2560 等)。针对多种特定操作(睡眠、时间等)的 AVR 库已经存在,因此,如果我们能够在 Arduino 中导入 AVR 库,我们将从中受益匪浅。好消息是我们可以!根据 Arduino 的网站,“AVR 库有可能极大地扩展 Arduino 语言。Arduino 系统基于 avr-gcc 编译器,并使用标准 AVR libc 库,这些库是专门为 Atmel 硬件编写的开源 C 库, ... 阅读更多
看门狗定时器是任何微控制器必不可少的一部分。如果程序卡在任何地方,它都会重置程序。简单来说,看门狗定时器的运作方式如下:定时器持续递增。程序必须确保它不断重置定时器,即不允许它溢出。如果定时器溢出,则表示程序卡在某个地方,因此无法重置定时器。定时器溢出时会产生一个中断,该中断会重置微控制器。要在 Arduino 中实现看门狗定时器,我们使用 avr wdt 库。代码如下:#include void setup() { ... 阅读更多