ROS之机器人ardunio设计

8.2.2 arduino 基本语法概述

1.程序结构

一个 Arduino 程序分为两大部分: setup() 与 loop() 函数。

  • void setup():在这个函数里初始化Arduino的程序,使主循环程序在开始之前设置好相关参数,初始化变量、设置针脚的输出\输入类型、设置波特率...。该函数只会在上电或重启时执行一次。

  • void loop():这是Arduino的主函数。这套程序会一直重复执行,直到电源被断开。

2.常量

在 Arduino 中封装了一些常用常量,比如:

  • HIGH | LOW(引脚电压定义)

  • INPUT|OUTPUT(数字引脚(Digital pins)定义)

  • true | false(逻辑层定义)

3.通信_Serial

Serial用于Arduino控制板和一台计算机或其他设备之间的通信。您可以使用Arduino IDE内置的串口监视器与Arduino板通信。点击工具栏上的串口监视器按钮,调用begin()函数(选择相同的波特率)。

  • Serial.begin() 初始化串口波特率

    描述:将串行数据传输速率设置为位/秒(波特)。与计算机进行通信时,可以使用这些波特率:300,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200。当然,您也可以指定其他波特率 - 例如,引脚0和1和一个元件进行通信,它需要一个特定的波特率。

    语法:Serial.begin(speed)

    参数:speed: 位/秒 (波特) - long

    返回:

  • Serial.print() 从串口打印输出数据

    需求:

    以人们可读的ASCII文本形式打印数据到串口输出。此命令可以采取多种形式。每个数字的打印输出使用的是ASCII字符。浮点型同样打印输出的是ASCII字符,保留到小数点后两位。Bytes型则打印输出单个字符。字符和字符串原样打印输出。Serial.print()打印输出数据不换行,Serial.println()打印输出数据自动换行处理。

    语法:Serial.print(val)

    参数

    val:打印输出的值 - 任何数据类型

    返回:字节 print()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的

  • Serial.println() 打印输出数据自动换行处理。参考 Serial.print();

  • Serial.available()

    描述:获取从串口读取有效的字节数(字符)。这是已经传输到,并存储在串行接收缓冲区(能够存储64个字节)的数据。 available()继承了 Stream类。

    语法:Serial.available()

    参数:

    返回:可读取的字节数

  • Serial.read()

    描述:读取传入的串口的数据。read() 继承自 Stream 类。

    语法:serial.read()

    参数:

    返回:传入的串口数据的第一个字节(或-1,如果没有可用的数据)

4.函数_数字IO

  • pinMode()

    描述:将指定的引脚配置成输出或输入。

    语法:pinMode(pin, mode)

    参数

    pin:要设置模式的引脚

    mode:INPUT或OUTPUT

    返回:

  • digitalWrite()

    描述:给一个数字引脚写入HIGH或者LOW。

    语法:digitalWrite(pin, value)

    参数

    pin: 引脚编号(如1,5,10,A0,A3)

    value: HIGH or LOW

    返回:

  • digitalRead()

    描述:读取指定引脚的值,HIGH或LOW。

    语法:digitalRead(PIN)

    参数

    pin:你想读取的引脚号(int)

    返回:HIGH 或 LOW

    注意:如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)

5.函数_模拟IO

  • analogWrite() PWM

    描述:从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。

    在大多数arduino板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能。在aduino Mega上,引脚2到13可以实现该功能。老的Arduino板(ATmega8)的只有引脚9、10、11可以使用analogWrite()。在使用analogWrite()前,你不需要调用pinMode()来设置引脚为输出引脚。

    语法:analogWrite(pin,value)

    参数

    pin:用于输入数值的引脚。

    value:占空比:0(完全关闭)到255(完全打开)之间。

    返回:

6.函数_时间

  • delay()

    描述:使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)

    语法:delay(ms)

    参数

    ms:暂停的毫秒数(unsigned long)

    返回:

  • millis()

    描述:返回Arduino开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

    参数:

    返回:返回从运行当前程序开始的毫秒数(无符号长整数)。

7.函数_中断

  • attachInterrupt()

    描述:当发生外部中断时,调用一个指定函数。当中断发生时,该函数会取代正在执行的程序。大多数的Arduino板有两个外部中断:0(数字引脚2)和1(数字引脚3)。

    arduino Mege还有其它有四个外部中断:数字2(引脚21),3(引脚20),4(引脚19),5(引脚18)。

    语法:attachInterrupt(interrupt, function, mode)

    interrupt:中断引脚数

    function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。

    mode:定义何时发生中断以下四个contstants预定有效值:

    • LOW 当引脚为低电平时,触发中断

    • CHANGE 当引脚电平发生改变时,触发中断

    • RISING 当引脚由低电平变为高电平时,触发中断

    • FALLING 当引脚由高电平变为低电平时,触发中断.

    返回:

    注意事项:当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。

  • noInterrupts()(禁止中断)

    描述:禁止中断(重新使能中断interrupts())。中断允许在后台运行一些重要任务,默认使能中断。禁止中断时部分函数会无法工作,通信中接收到的信息也可能会丢失。

    中断会稍影响计时代码,在某些特定的代码中也会失效。

    参数:

    返回:

  • interrupts()(中断)

    描述:重新启用中断(使用noInterrupts()命令后将被禁用)。中断允许一些重要任务在后台运行,默认状态是启用的。禁用中断后一些函数可能无法工作,并传入信息可能会被忽略。中断会稍微打乱代码的时间,但是在关键部分可以禁用中断。

    参数:

    返回:

Arduino 的API还有很多,但是受于篇幅限制,当前只是简单介绍了和本教程相关的一些API实现

本文章为个人学习笔记,所有资源均来自B站ROS教程,如有侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值