514 次浏览
光敏电阻 (LDR) 的阻值会根据照射在其上的光强度的变化而变化。将 LDR 与 Arduino 接口非常简单。您只需创建一个如下所示的分压器 - LDR 的一端连接到 5V,另一端连接到电阻(其阻值应与 LDR 的最大阻值大致相同)。例如,我们使用一个阻值为 90K 的 LDR,电阻的最大阻值为 150K。电阻的另一端连接到 GND,并且 ... 阅读更多
11K+ 次浏览
像 UART(串行)、I2C 和 SPI 这样的通信协议非常流行,因为可以使用这些协议将多个外设与 Arduino 接口连接。CAN(控制器局域网络)是另一种此类协议,它在一般情况下并不十分流行,但在汽车领域却有着广泛的应用。虽然深入探讨 CAN 总线细节超出了本文的范围,但您可以在此处找到相关信息。但是,以下是一些您应该了解的事情:CAN 是一种基于消息的协议(即,消息和内容比发送者更重要)。一个设备发送的消息会被 ... 阅读更多
619 次浏览
触摸传感器看起来像下面这样:它有 3 个引脚 - Vcc、GND 和信号。当有人触摸传感器时,信号引脚变为高电平(未触摸时通常输出低电平)。因此,我们只需对信号引脚进行 digitalRead 并确定是否正在触摸传感器。电路图电路图非常简单,如下所示如您所见,触摸传感器的 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(它通常比闪存小得多,但访问速度更快)。存储 ... 阅读更多
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() { ... 阅读更多