Arduino 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(外部中断0,外部中断1),SPI通信10(ss),11(mosi),12(miso),13(sck),板上另外一处ICSP引脚。
led在13脚上, i2c或者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,i2c,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.
value.charat(5)//返回value字符串的第五个字符;value.length返回字符的长度;string不能转换浮点型变量,static静态变量
函数注释//或者/*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型。
spi通信
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模块e1 low,m1任意时,1号电机不使能;
e1high,m1low,1号电机正转,high,high,1号电机反转;
e1接pwm引脚,m1接low变速正转,m1接high变速反转。
vd逻辑电源6.5-12v,vs是电机驱动电源输入,建议4.8-35v。gnd是arduino、逻辑电源、电机驱动电源的公共地,当电机驱动电源低于12v,可以将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型,举例map(i,511,1023,0,255),摇杆x,y为模拟接口,z为一个按钮开关数字接口。lcd1602,2行16个英文字符,芯片工作电压,4.5-5.5v,5v时工作电流2.0ma,vss,vdd,rs,e,d0,d1,d2,d3,d4,d5,d6,d7,a,k。
ethernet shield上ethernet和sd卡公用spi占用10(ss),11(mosi),12(miso),13(sck),2(w5100外部中断),3(w5100片选),4(sd卡片选),同一时间只能启动ethernet和sd卡其中一个功能。当使用sd卡时,定义时SS需改为引脚4。使用w5100时,把引脚10和4分别置为低电平和高电平
舵机(又叫伺服电机)的工作原理:控制信号一般一个周期为20ms,该脉冲高电平的宽度控制着舵机的角度,0.5ms,0度;1ms,45度;15ms,90度;2ms,135度,2.5ms,180度。舵机有三根线,正极为红色,地一般是黑色或者棕色,信号线一般为黄色或者白色。delayMicroseconds(us)最多可实现16383us的延迟。当控制多个多个舵机时,不要用arduino直接供电,采用电源供电,但要将其与arduino共地。一般最中间那根红色线为vcc。
步进电机,步距角l=360/(转子齿数*运行拍数),l=360/(50*4)=1.8整步,l=360/(50*8)=0.9半步。
数码管,一位8段数码管,分为共阴极和共阳极,每个字段接一个220欧姆的电阻,共阳极数码管(dp-a)显示0-9,电平状况(C0,f9,A4,b0,99,92,82,f8,80,90,)a-f(88,83,c6,a1,86,8e。),共阴极数码管(dp-a)接线方式。显示0-9,电平状况(3f,06,5b,4f,66,6d,7d,07,7f,6f)a-f(77,7c,39,5e,79,71),以上没有启用小数点。
四位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(npn,ebc),9014,8050npn(平面朝向自己自左往右ebc)8550pnp(ebc),pnp的e极需要接电源正极,
硅管的压降为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兆欧,在强光条件下,它的阻值仅有几百至数千欧姆,光敏电阻接上下拉电阻选择10k。
多路开关,正面放置,默认13,46常闭,23,45常开,开关按下时,23连接,45连接,13,46断开
插头
双刀双掷继电器
默认高电平触发,9,12引脚电源正负极,接低电平时电机停止,接高电平时电源接通,如果将1与8,5与4连接,则低电平时,电流流向9,5上,(4,电机,1),8下,12;接高电平时9,5下,(1,电机,4),8上,12。即可实现电机的正反转。将改装的继电器与另一个双刀双掷继电器连接起来,可以实现电机,正反转,停止。
第一个继电器为低电平时,电机停转,第一个高,改变第二个的高低电平,就可实现正反转。
继电器实现电路内部结构
不发光二极管正负判断,1n4148黑色环头和1n540的白色环均为负极,发光二极管短引脚为负极,当不能根据引脚长度判断时,可以通过发光二极管头内部判断,大头一侧为负极。
2、3号继电器控制着两个继电器实现电机的正反转和停止,2号继电器不使能,1号电机停止,使能后1号高低即可改变转向,同理3号管理4号。+-接电机驱动电源。
土壤湿度传感器
水泵工作电压dc6-12v,需要用继电器来驱动
对射式光电开关,由发射端和接收端两部分组成。分为常开式和常闭式,本例为常闭式。
发射接收,红色vcc,黑色gnd,黄色vo,两者之间没有障碍物时,黄线输出高电平,有障碍物时输出低电平,(常开式输出与此相反)。
红外接近开关,当探头前方无障碍时输出高电平,有障碍时输出低电平。上面有一个电位器,可以用于调节障碍的检测距离。
微动开关
采用ethernet扩展板时,同一时间只能使用其中一个,4号引脚给sd卡使用,10号引脚也必须设置为output模式,否则sd库成员函数不能正常工作。
lcd1602,可以显示2*16个字符,每行16个字元,可以显示英文字母、希腊字母、标点符号和数字符号,包括讯息的卷动(往左和往右卷动),显示游标和led背光。引脚1vss接地,2,vdd接电源+5伏,3,vo或者vee,对比(0-5v)可接一个1k电阻或者利用可变电阻调整适当的对比。4,rs(寄存器选择)(1:d0-d7当做资料解释,0:d0-d7当做指令解释),5,r/w,(1:从lcd读取资料,0:写资料到lcd,因为很少从lcd这端读取资料,可将此脚位接地以节省i/o脚位)
。6,e,enable
7,d0,bit,0,lsb
8,d1,bit1
9,d2,bit2
10,d3,bit3
11,d4,bit4
12,d5,bit5
13,d6,bit6
14,d7,bit7,msb
15,a+,背光(串接330欧姆的电阻到电源)
16,k-,背光(gnd)。日立HD44780相容的lcd有4bit和8bit两种使用模式,使用4位bit模式,节省i/o脚位,通讯时只需用到4个高位元(d4-d7),d0-d3可以不用接,每个发送到lcd的资料会被分两次传送,先送4个高位元,然后才送低4位,