Arduino 基础

Arduino 基础

    • 基础函数
      • 数字I/O
      • 模拟I/O
      • 高级I/O
      • 中断
        • 设置中断函数
        • 开关中断
      • 串口通讯
      • 扩展库

基础函数

数字I/O

pinMode(pin,mode); //设置引脚输出状态
   pinMode函数用于配置引脚为输入或输出模式,该函数是一个无返回值函数,函数有两个参数 pin 和 mode,pin参数表示所要配置的引脚,mode 参数表示设置的模式——INPUT(输入模式),OUTPUT(输出模式)和INPUT_PULLUP(输入模式,且引脚点位拉高);

digitalWrite(pin,value); //设置引脚的输出数据
  digitalWrite函数的作用是设置引脚输出引脚引脚的电平为高电平或地电平。该函数是一个无返回值函数,函数有两个参数pin和value,pin参数表示所要配置的引脚,value参数表示输出电压——HIGH(高点平)和LOW(第电平)。

int digitalRead(pin); //引脚数据读取

digitalRead函数用在函数为输入情况,可以获取引脚电压的情况——HIGH(高电平)或LOW(低电平),参数 pin参数表示要获取电压值的引脚,该函数返回值为 int 类型,表示引脚的电压情况。

模拟I/O

analogRead(pin); //读取引脚的电压值
  analogRead函数用于读取引脚的模拟量电压值,每一次读取需要消耗的时间为 100us。参数 pin参数表示要获取模拟量电压值的引脚,该函数返回值为 int 类型,表示模拟量电压值,范围在 0~1023。

analogWrite(pin,value); //设置引脚输出模拟量(PWM)
  通过指定引脚输出模拟量(PWM),可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。
  analogWrite()输出结束后,该引脚将产生一个稳定的特殊PWM波形,直到下次调用 analogWrite()(或在同一引脚使用digitalRead()或 digitalWrite())。
  PWM信号的频率大约是490Hz。
  在大多 Arduino板(ATmega168或ATmega328)上,只有引脚3,5,6,9,10和11可以实现该功能。AduinoMega上,引脚2~13可以实现该功能。Arduino旧版本的板子 (ATmega8)只有9,10,11可以使用 analogWrite()。
  在使用 analogWrite()前,不需要使用 pinMode()来设定引脚。analogWrite函数与模拟引脚、analogRead函数没有直接关系。

analogReference(type); //设置模拟参考电压
  analogReference函数的作用是配置引脚的参考电压。在嵌入式应用中引脚获取模拟电压值之后,将根据参考电压将模拟值转换到0~1023。该函数为无返回值函数,参考为   mode 类型,有 3 种类型(DEFAULT/INTERNAL/EXTERNAL),具体含义如下所表示。
  NEFAULT:预设置,参考电压5V
  INTERNAL:低电压模式,使用偏内基准电压源。
  INTERNAL1V1:1V的内基准电压源(只能在 ArduinoMega使用)
  INTERNAL2V56:56V的内基准电压源(只能在 ArduinoMega使用)
  EXTERNAL:扩展模式,通过AREF引脚获取参考电压
  实际电压 = (analogRead(pin)*基准电压)/1024;

高级I/O

shiftOut(dataPin, clockPin, bitOrder, val); //将一个数据以此移出
  这个函数的作用是将一个数据的一个字符组中的字符组中的字符以次移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据引脚写入每一个字符,之后时钟引脚被拉高或拉低,指示刚才的数据有效。
  注意:如果链接的设备时钟类型为上升沿,就要确定在调用 shiftOut()前时钟引脚为低电平,如调用 digitalWrite(clockPin,LOW)。
这是一个软件实现的功能。
  Arduino提供了一个硬件实现的ISP函数库,它速度更快,但只在特定引脚才会有效。
  dataPin:数据输出引脚,数据的每一个字符将逐次输出。引脚模式需要设置成输出。
  clockPin:时钟输出引脚,为数据输出提供时钟,引脚模式需要设置成输出。
  bitOrder:数据位移顺序选择字符,该参数为byte类型,有两种类型可选择,分别是高位先入 MSBFIRST 和低位先入 LSBFIRST
  val:所有输出的数据
  shiftOut函数能够将数据通过串行的方式在引脚上输出,相当于一般意义上的同步串行通信,这是控制器与控制器,控制器与传感器之间常用的一种通信方式。

pulseIn(pin, state, timeout); //读取引脚上的脉冲时长

pin:读取脉冲的引脚编号
  state:读取引脚的脉冲的电平状态
  timeout:最大的读取时长(已um为单位)

中断

##中断

设置中断函数

attachInterrupt(interrupt, function, mode); //中断设置函数
  attachInterrupt函数用于设置外部中断,函数有3个参数:interrupt、function、mode分别代表中断源,中断处理函数,触发模式。参数选项可选值0或1,在 Arduino中,一般对应2号和3号引脚;参数中断处理函数用来指定中段的处理函数,参数值为函数指针,
  触发模式有4种:
    LOW(低点平触发)、
    CHANGE(变化时触发)、
    RISING(低点平转为高点平)、
    FALLING(高点平转为低点平触发)。
  注意:
  在中断函数中 delay函数不能使用。
  在使用 millis函数始终返回进入中断前的值。
  读取串行数据的话,可能会丢失。
  中断函数中使用的变量需要定义为 volatile 类型。
  detachInterrupt(interrupt); //取消中断
  interrupt为所要取消的中断源。

开关中断

interrupts(); //从新启用noInterrupts关闭的中断
noInterrupts(); //关闭已经开启的中断

串口通讯

Serial.begin(speed); //设置串口的通信速率
  speed:int 整数,用来设定传输速率,通常是这几个数:300,600,1200,2400,4800,9600,14400,19200,28800,18400,57600或115200
  返回值:无

Serial.available(); //获取前串口缓冲池的数据量。串口的缓存区默认只有64字节,但大小是可以改变的,详情见:http://www.cnblogs.com/jikexianfeng/p/6250564.html

Serial.read(); //用来读取数据,每次只能读取一个字符。

Serial.available函数和 Serial.read函数通常是在一起使用,Serial.available函数是用来判断是否有数据送进来,我们接着用 Serial.read函数用来读取数据。

Serial.flush(); //清空缓冲区数据,Serial.flush()函数的功能在arduino1.0之前和之后版本是不一样的。之前版本是用来清除已经进入缓冲区的输入的串口数据,1.0版之后,用来等待要发送的串口数据发送完毕。详情:http://www.cnblogs.com/jikexianfeng/p/6250638.html

Serial.print(data); //串口输出

Serial.println(data); //串口输出(比print的尾部多一个换行符。)

扩展库

如果要使用一些已有的库, 可以选择菜单"Sketch->Import Library", 然后选择 相应的库. Sketch工具会自己在代码的开头包含库的头文件(#include).
在引入库之后, 程序的体积也将会增大(因为包含了库的代码). 对于不是必要的库, 直接删除对应的#include语句就可以了.
官方扩展库

以下是Arduino官方提供的扩展库, 被默认包含在开发工具中.
EEPROM - 读写EEPROM存储区.
Ethernet - 以太网支持.
Firmata - 基于串口的通讯协议.
LiquidCrystal - LCD液晶显示.
Servo - 伺服电机.
SoftwareSerial - 软件实现的串口, 可以选择任意引脚.
Stepper - 步进电机.
Wire - I2C协议支持.
Matrix - LED显示阵列控制.
Sprite - LED显示阵列中子块控制.
第三方扩展库

这里只包含了Roboduino扩展板的相关库, 其他的库信息请访问: Arduino在线文档 online~.
Roboduino扩展板:
RoboduinoMotor - Roboduino电机扩展板驱动.
如果需要设计自己的库, 请参考"arduino\hardware\libraries"目录中相关库的代码.

你可能感兴趣的:(Arduino,arduino)