473 次浏览
直流电机是最简单的电机类型。它有两个端子或引线。当连接电池时,电机将旋转,如果反转连接,电机将反向旋转。如果端子上的电压降低,电机速度将相应降低。在本文中,我们将了解如何将直流电机与 Arduino 接口并控制其速度。我们不会讨论反转电机方向,因为这需要额外的 IC(H 桥)。在本文结尾,我将提供一些相关链接... 阅读更多
1K+ 次浏览
我们已经看到,为了将中断连接到源,我们使用 .attachInterrupt() 函数,并使用所需的参数。例如,为了将中断连接到特定的引脚,我们使用 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);同样,要从源分离中断,我们可以调用 detachInterrupt() 函数。这将简单地禁用该特定中断。禁用引脚中断的推荐语法为:detachInterrupt(digitalPinToInterrupt(pin))其中 pin 是您希望禁用中断的引脚编号。
7K+ 次浏览
如果您希望禁用中断(在执行某些关键代码时,尤其是在必须在给定时间段内完成的代码时),您可以使用 noInterrupts() 函数来实现。一旦您的关键代码执行完毕,并且您希望重新启用中断,您可以使用 interrupts() 函数来实现。请注意,Arduino 中默认启用中断,因此,在没有初始调用 noInterrupts() 的情况下调用 interrupts() 是不必要的。示例包含 noInterrupts() 和 interrupts() 的代码的一般结构如下所示:void setup() { // 在此处放置您的设置代码,仅运行一次:} ... 阅读更多
379 次浏览
通过各种操作,您可能会遇到不可打印的字符。毕竟,char 是一个 8 位数字,如果您查看 ASCII 表(https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html),则只有 32 到 127 的值,或者总共 96 个值(在 127 个值中)是可打印的(请参阅 http://facweb.cs.depaul.edu/~sjost/it212/documents/ascii-pr.htm)。ASCII 仅使用 7 位数字,而不是 8 位。因此,如果您从函数获得 char 输出,并希望检查它是否可打印,则可以使用 Arduino 的 isPrintable() 函数。语法 isPrintable(myChar)其中 myChar 是要检查的字符。如果字符可打印,则此函数返回 true。示例 void setup() { ... 阅读更多
出于各种原因,通常需要在 Arduino 中执行映射。一个示例是将 10 位 ADC 输出映射到 8 位以节省存储空间。10 位数字将占用 2 个字节的存储空间,而 8 位数字将仅占用 1 个字节,并且仍然保留 10 位数字的大部分信息。Arduino 具有一个现成的 map() 函数来实现此目的。语法 map(value, fromLow, fromHigh, toLow, toHigh)其中,value 是要映射的值;fromLow 和 fromHigh 是当前值的范围的界限;toHigh 和 toLow 是新值的范围的界限... 阅读更多
当您深入研究高级固件时,您会处理许多寄存器,其特定位需要根据您的用例进行设置或清除。Arduino 内置了执行此操作的功能。语法 bitSet(x, index)和,bitClear(x, index)其中 x 是其位需要设置/清除的数字,index 是位的位数(0 表示最低有效位或最右边的位)。此函数就地更改数字 x,并返回 x 的更新值。请注意,设置位表示将其值设置为 1,清除位表示将其值设置为 0。示例... 阅读更多
4K+ 次浏览
Arduino 中的 constrain() 函数有助于(顾名思义)将数字限制在上限和下限之间。语法 constrain(val, min, max)其中,val 是要限制的数字,min 是下限值,max 是上限值如果 val 小于 min,则此函数将返回 min。如果 val 大于 max,则此函数将返回 max。只要 val 在 min 和 max 之间,此函数将返回 val。示例以下示例说明了此函数的用法:void setup() { // 在此处放置您的设置代码,仅运行一次:... 阅读更多
2K+ 次浏览
如果您是固件开发人员,那么将数字或寄存器按特定位数进行移位可能非常常见。在 Arduino 中,也可以使用与 C 语言中相同的按位移位运算符,即 >> 用于右移。语法 x >> n 或 x > 1); Serial.println(x
Arduino 中的模数运算符与 C 语言或大多数其他语言中的运算符完全相同。运算符为 %。语法为:a % b,它返回 a 除以 b 的余数。示例以下示例说明了此运算符的用法:void setup() { // 在此处放置您的设置代码,仅运行一次: Serial.begin(9600); Serial.println(); Serial.println(10%3); Serial.println(4%2); Serial.println(50%9); } void loop() { // 在此处放置您的主代码,重复运行:}输出串行监视器输出如下所示。您可以自己计算余数,并验证输出是否正确。
615 次浏览
isSpace() 和 isWhitespace() 函数可用于检查字符是否为空格或更具体地说,是否为空白。空白是空格的子集。虽然空白仅包含空格和水平制表符('\t'),但空格包含换页符('\f')、换行符('')、回车符('\r')甚至垂直制表符('\v')。示例以下示例演示了这些函数的用法:void setup() { // 在此处放置您的设置代码,仅运行一次: Serial.begin(9600); Serial.println(); char c1 = 'a'; char c2 = ' '; char c3 = '\t'; char c4 = ''; ... 阅读更多