Arduino-uno-rev3基础知识

了解学习Arduino的基础知识,参考 https://store.arduino.cc/usa/arduino-uno-rev3 https://www.arduino.cc/en/Reference/HomePage
一、Arduino uno R3基础介绍
微控制器:ATmega328P;工作电压为5V;推荐输入电压7-12V,限制输入电压6-20V;数字输入输出针脚:14个,其中6个可以作为PWM(脉冲宽度调制的I/O),带~标号的数字端口可以作为PWM端口;模拟输入针脚:6个;I/O针脚输出直流:20 mA;3.3V针脚输出电流:50 mA;内置Flash 32 KB 其中 0.5 KB 用于bootloader,内置SRAM 2 KB,内置EEPROM 1 KB;时钟频率 16 MHz,LED_BUILTIN:(LED控制端口号) 13...
二、编码规则
arduino的编码方式类似C/C++语言,略微存在差别。
1、数据类型
void、boolean、char、unsigned char、byte、int、unsigned int、word、long、unsigned long、short、float、double、string - char array、String - object、array
说明(在arduino uno情况下):byte类同于unsigned char,int、short、word为16bits;long、float、double等为32bits;string和String的差别:string为char型数组,而String为类对象;强转类型的函数有char()、byte()、int()、word()、long()、float()。支持sizeof来计算数组变量或者某个类型占用的存储字节大小。
2、程序语法和运算方式
语法、注释、运算等方法均和C语言相同。
3、关于执行结构
在新建arduino工程时,默认生成两个函数setup、loop;其中setup函数每次加载程序只会执行一次,可以在其中做一些变量初始化等;而执行完setup函数后,程序跳转loop函数一直循环执行。
4、定义的常量
true/false:布尔类型0-false,1-true(非0都可作为true)。
HIGH/LOW:用于判断针脚输入输出。HIGH:输入情况下对于5v的板子,大于3.0v为HIGH,对于3.3v的板子,大于2.0v为HIGH;输出情况下,5v的板子输出为5v,3.3v的板子输出为3.3v。LOW:输入情况下,5v板子小于1.5v时为LOW,3.3v板子输入小于1.0v则为LOW;输出0为LOW。
INPUT/OUTPUT/PULLUP:配置针脚的模式。
LED_BULTIN:13,嵌入在Arduino板子模块,可控的数字针脚。
B/0/0x:分别用于表示二进制、八进制、十六进制数。
5、其他关键字
static、volatile、const、#define、#include用法与C类似;PROGMEM用于定义存储变量置于FLASH空间。
三、板子接口控制
1、数字接口控制
pinMode():pinMode(pin, mode),pin为针脚号,mode有INPUT\OUTPUT\PULLUP,模拟的针脚可以作为数值模式操作;digitalWrite():digitalWrite(pin, value),value为LOW/HIGH;digitalRead():digitalRead(pin)返回值为HIGH/LOW。
2、模拟接口控制
analogReference(type):设置参考电压(default:5/3.3);analogRead(pin):10bitsADC输出,输入电压0-5V,返回值为0-1023;analogWrite(pin, value):value为0-255,0-always off,255-always on,value为工作周期,产生PWM信号。正常PWM为490HZ,uno板pins5、6可以为980HZ。
3、中断处理
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode),将pin脚作为中断,ISR为中断服务程序,mode有LOW、CHANGE、RISING、FALLING、HIGH等模式,ISR服务程序没有输入和输出参数。detachInterrupt(interrupt)与detachInterrupt(digitalPinToInterrupt(pin))可以用于解除中断模式。interrupts()与noInterrupts()用于开关内部中断,影响一些功能执行,如在noInterrupts情况下,将无法与板子正常通信。
4、通信机制
Serial:Serial通信使用TX/RX的针脚,在使用Serial时针脚0、1即TX/RX将不能被使用。Serial.begin(speed[, config])用来打开串口通信模式,speed为波特率,config用来设置控制、数据比特,而end()可以关闭Serial通信,将0/1作为数字端口使用。print/println可用来打印信息,前后两者的主要区别在于最后的换行符。常用方法:if (Serial)用于判断串口是否可用; available()得到可读的字节数目;availableForWrite()返回缓存中可以使用的字节数目;find(target),target为字符数据直道得到target字符长度为止;findUntil(target, terminal)到达相应长度或是到terminal字符截至;flush()等待缓存数据传输完成;parseFloat()返回得到的浮点数;parseInt()返回得到的整数;peek()得到buffer下一个字节,但不从buffer中清除返回int;read()返回int得到buffer第一个字节值;readBytes(buffer, length),从buffer中得到length长度的字节;readBytesUntil(character, buffer, length)返回字符数组,character发现结束;readString()读取一串字符;readStringUntil(terminator)读取字符串,直道发现terminator字符;write()存在形式有Serial.write(val),Serial.write(str),Serial.write(buf, len)。Stream:用于字符或比特通信,通常被其他功能调用如Serial。

你可能感兴趣的:(开源知识)