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)。当存在充当反射面的障碍物并且来自 LED 的光反射回…… 阅读更多
487 次浏览
Arduino Uno 或任何其他微控制器通常具有 3 种类型的内存 -闪存这是存储 Arduino 草图的地方。使用 PROGMEM 或 F() 宏定义的任何变量也存储在此处。请注意,此类变量默认情况下是不可变的,即它们的运行时值无法更改。闪存是非易失性的(即,即使电源关闭后,存储的内容也不会丢失)它比 SRAM 访问速度慢,但由于它比 SRAM 大得多,因此可以将一些不可变的字符串/数组存储在此处以避免 SRAM 溢出。它通常具有 10,000 次读/写…… 阅读更多
通常,您的 Arduino 代码中可能有许多打印语句。这些通常存储在 SRAM 中。但是,如果您的草图有太多这样的打印语句,它们可能会很快填满 SRAM。在这种情况下,明智的做法可能是将这些打印语句存储在闪存中(闪存通常比 SRAM 大得多)。这是假设您的草图没有占用整个闪存(它通常不会)。示例类似这样的打印语句 -Serial.print("要打印的典型常量字符串");可以用以下内容替换 -Serial.print(F("要打印的典型常量字符串"…… 阅读更多
7K+ 次浏览
PROGMEM 是当您希望将数据存储在程序内存(闪存)而不是 SRAM 中时使用的关键字。虽然您可以将 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() { …… 阅读更多