DFRduino_IO_Expansion_V5 - jimaobian/DFRobotWikiCn GitHub Wiki
Arduino是一款开源的控制板,非常适合爱好电子制作的朋友制作互动作品,但对于一些不熟悉电子技术的人,要在Arduino上添加电路是一个比较麻烦是事,所以我们设计了一个传感器扩展板,能使大部分传感器轻松地和Arduino控制板连接。
1.扩展14个数字 IO口(12个舵机接口)及电源;
2.6个模拟IO口及电源;
3.1个数字端口外接电源接线柱,外部供电和内部供电自动切换;
4.数字端口外部供电和板载电源自动切换;
5.1个外接电源输入接线柱和1个输入插针;
6.RS485接口;
7.复位按钮;
8.xbee/Bluetooh Bee蓝牙无线数传接口;
9.APC220/Bluetooh V3蓝牙无线数传接口;
10.IIC/I2C/TWI接口;
11.3.3V输出端口;
12.SD卡模块接口;
1.模块电源:+5V
2.舵机电源:+5V
3.输出电源:+3.3V
4.模块尺寸:57x54mm
数字传感器需要使用数字传感器连接线接插到数字口 D0-D13,绿色为信号,红色为电源正,黑色为电源地。
Arduino数字大按钮实验代码:
int ledPin = 13; // choose the pin for the LED
int inputPin = 2; // choose the input pin (for a pushbutton) 按键接到数字2
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare pushbutton as input
}
void loop(){
val = digitalRead(inputPin); // read input value
if(val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
} else {
digitalWrite(ledPin, HIGH); // turn LED ON
}
}
模拟传感器需要使用模拟传感器连接线接插到模拟口A0-A5,红色为电源正,黑色为电源地 ,蓝色为信号。
Arduino模拟环境光实验代码:
void setup()
{
Serial.begin(9600); // 9600 bps
}
void loop()
{
int val;
val=analogRead(0);
Serial.println(val ,DEC);
delay(100);
}
根据光线强弱的变化,读取到的值也会随其变化。打开串口助手可以看到检测结果。
Arduino IICLCD实验代码:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
}
舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。 舵机属于大电流器件,在使用时需要单独供电,Arduino上的5V供电仅提供800mA电流,不能维持舵机的需要。当数字口用于驱动舵机时,由于舵机电流较大,这时就需要外部电源供电,从数字口外部供电接口接入,电压必须大于5V将自动断开Arduino控制器的5V。舵机供电电压需要符合所使用的舵机额定电压。
使用Arduino 0017-0018可以让Arduino控制器的Pin2-13端口控制12个舵机。如上图连接。
演示代码:
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
void setup()
{
servo1.attach(8); //定义舵机1控制口为Pin8
servo2.attach(9); //定义舵机2控制口为Pin9
servo3.attach(10); //定义舵机3控制口为Pin10
Serial.begin(19200); //设置波特率
Serial.print("Ready");
}
void loop()
{
static int v = 0;
if ( Serial.available()) {
char ch = Serial.read(); //读取串口数据
switch(ch) {
case '0'...'9':
v = v * 10 + ch - '0'; //字符换算成10进制
break;
case 'a': //如果数据后带a,则表示是servo1的数据,比如串口发送85a
servo1.write(v);
v = 0;
break;
case 'b': //如果数据后带b,则表示是servo2的数据,比如串口发送90b
servo2.write(v);
v = 0;
break;
case 'c': //如果数据后带c ,则表示是servo3的数据,比如串口发送180c
servo3.write(v);
v = 0;
break;
}
}
}
程序功能:通过IDE中的串口助手,发送舵机度数控制舵机转动的角度,比如发送字符85a表示舵机1转动85度,发送字符180c表示舵机3转动180度。