arduino编程从零开始 lilyapd 328 main board的SCL和SDA脚是分别哪个脚

当前位置:
>>>>>>正文
基于Arduino的小黄人玩具设计
刘明典、郝振祥、钱明成&
课程设计报告
第1章 作品简介
1.1作品内容
基于Arduino的小黄人玩具
1.2 制作目的:
1.运用在单片机课程学到的知识,锻炼动手能力;
2.学习之余,放松娱乐。
1.3 实现原理
我们在小黄人的眼睛和双手的位置分别装了三个红外传感器。当人手靠近传感器时,传感器的信号会发生变化。Arduino控制器接收到这种变化后,会控制对应的舵机转动到相应的角度,保持一段时间后恢复原位。我们总共有两个舵机,分别控制小黄人的向后倒和左右闪躲。同时,Arduino控制器通过MP3解码板驱动扬声器,播放小黄人笑声的wav音频。
1.4 总电路图
以下是总体的电路设计:
1.5 制作材料
电路控制部分
&Arduino Mega2560*1
&红外传感器*2
&超声波测距传感器*1
&MG995舵机*2
&4Ω3W扬声器*1
&MP3解码板*1
&导线、面包板、洞洞板*N
骨架与装饰材料
&矿泉水瓶*1
&铝合金板*N
&工具部分:
&锯条、螺丝刀、螺丝钉等常见工具
第2章 硬件设计
2.1主控模块Arduino:
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,收录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于Wiring)和Arduino开发环境(based onProcessing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
用Arduino制作作品或者进行产品开发的优势是很明显的。首先它跨平台,ArduinoIDE可以在Windows、Macintosh OSX、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发;它的开发简单清晰,Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 AVRGCC库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发;并且它具有开放性,Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码;最重要的是它的硬件开发也十分有优势,Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。
Arduino Mega2560也是采用USB接口的核心电路板,它最大的特点就是具有多达54路数字输入输出,特别适合需要大量IO接口的设计。Mega2560的处理器核心是ATmega2560,同时具有54路数字输入/输出口(其中16路可作为PWM输出),16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。
Arduino Mega2560也能兼容为Arduino UNO设计的扩展板。Arduino Mega2560已经发布到第三版,与前两版相比有以下新的特点:
在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板,改进了复位电路设计。USB接口芯片由ATmega16U2替代了ATmega8U2。
? &处理器 ATmega2560
? &工作电压 5V
? &输入电压(推荐) 7-12V
? &输入电压(范围) 6-20V
? &数字IO脚 54 (其中16路作为PWM输出)
? &模拟输入脚 16
? &IO脚直流电流 40 mA
? &3.3V脚直流电流 50 mA
? &Flash Memory 256 KB (ATmega328,其中8 KB 用于 bootloader)
? &SRAM 8 KB
? &EEPROM 4 KB
工作时钟 16 MHz
电路原理图
Arduino Mega2560可以通过3种方式供电,而且能自动选择供电方式:
? &1.外部直流电源通过电源插座供电;
? &2.电池连接电源连接器的GND和VIN引脚;
? &3.USB接口直接供电。
电源引脚说明
VIN---当外部直流电源接入电源插座时,可以通过VIN向外部供电;也可以通过此引脚向
Mega2560直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #V---通过稳压器或USB的5V电压,为UNO上的5V芯片供电。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.3V---通过稳压器产生的3.3V电压,最大驱动电流50mA。
GND---地脚。
ATmega2560包括了片上256KB Flash,其中8KB用于Bootloader。同时还有8KBSRAM和4KB EEPROM。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #路串口信号:串口0---0(RX)and 1(TX);串口1---19(RX)and 18(TX);串口2---17(RX)and 16(TX);串口3---15(RX)and 14(TX)。其中串口0与内ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #路外部中断:2(中断0),3(中断 1),18(中断 5),19(中断 4),20(中断 3),and 21(中断 2)。触发中断引脚,可设成上升沿、下降沿或同时触发。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #路脉冲宽度调制PWM(0--13):提供14路8位PWM输出。
SPI(53(SS),51(MOSI),50(MISO),52(SCK)):SPI通信接口。
LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,
反之输出为低时LED熄灭。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.16路模拟输入:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能TWI接口(20(SDA)和21(SCL)):支持通信接口(兼容I2C总线)。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.AREF:模拟输入信号的参考电压。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.Reset:信号为低时复位单片机芯片。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.串口:ATmega2560内置的4路UART可以与外部实现串口通信;ATmega16U2可以访问串口0实现USB上的虚拟串口。
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.TWI(兼容I2C)接口:
<span lang="EN-US" style="line-height: 150%;font-family: 宋体;background:color: #.SPI 接口:
Arduino Mega2560上的ATmega2560已经预置了bootloader程序,因此可以通过Arduino软件直接下载程序到Mega2560中。
可以直接通过Mega2560上ICSP header直接下载程序到ATmega2560。
ATmega16U2的Firmware(固件)也可以通过DFU工具升级。
Arduino Mega2560的最大尺寸为4 x 2.1 inches。
Arduino Mega2560上USB口附近有一个可重置的保险丝,对电路起到保护作用。当电流超过500mA是会断开USB连接。
Arduino Mega2560提供了自动复位设计,可以通过主机复位。这样通过Arduino软件下在程序到Mega2560中软件可以自动复位,不需要在复位按钮。在印制板上丝印&RESETEN&处可以使能和禁止该功能。
Arduino Mega2560的设计与Arduino USB接口标准版的设计完全兼容,因此用于Arduino UNO和之前系列的扩展板也可以用在Arduino Mega2560上。
2.2 E18-D80NK红外传感器
这是一种集发射与接收于一体的光电传感器。检测距离可以根据要求进行调节。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计件等众多场合。
红外反射式传感器可以发射红外线,并检测红外线是否被反弹回来。这个传感器因为内部已经集成了放大、滤波等电路,使用起来非常方便。传感器有3个引脚,分别是电源、地和信号。经过测量,当传感器前方有遮挡物时,信号线电压变低。
直接将信号线接到Arduino的数字端口上,判断这个数字端口的值是否为0,即可判断传感器前方是否有手靠近了。
电气特性:& & U:5VDC& & I:100mA& & Sn:3-80CM
直径:17MM传感器长度:45MM引线长度:45CM&
应用案例:
& & 1、生产线货物自动计数设备& & 2、多功能提醒器& & 3、走迷宫机器人
管脚定义:
红色正极黄色信号绿色/黑色负极
产品参数:
1、输出电流 DC/SCR/继电器 Control output:100mA/5V供电2、消耗电流 DC&25mA3、响应时间 &2ms4、指向角:≤15&,有效距离3-80CM可调5、检测物体:透明或不透明体6、工作环境温度:-25℃~+55℃7、标准检测物体:太阳光10000LX以下 白炽灯3000LX以下
2.3 MG995舵机
舵机收到一个用PWM波模拟的电压值,就会让驱动轴带动舵盘旋转到一个固定的角度。而在Arduino中,完全可以利用封装好了舵机的控制函数,命令舵机转到对应的角度即可。
下图中展示了一个舵机和一系列的舵盘。
产品型号 & &MG995 &
产品尺寸 & &40.7*19.7*42.9mm & &
产品重量 & &55g
工作扭矩 & &13KG/cm
反应转速 & &53-62R/M & &
使用温度 & &-30~+60&
死区设定 & &4微秒
插头类型 & &JR、FUTABA通用
转动角度最大180度
舵机类型模拟舵机
工作电流 & &100mA &
使用电压 & &3-7.2V
结构材质金属铜齿、空心杯电机、双滚珠轴承无负载
操作速度 & &0.17秒/60度(4.8V);0.13秒/60度(6.0V)
附件包含舵盘、线长 30CM、固定螺钉、减振胶套及铝套等附件(详见实拍图)
适用范围 & &1:10和1:8平跑车、越野车、卡车、大脚车、攀爬车、双足机器人、机械手、遥控船,适合50级-90级甲醇固定翼飞机以及26cc-50cc汽油固定翼飞机等模型。
连接方法:
这里使用两个舵机分别控制小黄人前后旋转和左右旋转。
结合第一步中的红外传感器,此时便已经可以实现如下功能:
当红外传感器检测到小黄人前方有手时,就命令前后舵机向后转动90度;当左方有手时,就命令左右舵机向右旋转90度;当右方有手时,就命令左右舵机向左旋转90度。
当然,控制逻辑还可以有更多花样。比如,当我使出“双峰贯耳”时,小黄人会前扑进行反击~
舵机在工作时会对电源电压产生一定的干扰,因此需要接电容滤波或者是单独供电。否则会影响红外传感器的正常工作。
2.4 扬声器
由于器材限制,我们采用了比较简单的音频播放方法。使用单片机控制继电器控制MP3解码板的电源,当电源接通时,喇叭播放小黄人声音。
型号: &50迷你音箱喇叭/50橡皮边喇叭
种类:电动式(动圈式) &
用途:扩音
外形:圆形
组成方式:单式
额定功率: &3(W)
额定阻抗: &4(Ω)
频率响应: &170(kHz)
指向性:全
灵敏度: & & & &100(dB/W)
性噪比: & & & &1(dB)
谐波失真: & 1(TMD%)
2.5 超声波测距模块
器件名称:HC-SR04超声波测距模块
主要技术参数:
1、使用电压:DC5V;
2、静态电流:小于2mA;
3、电平输出:高5V;
4、电平输出:底0V;
5、感应角度:不大于15度;
6、探测距离:2cm-450cm,高精度可达0.2cm
7、接线方式,VCC、trig(控制端)、echo(接收端)、GND。
工作原理:
1、采用IO触发测距,给至少10us的高电平信号;
2、模块自动发送8个40khz的方波,自动检测是否有信号返回;
3、有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。
超声波传感器主要利用多普勒原理,通过晶振向外发射超过人体能感知的高频超声波,一般典型的选用25~40kHz波,然后控制模块检测反射回来波的频率,如果区域内有物体运动,反射波频率就会有轻微的波动,即多普勒效应,以此来判断照明区域的物体移动,从而达到控制开关的目的。超声波的纵向振荡特性,可以在气体、液体及固体中传播且其传播速度不同;它还有折射和反射现象,在空气中传播其频率较低,衰减较快,而在固体、液体中则衰减较小,传播较远。超声波传感器正是利用超声波的这些特性。超声波传感器有敏感范围大,无视觉盲区,不受障碍物干扰等特点,这项技术已经在商业和安全领域被使用25年多了,已经被证明是检测小物体运动最有效的方法。&
&ULTD5N-350超声波测距模块,可提供3cm--3.5m的非接触式距离感测功能,该模块包括了超声波发射器、接收器与控制电路。其基本工作原理为给予此超声波测距模块一触发信号后发射超声波,当超声波投射到物体而反射回来时,模块输出一回响信号,以触发信号和回响信号间的时间差,来判定物体的距离。
应用领域:
飞行器测距、机器人避障、公共安防、停车场检测等。
2.6 MP3解码板:
MP3解码器;支持多种EQ音效模式;支持红外遥控控制;支持U盘、TF卡;支持断电记忆;
尺寸:66*20MM 面板 长85*高24*深22mm,
工作电压:锂电3.7-5V,或是稳压电源4.5-5V
工作电流:接一个喇叭时600-700MA;接两个4欧3W喇叭1.3-1.5A左右
1、工作电压锂电3.7-5V,或是稳压电源4.5-5V,电流(接一个喇叭时600-700MA;接两个喇叭1.3-1.5A左右。喇叭:4欧3W。电流不够会出现跳曲或遥控不灵等现象(若有此问题请检查您的电源);电压不能高于5V,否则会损坏 主芯片和功放IC及相关元件;
2、如是你会连接或是用锂电(3.7-4V的电源)供电者不要加该元件(IN4007),这样电压会降低0.7V左右,读U盘和SD卡会出现读不下去情况出现,可以直接剪除IN4007即可。
3、带功放款式直接接3至5瓦喇叭,电源3.7-5伏输入:
2.7 继电器模块
工作特点:
1、模块采用光耦隔离和松乐继电器控制,交流电压最大250V,交流电流最大10A,直流电压最大30V,直流电流最大10A;& &2、采用三极管驱动,驱动能力强;& &3、工作电压5V & & & & &4、设有固定螺栓孔,方便安装& &5、小板PCB尺寸:4.6cm* 2.8cm& &6、电源指示灯(绿色),1路继电器状态指示灯(红色)& &7、低电平吸合,高电平释放。
接口说明:
1、VCC 模块供电电压 5V
2、GND 模块地
3、1N1 继电器控制接口 接单片机IO口
第3章 机械外观设计
由于我们没有人是学机械或者设计的,不会画CAD图,无法使用高级的切割设备,只能采用手工加工铝合金板。首先引用一段对舵机用法的介绍,
&想在你的项目中用上舵机,就要满足两个条件:一是需要个能把舵机固定到基座上的支架,二是得有个能将驱动轴和物体连在一起的连接装置。支架一般舵机上就有,而且带有拧螺丝用的安装孔。如果你仅仅是测试的话,用点儿热熔胶或者双面泡沫胶带就能轻松的固定住舵机。
&怎样连接驱动轴呢,你会发现舵机都附带了一些有孔的小东西,这就是舵盘,它可以套在驱动轴,臂上打上了些小孔。你只要用连接棒或者线把物体连到孔上,就可以将舵机的旋转运动变成物体的直线运动了,当然了,选用不同的舵盘或固定孔就能产生不同的运动啦。
&图示的是几种不同的舵盘。前面4个白色的是舵机附带的舵盘,右边四个是用激光切割机切割塑料得到的DIY舵盘。最右边的2个是舵盘和支架的组合,如果你想实现两个舵机的组合运动,把这个舵盘的支架固定到另一个舵机的支架上就OK了。
3.2 机械设计:
我们用了两个舵机实现了两个自由度。整个设备从下往上依次是:
&大黄铜板A
&一个大木板A上竖直的固定了一个小铝合金板B,固定方式用的是一个直角的金属,名字未知……
&在小铝合金板B上挖了一个槽,将一个舵机卡到了里面,并用螺丝固定。
&在舵机的驱动转盘上固定一个小铝合金板C,这个木板会随着这个舵机的驱动转盘实现前后旋转。
&小铝合金板C上用螺丝固定了第二个舵机。
&第二个舵机的驱动转盘上固定铝合金条D,这个铝合金条D可以在驱动转盘的带动下,实现左右旋转。
&在铝合金条D上固定大可乐瓶,在可乐瓶的适当位置开洞,固定2个红外传感器和1个超声波传感器。
3.3 外观设计:
在可乐瓶外侧,用白纸包裹画上小黄人的外观,如下图所示:
第4章 软件设计
4.2设计思想
首先将超声波传感器安置在小黄人前方,超声波模块的echo端为输入端接3引脚,trig端为输出端接2引脚,左红外传感器接4引脚,右红外传感器接5引脚,继电器接8引脚,前后舵机接9引脚,左右舵机接10引脚,分别赋给前后舵机和左右舵机一个初始角度,使小黄人竖直站立。然后开始检测超声波返回的信号,若经过计算后发现超声波传感器前40cm内有障碍物时,则前后舵机改变角度,左右舵机不动,小黄人向后倾倒,同时打开继电器给音频板供电,使音频板播放小黄人的笑声,一段时间后小黄人再回到竖直位置并关闭继电器。若发现超声波传感器前40cm内无障碍时,再识别左红外传感器是否有信号输入。若左红外传感器有信号输入,再识别右红外传感器是否有信号输入。若左右红外传感器都有信号输入,则前后舵机改变角度,左右舵机不动,小黄人向前倾倒,并打开继电器放出笑声,一段时间后小黄人再回到竖直位置并关闭继电器。若左红外传感器有信号输入而右红外传感器无信号输入,则左右舵机改变角度,前后舵机不动,小黄人向右倾倒并打开继电器放出笑声,一段时间后小黄人再回到竖直位置并关闭继电器。若右红外传感器有信号输入而左红外传感器无信号输入,则左右舵机改变角度,前后舵机不动,小黄人向左倾倒并放出笑声,一段时间后小黄人再回到竖直位置并关闭继电器。在每次小黄人回到竖直位置后过一段时间,小黄人在重复进行上述检测与动作。
若3个传感器均无信号输入,则小黄人一直保持竖直位置,直到有一个传感器出现了信号输入。
4.3测试数据
超声波模块测试
通过观测以上数据,我们发现超声波模块及其不稳定,在多方检查后,我们没有找到原因。
更换新模块后的测试数据如下:
可见数据稳定,新模块是可用的。
红外模块测试
我们在未给舵机单独供电时,发现红外一直在输出信号,说明红外模块是在3-80cm内有障碍物时输出低电平。
4.2 源程序
#include&Servo.h&
Servo myservoF;
Servo myservoRL;
const int TrigPin = 2;
const int EchoPin = 3;
const int InfraredSensorLeft= 4;//Connect the signal pin to the digital pin 4
const intInfraredSensorRight = 5;
const int jdqPin = 8;
float getUltraDistance(){
&float cm = 0.0;
&digitalWrite(TrigPin,LOW); &
&delayMicroseconds(2);
&digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
&digitalWrite(TrigPin,LOW);
&cm = pulseIn(EchoPin,HIGH) / 58.0;
&cm = (int(cm *100.0)) / 100.0;
void setup()
&Serial.begin(9600);
Serial.println(&Start!&);
&pinMode(TrigPin,OUTPUT);
&pinMode(EchoPin,INPUT); &
pinMode(InfraredSensorLeft,INPUT);
pinMode(InfraredSensorRight,INPUT);
&pinMode( 12, OUTPUT);
&pinMode(jdqPin,OUTPUT);
&//digitalWrite( 12,HIGH );
&myservoF.attach(9);
&myservoRL.attach(10);
&myservoF.write( 88 );
&delay( 500 );
&myservoRL.write( 70);
&delay( 500 );
void servofCenterToBack(){
&for ( int i = 88;i&65; i -- ) {
& myservoF.write( i );
& &delay ( 5);
void servofBackToCenter(){
&for ( int i = 65;i&88; i ++ ) {
& myservoF.write( i );
& &delay ( 5);
void servofCenterToFront(){
&for ( int i =88;i&130; i ++ ) {
& myservoF.write( i );
& &delay ( 5);
void servofFrontToCenter(){
&for ( int i = 130;i&88; i -- ) {
& myservoF.write( i );
& &delay ( 5);
void servorlCenterToLeft(){
&for ( int i = 70;i&25; i -- ) {
& myservoRL.write( i );
& &delay ( 5);
void servorlCenterToRight(){
&for ( int i = 70;i&110; i ++ ) {
& myservoRL.write( i );
& &delay ( 5);
void servorlLeftToCenter(){
&for ( int i = 25;i&70; i ++ ) {
& myservoRL.write( i );
& &delay ( 5);
void servorlRightToCenter(){
&for ( int i = 110;i&70; i -- ) {
& myservoRL.write( i );
& &delay ( 5);
unsigned long preMillis = 0;
boolean bReadFlag =
unsigned int iActionSelected= 0;
unsigned int iReadCount = 0;
void loop()
&unsigned longcurrentMillis = millis();
&float fDistance =0.0;
&digitalWrite( 12,HIGH );
& &if (bReadFlag ){
& &if (currentMillis - preMillis & 10 ){
& & preMillis = currentM
& & fDistance = &getUltraDistance();
& & Serial.println(fDistance);
& & if ( fDistance & 40 && fDistance & 0 ){
& & & iActionSelected = 1;
& & & &iReadCount++;
& & & if ( iReadCount & 3 )
& & & & bReadFlag =
& & else if ( digitalRead(InfraredSensorLeft) == LOW &&digitalRead(InfraredSensorRight) == HIGH ){
& & & iActionSelected = 2;
& & & iReadCount ++;
& & & if ( iReadCount & 3 )
& & & & bReadFlag =
& & else if ( digitalRead(InfraredSensorRight) == LOW &&digitalRead(InfraredSensorLeft) == HIGH ){
& & & iActionSelected = 3;
& & & iReadCount ++;
& & & if ( iReadCount & 3 )
& & & & bReadFlag =
else if(digitalRead(InfraredSensorRight) == LOW &&digitalRead(InfraredSensorLeft) == LOW ){
& iActionSelected= 4;
& iReadCount ++;
& &if (iReadCount & 3 )
& & & & bReadFlag =
& & & digitalWrite(jdqPin,HIGH);
& & & iActionSelected = 0;
& & & iReadCount = 0;
& &switch (iActionSelected ){
& & case 1:
& & digitalWrite(jdqPin, LOW);
& & & servofCenterToFront();
& & & delay( 5000 );
& & & digitalWrite(jdqPin,HIGH);
& & & servofFrontToCenter();
& & & delay(1000);
& & case 2:
& & digitalWrite(jdqPin, LOW);
& & & servorlCenterToRight();
& & & delay( 5000 );
& & & &digitalWrite(jdqPin,HIGH);
& & & servorlRightToCenter();
& & & delay( 1000 );
& & &case 3:
& & & digitalWrite(jdqPin, LOW);
& & & &servorlCenterToLeft();
& & & &delay( 5000 );
& & & & digitalWrite(jdqPin,HIGH);
& & & &servorlLeftToCenter();
& & & &delay( 1000 );
& & case 4:
& & digitalWrite(jdqPin, LOW);
& & & servofCenterToBack();
& & & delay( 5000 );
& & & digitalWrite(jdqPin,HIGH);
& & & servofBackToCenter();
& & & delay(1000);
& & &default:
& iReadCount = 0;
& &bReadFlag=
山东大学物理学院创新实验室&&地址:山东省济南市历城区山大南路27号邮编:250199现在的位置:
Arduino Pro Mini
名&&&&&&称:
Arduino Pro Mini
概&&&&&&述:
编&&&&&&号:
厂&&&&&&商:
Arduino ProMini是Arduino Mini的半定制版本,所有外部引脚通孔没有焊接,与Mini版本管脚兼容。Arduino ProMini的处理器核心是ATmega168,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个晶体谐振,一个复位按钮。有两个版本:
工作在3.3V和8MHz时钟
工作在5V和16MHz时钟
处理器 ATmega168
工作电压 3.3V or 5V
输入电压 3.35V-12V or 5-12V
数字IO脚 14 (其中6路作为PWM输出)
模拟输入脚 6
IO脚直流电流 40 mA
Flash Memory 16 KB (其中2 KB 用于 bootloader)
SRAM 1 KB (ATmega328)
EEPROM 0.5 KB (ATmega328)
工作时钟 8 MHz or 16 MHz
Arduino ProMini可以通过FTDI线或者焊接6脚Header,也可以通过电源引脚接入外部直流电源。 电源引脚说明
RAW --- 外部直流电源接入引脚,raw代表接入的可以是电池或者其他直流电源。
VCC --- 通过稳压器产生的3.3V或者5V电压。
GND --- 地脚。
ATmega168包括了片上16KB Flash,其中2KB用于Bootloader。同时还有1KB SRAM和0.5KB EEPROM。
14路数字输入输出口:工作电压为3.3V或者5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能
串口信号RX(0号)、TX(1号): 提供TTL电压水平的串口接收信号,可以与6脚Header通孔相连。
外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。
SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能
TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
Reset:信号为低时复位单片机芯片。
串口:ATmega168内置的UART可以通过数字口0(RX)和1(TX)与外部实现串口通信
TWI(兼容I2C)接口:
SPI 接口:
Arduino ProMini上的ATmega168已经预置了bootloader程序,因此可以通过Arduino软件直接下载程序,参见[[]]。
可以直接通过焊接的ICSP header直接下载程序到ATmega168,参见[[]]。
Arduino UNO的最大尺寸为0.7 x 1.3 inches。
文档标题类型文件大小发布时间37.43 kB44.7 kB
【上篇】【下篇】
您可能还会对这些文章感兴趣!
查看来自外部的引用: 1
您必须才能发表留言!

我要回帖

更多关于 一个灯一个开关接线图 的文章

 

随机推荐