due有14个数字i/o,6个模拟i/o,一个复位开关,一个icsp下载口,7-12v电源供电
14个数字i/o,0-13
模拟0-5,有power、tx、rx、pwm
控制器 atmega168/atmega328
操作电压 5v推荐输入电压7-12v,极限输入电压6-20v,14个数字中有6个pwm输出,为3,5,6,9,10,11,i/o直流电流40ma,3.3v脚电流50ma,5v直流电源(说明书没有提供上限约为300ma),闪存16kb(atmega168)32k(atmega328),2k用于引导程序,sram1k(atmaga168),2k(atmega328),eeprom512b(atmega168),1k(atmega328),时钟频率16mhz,尺寸6*5.33cm
串行通信(0,1):rx,tx,外部中断2,3,spi通信10(ss),11(mosi),12(miso),13(sck)1
led13脚,twi通信a4(sda),a5(scl),另外有一个可复位的熔断器,usb超过500ma,它将自动断开。0,1为串口通信,rx,tx(0,1),2,3为触发中断引脚,0-13单个引脚提供最大电流40ma。3,5,6,9,10,11为6路pwm输出,10,11,12,13为spi通信10(ss),11(mosi),12(miso),13(sck),reset重启arduino,低电位有效,atmega16u2usb转串口的转化器,自动恢复保险丝(PTC),ICSP供atmega16u2使用,
mega有54个i/o(14个pwm),16个模拟i/o,4对串行数据通信口(uart),一个复位开关,支持usb和直流电源供电。处理器atmega2560,闪存256k,其中8k用于引导程序,sram8k,eeprom4k,时钟频率16mhz,0(rx0)1(tx0),19(rx1)18(tx1),17(rx2)16(tx2),15(rx3)14(tx3),外部中断:2外部中断0,3外部中断1,21外部中断2,20外部中断3,19外部中断4,18外部中断5。pwm0-13,spi通信:51(mosi),53(ss),50(miso),52(sck),板载led13,twi通信20(sda),21(scl)。arduino开发环境适宜avr-gcc和一些其他开源软件为基础,采用java编写的,主要安装驱动以及下载时选择正确的端口,和板子
ansi c标准规定的32个关键字
auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,
register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while.
函数注释//或者/*xxxxxxxxxxx*/
c语言预算符,算数运算符:%取模;关系运算:==,!=;逻辑运算符:||,&&,!;赋值运算符:+=,-=,*=,/=,%=,>>=(右移赋值),<<=(左移赋值),&=,|=,~=(非赋值),^=(异或赋值);条件运算符:?:;位运算符~,<<(位左移),>>(位右移),&,^(异或),|;求字节运算符sizeof。
if(表达式)
语句1
else if(表达式)
语句2
esle
语句3
switch(表达式){
case常量表达式1:
语句1
case常量表达式2:
语句2
default:
语句3
}
while(表达式) 语句
do
语句
while(表达式);
for(表达式1;表达式2;表达式3) 语句
最常见的for(循环变量赋初值;循环条件;循环变量增量)语句
用while解释
表达式1;while(表达式2){语句
表达式3;}
用do-while解释
表达式1;
do{语句
表达式3;}while(表达式2)
for(;;)与while(1)相当
void setup()和void loop()均为无返回值的函数,set up()主要用于初始化,设置引脚输入输出模式,初始化串口,只在上电或重启执行一次,loop()是一个死循环,读取引脚状态,设置引脚状态。
arduino基本函数
pinMode(pin,mode),pinMode(13,OUTPUT)
模拟引脚也可当做数字引脚使用a0-a5对应14-19,
digtalWrite(pin,value),digitalWrite(13,HIGH)
digitalRead(pin),读取引脚高低电平,返回值为int型
analogRead(pin)读取引脚模拟量电压值,读取一次花100us时间,返回值为int型,pin为a0-a5。
analogWrite(pin,value)通过pwm在引脚输出模拟量,arduino的pwm的频率大约为490hz。范围为0-255对应0-100%。
时间函数millis()获取机器运行的时间,单位ms,返回值为unsigned long,dealy(ms),delayMicroseconds(us),单位us。
数学库,min(x,y),max(x,y),abs(x)
串口通信,Seial.begin(9600),if(Serial.available()),Serial.available()返回int型,Serial.read()返回int型。
cs芯片选择,时钟sclk为两条控制线,数据线sdi和sdo,sdi为miso(主入从出),sdo为mosi(主出从入),控制信号线cs为ss,sclk为sck(串行时钟),spi允许主设备和多个从设备通信,sck提供时钟,上升沿发送,下降沿接收。在应用中为被选中的从设备的mosi信号线需要处于高阻状态,否则会影响主设备与选中设备间正常的通信。
arduino硬件平台
uno采用的是atmega8u2芯片进行usb到串行数据的转换。due采用的是ftdi usb-to-serial串行驱动芯片。avr单片机的优点:
引导程序能够引导芯片通过串口与计算机通信
Serial.print(value,type),Serial.print(0x55,BYTE),有BYTE,DEC,HEX,OCT
模拟i/o连接着avr单片机6个adc管脚,具有10位采样精度,13-260us的转换时间,0-5v的adc输入电压范围。
h桥l293d基本模块
q1与q4搭配,q2与q3搭配
DIRA,DIRB分别接高低电平实现电机正反转,ENA,ENB可通过PWM实现电机调速
l298n模块e1low,m1任意时,1号电机不使能,e1high,m1low,1号电机正转,high,high,1号电机反转,e1接pwm引脚,m1接low变速正转,m1接high变速反转。vd逻辑电源6.5-12v,vs是电机驱动电源输入,建议4.8-35v,当电机驱动电源低于12v,gnd是arduino、逻辑电源、电机驱动电源的公共地,可以将vd=vs的跳线帽短接,减少电源输入,l298n驱动电流可达2a,跳线帽需注意,如果vs的电压大于12v,一定要将跳线帽去掉,否则vd逻辑电压超过12v会烧坏驱动模块,不建议使用arduino上的5v电压作为l298n的逻辑电压。e1可接low,high,pwm,vd逻辑电压,vs驱动电压
摇杆:arduino采用10位adc,模拟量变化范围0-1023,在水平方向a1,越往右值越小,垂直方向a0,垂直越往上值越小,map函数实现大范围值转换为0-255,返回值为long型,i>511时,map(i,511,1023,0,255)数据等比映射。
摇杆x,y为模拟接口,z为一个按钮开关数字接口。
lcd1602,2行16个英文字符,芯片工作电压,4.5-5.5v,5v时工作电流2.0ma,
rs,e,d4,d5,d6,d7。
ethernet shield上ethernet和sd卡公用spi占用10(ss),11(mosi),12(miso),13(sck),2(w5100外部中断),3(w5100片选),4(sd卡片选),同一时间只能启动ethernet和sd卡一个功能。
舵机(又叫伺服电机)的工作原理:控制信号一般一个周期为20ms,该脉冲高电平的宽度控制着舵机的角度,0.5ms,0度;1ms,45度;15ms,90度;2ms,135度,2.5ms,180度。舵机有三根线,正极为红色,地一般是黑色或者棕色,信号线一般为黄色或者白色。delayMicroseconds(us)最多可实现16383us的延迟。当控制多个多个舵机时,不要用arduino直接供电,采用电源供电,但要将其与arduino共地。
步进电机,步距角l=360/(转子齿数*运行拍数),l=360/(50*4)=1.8整步,l=360/(50*8)=0.9半步,
一位8段数码管,分为共阴极和共阳极,每个字段接一个220欧姆的电阻,共阳极数码管(a-dp)显示0-9,电平状况(FC,60,DA,F2,66,B6,3E,E0,FE,E6),共阴极数码管(a-dp)显示0-9,电平状况(03,9F,25,0D,99,49,C1,1F,01,19),以上没有启用小数点。
四位8段数码管,
1,2,3,4为公共端(以共阳极为例)要点亮第4个数码管的小数点4接正极,dp接负极,一个字段接220欧姆,电流约为15ma,则一位8*15ma=120ma,5v上限为300ma可以支持,数码管为红光(5-2)/1k=3ma,3ma*8=24ma,4位时4*24ma=96ma,也可以支持,只是亮度会暗,四位时选用1k来点亮数码管,即a-dp全部接1k电阻,1,2,3,4直接接入arduino控制端口,为了保护arduino板子,可以通过三极管来实现完美,9013,9014,8050
硅管的压降为0.7v,锗管为0.2v,Ib=(5-0.7)/1k=4.3ma,用三极管后,1,2,3,4可接三极管e极,a-dp接220欧姆电阻,9013硅管,放大倍数64-202,Ic最大为500ma,
led的使用,色环读值发,功率,红led(2-2.2v),黄led(1.8-2.0v),绿led(3-3.2v),额定电压下电流均为15-20ma,用红led时分压电阻选择,红黄(5-2)/0.015=200欧姆,绿(5-3)/0.015=133欧姆,绿led电阻功率2*0.015=0.03,红黄电阻功率为3*0.015=0.045瓦特,因此选1/8或者1/4功率,色环电阻有碳膜电阻和金属膜电阻,金属膜的电阻精度较高,从环数上,四环或者五环,最后一环表示精度级别。
黑色0,棕色1,红色2,橙色3,黄色4,绿色5,蓝色6,紫色7,灰色8,白色9,
直接由5v接下拉电阻和微动开关,5v加上拉电阻和微动开关,上下拉电阻选择10k
使用红外接近开关等传感器时要判断传感器触发后的输出电平,
lm35为模拟传感器
当环境温度为0度时,lm35输出0v,温度每升高1度,输出电压增加10mv,温度为100度时,输出电压100*10mv=1000mv=1v,根据这个特点,val/1024*5v=某个电压值单位伏特,转换为毫伏,在除以10就可得到温度值,如41/1024*5*1000/10=20.02,
继电器触点负载能力,120(ac)*1a或者24v(dc)*1a,分为低电平和高电平触发,继电器使用时最好反接一个二极管,因为继电器线圈会产生感应电压,会对电路冲击,二极管采用1n4148,1n4007,1n4001,Ib=(5-0.7)/4.7K=0.9ma,
光敏电阻在黑暗条件下的电阻可达1-10兆欧,在强光条件下,它的阻值仅有几百至数千欧姆
l298n