ARDUINO是什么?Arduino硬件介绍Arduino编程环境介绍ARDUINO的安装ArduinoIDE的安装USB驱动的安装4ARDUINO程序结构:SETUP()上电后setup()函数执行一次5ARDUINO程序结构:LOOP()loop()函数一直循环运行6ARDUINO数字输入输出ARDUINO程序下载HelloWorld程序动手HelloWorld:点亮一个LED灯ARDUINO与电子积木什么是电子积木电子积木如何与Arduino连接传感器扩展板连接线数字型电子积木通用接口模块小按钮模块大按钮模块磁力开关触摸传感器倾斜传感器人体运动红外热释传感器反射型红外开关50CM~100CM反射型红外开关10CM反射型红外开关2CM对射型红外开关8米继电器模块动手通过按钮模拟来控制LED灯的亮灭面包板使用方法介绍动手用面包板完成LED模块的电路连接LED基本电路电阻LED电源(正/负)LED控制代码动手使用Arduino和传感器扩展板使用Arduino的9,10,11三个引脚使用三个LED和1K的电阻通过程序进行控制讨论彩色LED红/绿/蓝三原色根据公共端的不同有共阳/共阴两种动手更换RGBLED用Arduino程序混色讨论模拟信号模拟信号的值可以连续变化9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。光照强度、温度、湿度等也都是模拟信号ARDUINO中的模拟输出analogWrite(pin,value)pin为Arduino上的PWM引脚3,5,6,9,10,11value取值0-255PWM实现模拟信号的数字化方法动手Arduino控制LED淡入淡出效果动手实现全彩的混色模拟输入通常基于分压原理电位器电子积木300度旋转角度传感器ARDUINO中的模拟输入analogRead(pin)pin:模拟输入引脚A0,A1,A2,A3,A4,A5返回值:0-1024(10位精度)动手通过读取电位器的值来控制LED灯的亮度300度旋转角度传感器多圈旋转角度传感器60行程滑动电位器推子游戏杆控制杆JOYSTICK模拟温度传感器光线传感器声音传感器SHARP红外距离传感器30cm,80cm,150cm,5.5m三轴加速度传感器FLEXIFORCE压力传感器1lb,25lb,100lbFSR系列压力传感器压力1-10kG尺寸和外形不同弯曲传感器单向,双向拉伸传感器4inch,6inch动手实验各种模拟传感器对RGBLED进行控制分享串口通信串口通信(SerialCommunication)是Arduino和计算机间按位进行数据传输的一种最基本的方式。使用3根线完成地线,GND发送,Tx接收,Rx主要参数波特率:通信速度,表示每秒钟传送的位(bit)的个数数据位停止位奇偶校验位ARDUINO串口USB转串口PC端:串口Arduino端:USB串口引脚RX:Pin0TX:Pin1串口数目ArduinoMEGA和Arduino2560:4个其余:1个串口初始化函数Serial.begin(speed)speed:300,1200,2400,4800,9600,14400,19200,28800,38400,57600,115200通常在setup()函数里调用ARDUINO串口输出将数据从Arduino传输到PCTX串口转USBPC端软件串口监视软件ArduinoIDE自带串口监视软件也可以用其它软件进行接收:Flash,Processing,Director,vvvv等串口输出函数Serial.print(val),Serial.println(val)输出ASCII码(后者多一个回车换行)Serial.print(val,format),Serial.println(val,format)按指定格式输出(后者多一个回车换行)SERIAL.PRINT(VAL)实例Serial.print(78)输出78Serial.print(1.23456)输出1.23Serial.print(byte(78))输出“N”(N的ASCII码值为78))Serial.print('N')输出NSerial.print(Helloworld.)输出Helloworld.SERIAL.PRINT(VAL,FORMAT)实例Serial.print(78,BYTE)输出NSerial.print(78,BIN)输出1001110Serial.print(78,OCT)输出116Serial.print(78,DEC)输出78Serial.print(78,HEX)输出4ESerial.print(1.23456,0)输出1Serial.print(1.23456,2)输出1.23Serial.print(1.23456,4)输出1.2346动手动手尝试输出更多格式的数据到计算机Serial.print(78)Serial.print(1.23456)Serial.print(byte(78))Serial.print('N')Serial.print(Helloworld.)Serial.print(78,BYTE)Serial.print(78,BIN)Serial.print(78,DEC)Serial.print(78,HEX)Serial.print(1.23456,2)串口液晶模块波特率9600命令格式所有对该液晶屏进行控制的串口命令都以字符”$”开始,以回车换行”\r\n”结束,两者之间是相应的命令和参数,不同的命令具有不同的参数。操作命令光标移动:GO空格行空格列行和列均从1开始GO11在当前光标位置上显示字符串PRINT空格字符串PRINTHelloArduino清屏:CLEAR将光标移回到屏幕左上角的初始位置:HOME设置光标效果:CURSOR空格显示空格闪烁第一个参数为是否显示光标(1和0)第二个参数为是否闪烁(1和0)CURSOR11一个完整命令的例子Serial.print($PRINTFlamingoEDA\r\n);Serial.println($PRINTFlamingoEDA);动手要求:清屏后在屏幕上的第二行第二列开始显示字符串ArduinoClub提示在loop的最后加delay防止闪烁在下载代码的时候不能接显示屏ARDUINO串口输入串口队列(Buffer)PC和Arduino间的缓冲区串口输入函数Serial.available()返回值:当前可读的数据数目Serial.read()如果串口没有数据可读,返回-1如果串口有数据可读,返回第一个字符,并从串口队列中取出Serial.peek()如果串口没有数据可读,返回-1如果串口有数据可读,返回第一个字符,但不从串口队列取出,因此下次还能读到Serial.flush()清空串口队列动手作业从串口输入以$开始,以回车换行(\r\n)的命令,对其进行解析,控制指定数字I/O引脚上的LED,第一个参数为引脚号,第二个参数为亮灭$D21\r\n$D30\r\n控制指定PWM端口上的LED亮度第一个参数为引脚号,第二个参数为亮度值$P6128\r\n基于串口的电子积木(一)串行液晶显示屏字符型1602LCDUSB转串口适配器RS485串口模块MAX232串口模块无线数据传输模块APC220蓝牙串口模块基于串口的电子积木(二)串口RFID模块10cm串口RFID模块6cmXBeeUSB适配器直流电机将电能转换为机械能的一种装置两个电源接头在适当的电压下给予足够的电流时将连续旋转,旋转方向由电流方向决定普通直流电机转速高力矩小,适用于对力矩要求小的场合直流减速电机直流减速电机(齿轮减速电机)是在普通直流电机的基础上,加上配套齿轮减速箱。齿轮减速箱可以提供较低的转速和较大的力矩,不同的减速比可以提供不同的转速和力矩常用参数工作电压(额定电压)驱动电机推荐使用的电压高于或者低于工作电压时电机也能工作实际电压额定电压,输出功率变小实际电压额定电压,会影响电机的寿命工作电流电机工作电流越大,输出功率越大空载运行时,电机的电流最小(空载电流)负载增大到使电机停止转动时(堵转电流)转矩电机的转动力转速每分钟旋转的圈数(转/分,RPM)注意!电机属于大电流设备,无法用Arduino引脚直接控制区别于LED电机电压高于Arduino的工作电压,注意隔离和接线出错可能导致Arduino烧毁电机在不通电的情况下旋转将产生逆电流(逆电压)发电机的工作原理逆电流的方向与电机工作电流的方向相反逆电流会造成电子设备的损坏动手观察逆电压——手工发电机基本控制电路用三极管或者MOS管驱动电机动手用Arduino控制电机的转动代码与LED灯控制代码相同电机速度控制复习PWM高速地开关三极管来实现对电机的控制占空比(打开时间:关闭时间)决定了输出给电机的能量份额Arduino的analogWrite函数用来产生PWM信号动手用Arduino控制电机转动的速度如何让速度变化更容易观察到?H桥式驱动电路4个三极管控制一个直流电机只让对角线上的一对三极管导通否则会短路,烧坏三极管能同时控制速度和方向电机驱动芯片L293D包含两个H桥式驱动电路,可以用来驱动两个直流电机电机使能引脚方向A方向B电机电源Arduino5V电机电源和Arduino需要共地!ARDUINO控制L293D速度控制使用Arduino模拟输出引脚将产生的PWM信号连接到L293D的使能引脚方向控制使用Arduino的数字输出引脚将产生的数字信号连接到L293D的A、B两个方向引脚正转:A为高,B为低反转:A为低,B为高制动:A、B同时为高或者低动手用L293D控制电机ARDUINO电机驱动扩展板基于L298N,工作原理与L293D一样提供更大工作电流,可以驱动大的直线电机逆电压消除电路步进电机一种可以精确控制的交流电机由驱动脉冲控制,每个脉冲让电机前进一个固定的角度(步进角)电机速度由单位时间内脉冲的个数决定(脉冲频率)功率小,负载能力低,控制相对复杂双极性步进电机每个线圈都可以两个方向通电四根引线,每个线圈两条使用数字万用表确定线圈分组某两根引线之间能够测量到阻值就属于一组双极性步进电机的步距通常是1.8°转一圈需要200步工作原理步进电机驱动器需要不断改变线圈中电流的方向通过H桥式驱动电路完成步进电机驱动模块EasyDriver方向步进脉冲地电机电源地线圈A线圈B电机电源和Arduino需要共地!ARDUINO控制EASYDRIVER方向控制使用Arduino的数字输出引脚速度控制使用Arduino的数字输出引脚产生脉冲信号动手用EasyDriver驱动双极性步进电机升降速曲线步进电机在拖动负载高速移动一定距离并精确定位时一般来说都应包括五个阶段启动加速高速运行(匀速)减速停止不同阶段的脉冲频率应不同舵机舵机也叫伺服电机(Servo),工作电压一般4.6–7.2V由直流电机、减速齿轮组、传感器和控制电路组成主要应用在定位控制上舵机接口标准三线接口电源线地线控制线控制信号舵机的控制信号也是一种PWM信号脉冲周期20毫秒脉冲高电平持续1毫秒(1000微秒)到2毫秒(2000微秒)用来控制的脉冲信号必须持续产生,否则很难稳定注意!舵机对控制脉冲高电平的宽度非常敏感抖动:控制信号每个脉冲的高电平宽度不稳定两个控制脉冲的间隔时间不太敏感只要在可以接受的范围内都可以(14ms到20ms)只有机械约束,没有电路约束控制脉冲宽度大于920us或者2120us,对电机寿命会有影响驱动电机到达物理上不可能到达的位置千万不能接反电源大部分舵机都可能会烧毁通过实验来找出电机的运动范围大部分舵机的运动区间都在150度左右