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 = ''; ... 阅读更多