前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Arduino 语言常用函数说明

Arduino 语言常用函数说明

作者头像
caoqi95
发布2019-03-28 11:12:37
2.1K0
发布2019-03-28 11:12:37
举报

Arduino 语言

Arduino 是由 C/C++ 混合编写而成。Arduino 语言也继承了 C/C++ 语言的语法。通常所说的 Arduino 语言,是指 Arduino 核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。

代码示例

Arduino 的基本程序由 setup()loop() 组成,这两个函数是必须的。可以发现 Arduino 不像 C/C++ 语言一样包含 main() 函数。但是它也可以有头文件和自定义函数等要素。

void setup()
{
  // 在这里加入你的setup代码,它只会运行一次:
}
 
void loop() 
{
  // 在这里加入你的loop代码,它会不断重复运行:
}
/*
 * State change detection: 检测按键按下的状态并累计次数
 */

// 定义端口
const int ledPin = 13;
const int buttonPin = 2;

// 设置变量
int currentButtonState = 0;
int lastButtonState = 0;
int count = 0;

void setup() {
  // 初始化端口
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
  // 设定串行通信的波特率
  Serial.begin(9600);
}

void loop() {
  // 读取按键端口数据
  currentButtonState = digitalRead(buttonPin);

  
  if (currentButtonState != lastButtonState){  // 检测按键状态是否与上一状态一样
    if (currentButtonState == HIGH){           // 若不一样,则判断当前按键状态是否为按下
      digitalWrite(ledPin, HIGH);
      count++;
      Serial.println("on");
      Serial.println("the Count of Puches: ");
      Serial.println(count);
      }
      else{
        digitalWrite(ledPin, LOW);
        Serial.println("off");
        }
    delay(100);
    }
  lastButtonState = currentButtonState;

}

时间函数 Time Functions

  • delay():
    • 描述:将程序暂停给定参数的时间量(以毫秒为单位)
    • 函数原型:delay(ms)
    • 参数:ms - 暂停的毫秒数
    • 返回值:无
  • millis():
    • 描述:返回自Arduino板开始运行当前程序以来的毫秒数。大约50天后,此数字将溢出(回到零)
    • 语法: time = millis()
    • 参数:无
    • 返回值:程序启动后的毫秒数(unsigned long 类型)

数字 I/O 函数 Digital I/O Functions

  • pinMode()
    • 描述:将指定的引脚配置为输入或者输出的模式
    • 函数原型:pinModel(pin,mode)
    • 参数:
      • pin:要设置其模式的引脚编号
      • mode:INPUT(输入模式),OUTPUT(输出模式),INPUT_PULLUP(上拉输入模式)
    • 返回值:无
  • digitalRead():
    • 描述:读取指定数字引脚的值
    • 函数原型:digitalRead(pin)
    • 参数:要读取的数字引脚的编号
    • 返回值:HIGH(1),LOW(0)
  • digitalWrite()
    • 描述:将数字 HIGH 或 LOW 的值写入数字引脚
    • 函数原型:digitalWrite(pin,value)
    • 参数:
      • pin:要设置其输出的引脚编号
      • value:HIGH(1),LOW(0)
    • 返回值:无

模拟 I/O 函数 Analog I/O Functions

  • analogWrite():
    • 描述:在指定引脚输出指定占空比的 PWM 方波
    • 函数原型:analogWrite(pin,value)
    • 参数:
      • pin:输出引脚
      • value:占空比,介于 0 - 255 之间
    • 返回值:无
  • analogRead():
    • 描述:读取指定引脚的模拟信号值
    • 函数原型:analogRead(pin)
    • 参数:
      • pin:要读取的模拟引脚的编号
    • 返回值:无

在 analogWrite() 和 analogRead() 函数内部,已经完成了引脚的初始化,因此不用在 Setup() 函数中进行初始化操作。

数学函数 Math Functions

  • map():
    • 描述:将数字从一个范围重新映射到另一个范围。
    • 函数原型:map(value, fromLow, fromHigh, toLow, toHigh)
    • 参数:
      • value:要映射的数
      • fromLow:当前值范围的下限
      • fromHigh:当前值范围的下限
      • toLow:目标值范围的下限
      • toHigh:目标值范围的上限
    • 返回值:映射后的值
/* Map an analog value to 8 bits (0 to 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}

注意:不会将值限制在该范围内,因为超出范围的值有时是有意义且有用的。如果需要对范围进行限制,则可以在此函数之前或之后使用 constrain() 函数

  • constrain():
    • 描述:将数字约束在一个范围内。
    • 函数原型:constrain(x, a, b)
    • 参数:
      • x:要约束的数字
      • a:范围的下限
      • b:范围的上限
    • 返回值:
      • 如果 x 在(a, b) 范围内:返回 x
      • 如果 x 小于 a:返回 a
      • 如果 x 大于 b:返回 b

通信串口 Serial 的函数

  • begin():
    • 描述:设置串行数据传输的数据速率,以每秒位数(波特)为单位。
    • 函数原型:Serial.begin(speed) / Serial.begin(speed, config)
    • 参数:
      • speed:比特每秒(波特) - long
      • config:设置数据,奇偶校验和停止位
    • 返回值:无
  • available():
    • 描述:获取可从串行端口读取的字节数(字符数)。
    • 函数原型: Serial.available()
    • 参数:无
    • 返回值:可读的字节数。
  • read():
    • 描述:读取传入的串行数据。
    • 函数原型:Serial.read()
    • 参数:无
    • 返回值:可用的传入串行数据的第一个字节(如果没有可用的数据,则为-1) - int
  • print():
    • 描述:在串行口以人们可以看懂的 ASSCII 码的形式打印数据。
    • 函数原型:Serial.print(val) / Serial.print(val, format)
    • 参数:
      • val:要打印的值。
      • format:可选值,选择打印出的参数的类型。如:BIN(binary, or base 2), OCT(octal, or base 8), DEC(decimal, or base 10), HEX(hexadecimal, or base 16) 。
    • 返回值:size_t:print() 返回写入的字节数,但读取该数字是可选的。
Serial.print(78, BIN) gives "1001110"

Serial.print(78, OCT) gives "116"

Serial.print(78, DEC) gives "78"

Serial.print(78, HEX) gives "4E"

Serial.print(1.23456, 0) gives "1"

Serial.print(1.23456, 2) gives "1.23"

Serial.print(1.23456, 4) gives "1.2346"
  • println()
    • 描述:将数据作为人类可读的ASCII文本打印到串行端口,后跟回车符(ASCII 13或'\ r')和换行符(ASCII 10或'\ n')
    • 函数原型:Serial.println(val) / Serial.println(val, format)
    • 参数:同 print()
    • 返回值:size_t:print() 返回写入的字节数,但读取该数字是可选的。
  • parseInt()
    • 描述:查找传入串行流中的下一个有效整数。
    • 函数原型:Serial.parseInt() / Serial.parseInt(char skipChar)
    • 参数:
      • skipChar:用于跳过搜索中指定的字符。例如,用于跳过数千个分频器。
    • 返回值:long:下一个有效整数
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Arduino 语言
  • 代码示例
  • 时间函数 Time Functions
  • 数字 I/O 函数 Digital I/O Functions
  • 模拟 I/O 函数 Analog I/O Functions
  • 数学函数 Math Functions
  • 通信串口 Serial 的函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档