Arduino UNO的原理图:https://www.arduino.cc/en/Main/ArduinoBoardUno
原理图PDF:https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。UNO已经发布到第三版,与前两版相比有以下新的特点:
在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。
改进了复位电路设计
USB接口芯片由ATmega16U2替代了ATmega8U2
概要
处理器 ATmega328
工作电压 5V
输入电压(推荐) 7-12V
输入电压(范围) 6-20V
数字IO脚 14 (其中6路作为PWM输出)
模拟输入脚 6
IO脚直流电流 40 mA
3.3V脚直流电流 50 mA
Flash Memory 32 KB (ATmega328,其中0.5 KB 用于 bootloader)
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
工作时钟 16 MHz
电路图和PCB
所有的参考设计是基于Atmega8,168,or 328,他们的管脚是兼容的
电路图 http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
硬件设计文件(Eagle文件) http://arduino.cc/en/uploads/Main/arduino_Uno_Rev3-02-TH.zip
电源
Arduino UNO可以通过3种方式供电,而且能自动选择供电方式
- 外部直流电源通过电源插座供电。
- 电池连接电源连接器的GND和VIN引脚。
- USB接口直接供电。
电源引脚说明
VIN --- 当外部直流电源接入电源插座时,可以通过VIN向外部供电;也可以通过此引脚向UNO直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。
5V --- 通过稳压器或USB的5V电压,为UNO上的5V芯片供电。
3.3V --- 通过稳压器产生的3.3V电压,最大驱动电流50mA。
GND --- 地脚。
存储器
ATmega328包括了片上32KB Flash,其中0.5KB用于Bootloader。同时还有2KB SRAM和1KB EEPROM。
输入输出
14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能
串口信号RX(0号)、TX(1号): 与内部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。
外部中断(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总线)。
AREF:模拟输入信号的参考电压。
Reset:信号为低时复位单片机芯片。
通信接口
- 串口:ATmega328内置的UART可以通过数字口0(RX)和1(TX)与外部实现串口通信;ATmega16U2可以访问数字口实现USB上的虚拟串口。
- TWI(兼容I2C)接口:
- SPI 接口:
下载程序
Arduino UNO上的ATmega328已经预置了bootloader程序,因此可以通过Arduino软件直接下载程序到UNO中,参见[[]]。
可以直接通过UNO上ICSP header直接下载程序到ATmega328,参见[[]]。
ATmega16U2的Firmware(固件)也可以通过DFU工具升级,参见[[]]。注意要点
Arduino UNO上USB口附近有一个可重置的保险丝,对电路起到保护作用。当电流超过500mA是会断开USB连接。
Arduino UNO提供了自动复位设计,可以通过主机复位。这样通过Arduino软件下在程序到UNO中软件可以自动复位,不需要在复位按钮。在印制板上丝印"RESET EN"处可以使能和禁止该功能。
【Arduino Mega2560】
基于ATmega2560的主控开发板,采用USB接口
具有54路数字输入/输出口,16路模拟输入,4路UART接口,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。
工作电压:5V 推荐输入电压范围:7-12V; 输入电压范围:6-20V; 数字输入输出口:54 ;模拟输入输出口:16 ;每个I/O口的输出电流:40mA; 3.3V管脚的输出电流:50mA; 内存空间:256KB; SRAM:8KB; EEPROM:4KB; 时钟频率:16MHz
输入输出:
54路接口都可作为输入输出,并使用pinMode(), digitalWrite()和digitalRead(),5V电压,每个IO口最大电流40mA,并且接口内置20-50千欧上拉电阻
Serial 串口:Serial 0:0 (RX) and 1 (TX);Serial 1: 19 (RX) and 18 (TX);Serial 2: 17 (RX) and 16 (TX);Serial 3: 15 (RX) and 14 (TX).SoftwareSerial library,通信时数据灯会闪烁
External Interrupts(外部中断):2 (interrupt 0),3 (interrupt 1),18 (interrupt 5),19 (interrupt 4),20 (interrupt 3),21 (interrupt 2)每个引脚都可配置成低电平触发,或者上升、下降沿触发。详见attachInterrupt()功能。
PWM脉冲调制:2-13, 44-46; 提供8位PWM输出,有analogWrite()功能函数实现。
SPI(串行外设接口): 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS)。使用SPI library库实现。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线CS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
板载LED:13引脚。这是板上自带的LED灯,高电平亮,低电平灭。
TWI:20 (SDA) 和21 (SCL)。使用Wire library实现功能。对I^2C总线接口的继承和发展,完全兼容I^2C总线,具有硬件实现简单、软件设计方便、运行可靠和成本低廉的优点。TWI由一根时钟线和一根传输数据线组成,以字节为单位进行传输。TWI_SCL\TWI_SDA是TWI总线的信号线。SDA是双向数据线,SCL是时钟线SCL。在TWI总线上传送数据,首先送最高位,由主机发出启动信号,SDA在SCL 高电平期间由高电平跳变为低电平,然后由主机发送一个字节的数据。数据传送完毕,由主机发出停止信号,SDA在SCL 高电平期间由低电平跳变为高电平。
Analog输入:16个模拟输入,每个提供10位的分辨率(即2^10=1024个不同的值)。默认情况下他们测量0到5v值。可以通过改变AREF引脚和analogReference()功能改变他们变化范围的上界。AREF:是AD转换的参考电压输入端(模拟口输入的电压是与此处的参考电压比较的)。使用analogReference()(点击查看详细介绍)完成功能。
【IDE使用】
1.get an arduino board and usb cable
2.download the arduino IDE :http://www.arduino.cc/en/Main/Software
3.connect the board, the green power(labelled PWR) go on.
4.install the driver, if download, you will find the USB Serial Port to see your board
5.open arduino examples: file->examples
6.select your board:
7. select your serial port
8.upload your program
或者下载 arduino agent create 使用网页版进行编程。
【基础语法】
pinMode(pin, mode)
pin: the number of the pin whose mode you wish to set
mode: INPUT, OUTPUT, or INPUT_PULLUP. (see the (digital pins) page for a more complete description of the functionality.)
digitalRead()
Reads the value from a specified digital pin, either HIGH or LOW.
digitalRead(pin) return high,lowint ledPin = 13; // LED connected to digital pin 13
int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}
void loop()
{
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}
Serial:串口通信
Serial.begin(); //开启串口
Serial.end(); //关闭串口
Serial.available();//判断串口缓冲器是否有数据装入
Serial.read(); //读取串口数据
Serial.flush(); //清空串口缓存
Serial.print(); //写入字符串数据到串口
Serial.println(); //写入字符串数据+换行到串口
Serial.write(); //写入二进制数据到串口
Serial.SerialEvent();//read时触发的事件函数
Serial.readBytes(buffer,length);//读取固定长度的二进制流
#include <SoftwareSerial.h>
//使用软件串口,能讲数字口模拟成串口
SoftwareSerial BT(8, 9); //新建对象,接收脚为8,发送脚为9
char val; //存储接收的变量
void setup() {
Serial.begin(9600); //与电脑的串口连接
Serial.println("BT is ready!");
BT.begin(9600); //设置波特率
}
void loop() {
//如果串口接收到数据,就输出到蓝牙串口
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}
//如果接收到蓝牙模块的数据,输出到屏幕
if (BT.available()) {
val = BT.read();
Serial.print(val);
}
}
评论(0)
您还未登录,请登录后发表或查看评论