DFRduino_IO_Expansion_V5_SKU_DFR0088_ - jimaobian/DFRobotWikiCn GitHub Wiki

DFRduino_IO_Expansion_V5.jpg

概 述

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

引脚定义

DFRduino_IO_Expansion_V5_1.jpg

数字传感器的使用

数字传感器需要使用数字传感器连接线接插到数字口 D0-D13,绿色为信号,红色为电源正,黑色为电源地。 DFRduino_IO_Expansion_V5_2.jpg DFRduino_IO_Expansion_V5_3.jpg DFRduino_IO_Expansion_V5_4.jpg

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,红色为电源正,黑色为电源地 ,蓝色为信号。

DFRduino_IO_Expansion_V5_5.jpg DFRduino_IO_Expansion_V5_6.jpg DFRduino_IO_Expansion_V5_7.jpg

Arduino模拟环境光实验代码:

 void setup()  {    Serial.begin(9600); // 9600 bps  }  void loop()  {      int val;      val=analogRead(0);      Serial.println(val ,DEC);      delay(100);  }

根据光线强弱的变化,读取到的值也会随其变化。打开串口助手可以看到检测结果。

IIC接口的使用

DFRduino_IO_Expansion_V5_8.jpg 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根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。 DFRduino_IO_Expansion_V5_9.jpg 舵机属于大电流器件,在使用时需要单独供电,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度。

⚠️ **GitHub.com Fallback** ⚠️