Arduino编程语言简介

您如何为Arduino开发板编写程序? Arduino本身支持一种称为Arduino编程语言或Arduino语言的语言。

您如何为Arduino开发板编写程序?

Arduino本身支持一种称为Arduino编程语言或Arduino语言的语言。

该语言基于接线开发平台,该平台又基于加工,如果您不熟悉,那是什么p5.js基于。以非常开源的方式建立在其他项目之上的项目已有很长的历史。 Arduino IDE基于处理IDE和在其之上构建的Wiring IDE。

当我们使用Arduino时,我们通常会使用Arduino IDE(集成开发环境),该软件可用于所有主要的台式机平台(macOS,Linux,Windows),它为我们提供了2件事:具有集成库支持的编程编辑器,以及轻松地将我们的Arduino程序编译并加载到与计算机连接的板上的方法。

Arduino编程语言基本上是建立在C ++之上的框架。您可以争辩说它不是传统术语中的真正编程语言,但是我认为这有助于避免使初学者感到困惑。

用Arduino编程语言编写的程序称为草图。草图通常与.ino扩展名(来自Arduino)。

与“正常”的主要区别C或C ++是将所有代码包装到2个主要函数中。当然,您可以有2个以上,但是任何Arduino程序都必须至少提供2个。

一个叫做setup(),另一个叫做loop()。第一个调用一次,程序启动时,第二个在程序运行时重复调用。

我们没有main()就像您在C / C ++中习惯于将函数用作程序的入口点一样。编译完草图后,IDE将确保最终结果是正确的C ++程序,并通过预处理将基本上添加缺失的胶水。

其他所有内容都是普通的C ++代码,并且由于C ++是C的超集,因此任何有效的C也是有效的Arduino代码。

可能引起麻烦的一个不同之处是,尽管可以在多个文件上生成程序,但这些文件必须全部位于同一文件夹中。如果您的程序会变得很大,可能会成为一个突破性的限制,但是到那时,很容易转移到本机C ++设置,这是可能的。

Arduino编程语言的一部分是内置库,可让您轻松地与Arduino开发板提供的功能集成。

您的第一个Arduino程序肯定会涉及到先打开灯然后关闭。为此,您将使用pinMode()delay()digitalWrite()函数,以及一些常量,例如HIGHLOWOUTPUT

像这样,第一个规范的Arduino项目(“ Hello,World!”):

#define LED_PIN 13

void setup() {
    // Configure pin 13 to be a digital output
    pinMode(LED_PIN, OUTPUT);
}

void loop() { // Turn on the LED digitalWrite(LED_PIN, HIGH); // Wait 1 second (1000 milliseconds) delay(1000); // Turn off the LED digitalWrite(LED_PIN, LOW); // Wait 1 second delay(1000); }

这都是Arduino编程语言的一部分,或者我们最好称其为套房或者图书馆

支持其他语言

提醒一下,我想指出的是,您不仅限于使用此语言和IDE对Arduino进行编程。除了其他项目外,还存在一些项目,您可以使用它们在其上运行Node.js代码。约翰尼五世项目,使用Python代码脓毒症并使用以下代码机器人,但是Arduino编程语言无疑是大多数教程所基于的语言,因为它是使用这些设备的本机且规范的方法。

Arduino编程语言内置常量

Arduino设置了两个我们可以用来常量的常量

HIGH等于高电压,其电压因硬件而异(在3.3V板上,例如Arduino Nano,> 2V;在5V板上,例如Arduino Uno,> 3V)LOW等于低电平。同样,确切值取决于所使用的电路板

然后我们有3个常量,可以与pinMode()功能:

  • INPUT将引脚设置为输入引脚
  • OUTPUT将引脚设置为输出引脚
  • INPUT_PULLUP将引脚设置为内部上拉电阻

我们拥有的另一个常数是LED_BUILTIN,它指向板载引脚的编号,通常等于该编号13

除此之外,我们还有C / C ++常量truefalse

Arduino数学常数

  • M_PI常数pi(3.14159265358979323846
  • M_E常数e
  • M_LN10 the natural logarithm of the number 10.
  • M_LN2 the natural logarithm of the number 2.
  • M_LOG10E the logarithm of the e to base 10.
  • M_LOG2E the logarithm of the e to base 2.
  • M_SQRT2 the square root of 2.
  • NANNAN(不是数字)常量。

Arduino编程语言内置函数

在本节中,我将为Arduino编程语言提供的内置函数提供参考。

程序生命周期

  • setup()在程序启动时,以及在Arduino关闭并重新启动时,都会调用一次此函数。
  • loop()在Arduino程序运行时会重复调用此函数。

处理I / O

以下功能有助于处理Arduino设备的输入和输出。

数字量I / O

  • digitalRead()从数字引脚读取值。接受引脚号作为参数,并返回HIGH或者LOW持续的。
  • digitalWrite()写一个HIGH或者LOW值到数字输出引脚。您输入密码,然后HIGH或者LOW作为参数。
  • pinMode()将引脚设置为输入或输出。您输入密码,然后输入INPUT或者OUTPUT值作为参数。
  • pulseIn()从中读取数字脉冲LOWHIGH然后到LOW还是HIGHLOWHIGH再次在别针上。程序将一直阻塞,直到检测到脉冲为止。您可以指定引脚号和要检测的脉冲类型(LHL或HLH)。您可以指定一个可选的超时时间以停止等待该脉冲。
  • pulseInLong()与...相同pulseIn(),但实现方式有所不同,并且如果关闭了中断,则无法使用它。通常关闭中断以获取更准确的结果。
  • shiftIn()从引脚一次一次读取一个字节的数据。
  • shiftOut()一次将一个字节的数据字节写入一个引脚。
  • tone()在引脚上发送方波,用于蜂鸣器/扬声器播放音调。您可以指定引脚和频率。它适用于数字和模拟引脚。
  • noTone()停止tone()在针上产生的波。

模拟量I / O

  • analogRead()从模拟引脚读取值。
  • analogReference()配置用于模拟输入中最高输入范围的值,默认为5V板为5V,3.3V板为3.3V。
  • analogWrite()将模拟值写入引脚
  • analogReadResolution()可让您更改默认的模拟位分辨率analogRead(),默认为10位。仅适用于特定设备(Arduino Due,Zero和MKR)
  • analogWriteResolution()可让您更改默认的模拟位分辨率analogWrite(),默认为10位。仅适用于特定设备(Arduino Due,Zero和MKR)

时间功能

  • delay()将程序暂停指定为参数的毫秒数
  • delayMicroseconds()将程序暂停指定为参数的微秒数
  • micros()自程序启动以来的微秒数。大约70分钟后由于溢出而重置
  • millis()自程序启动以来的毫秒数。大约50天后由于溢出而重置

数学函数

  • abs()数字的绝对值
  • constrain()将数字限制在一定范围内,查看用法
  • map()将数字从一个范围重新映射到另一个范围,查看用法
  • max()两个数的最大值
  • min()最少两个数
  • pow()升为幂的数的值
  • sq()数字的平方
  • sqrt()数字的平方根
  • cos()角度的余弦
  • sin()角度的正弦
  • tan()角的切线

注意:如果需要,还有更多内置数学函数,记录在这里

使用字母数字字符

  • isAlpha()检查字符是否为字母(字母)
  • isAlphaNumeric()检查字符是否为字母数字(字母或数字)
  • isAscii()检查字符是否为ASCII字符
  • isControl()检查一个字符是否是一个控制字符
  • isDigit()检查字符是否为数字
  • isGraph()检查char是否为可打印的ASCII字符并包含内容(例如,它不是空格)
  • isHexadecimalDigit()检查字符是否为十六进制数字(AF 0-9)
  • isLowerCase()检查字符是否为小写字母
  • isPrintable()检查字符是否为可打印的ASCII字符
  • isPunct()检查字符是否为标点符号(逗号,分号,感叹号等)
  • isSpace()检查字符是否为空格,换页\f, 新队\n,回车\r,水平标签\t或垂直标签\v
  • isUpperCase()检查字符是否为大写字母
  • isWhitespace()检查字符是空格字符还是水平制表符\t

随机数生成

  • random()产生一个伪随机数
  • randomSeed()使用任意初始编号初始化伪随机数生成器

在Arduino中,就像在大多数语言中一样,不可能获得真正的随机数,并且序列始终是相同的,因此您可以将其作为当前时间的种子,或者(对于Arduino)从模拟端口读取输入

使用位和字节

  • bit()计算一个位的值(0 = 1、1 = 2、2 = 4、3 = 8…)
  • bitClear()清除(设置为0)一个数字变量。接受一个数字,并且位数从右开始
  • bitRead()读一些数字。接受一个数字,并且位数从右开始
  • bitSet()设置为1的数字。接受一个数字,并且位数从右开始
  • bitWrite()向数字的特定位写入1或0接受一个数字,该位的数字从右开始以及要写入的值(0或1)
  • highByte()获取单词变量的高位(最左边)字节(具有2个字节)
  • lowByte()获取单词变量的低位(最右边)字节(具有2个字节)

中断

  • noInterrupts()禁用中断
  • interrupts()禁用后重新启用中断
  • attachInterrupt()允许数字输入引脚为中断。不同的板具有不同的允许的引脚,检查官方文档
  • detachInterrupt()禁用使用启用的中断attachInterrupt()

更多电子教程: