查看: 11813|回复: 262

[经验] 一块扩展板完成Arduino的10类37项实验(代码+图形+仿真)

[复制链接]
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

    发表于 2019-6-10 08:24 | 显示全部楼层 |阅读模式
    本帖最后由 eagler8 于 2019-8-10 07:16 编辑

    000.jpg

    实验目录(动手做):
    一、LED 实验
    01 Blink:D13蓝色 LED 闪烁
    02 Blink2:D12、D13红蓝色 LED 交替闪烁
    03 Blink3:模拟爆闪警灯
    04 Breath_LED:D9 全彩 LED 模拟红色呼吸灯
    二、按键实验
    05 Button:D2 按键控制 D13蓝色 LED
    06 Button_Lock:D3 按键控制 D13 蓝色LED 自锁实验
    三、电位器实验
    07 RS232_AD:串口读取 A0 电位器采集数值(旋转角度270°输出0-3.3V/5V电压信号电位器阻值10K)
    08 Rotation_LED:A0 电位器控制 D11 全彩 LED 蓝色端亮度
    09 RC_Motor:A0 电位器控制 D7 输出口的舵机控制其转动角度(舵机需自备Arduino 需要外部供电)
    四、RGB 全彩 LED 实验
    10 LED_RGB_Text:全彩 LED 基本颜色变化
    11 LED_RGB:全彩 LED 彩虹变化
    五、红外传感器D6实验(红外遥控器需自备)
    12 IRrelay:按红外遥控器任意键,可以控制 D13 LED 开关(控制距离1-8米,频率38KHz,兼容市面上大部分红外遥控器)
    13 IRrecord:串口显示读取的红外遥控代码
    六、温度传感器实验
    14 LM35_RS232AD:串口显示 A2 口 LM35 温度传感器读取的温度(可测试室内外温度,范围-50-150°C,灵敏度好)
    七、温湿度传感器实验
    15 DHT11_Test:串口显示 D4 口 DHT11 温湿度传感器读取的温湿度数据(测温范围0-50°C,湿度范围20%-90%PH)
    八、亮度传感器实验
    16 Light Sensor:串口显示 A1 口光敏电阻采集的数值
    17 Light_LED:A1 口光敏电阻控制 D13 LED 开关(感光比较灵敏,适合教学实验及民用设备)
    九、蜂鸣器实验
    18 Buzzer:D5 口无源蜂鸣器模拟救护车警笛(可发出简单的音乐声,音乐需要通过程序编写)
    十、扩展实验
    19 模拟超声波测距传感器(探测类I,IIC/I2C接口)
    20 总线DS18B20温度传感器(数值类,接扩展板数字D7接口)
    21 TM1637四位数码管(数码管和点阵类,接扩展板数字D7/D8接口)
    22 GY-BMP280-3.3 大气压强高度计传感器模块 ( 数值类,IIC/I2C接口)
    23 GY-NEO-6MV2新款飞控GPS卫星信号接收模块 (数值类,TTL接口)
    24 5V低电平触发单路继电器模块(执行类,数字D7接口)
    25 带驻极话筒4线制声音传感器模块(触发类,数字D7接口)
    26 BH1750FVI 数字光强度模块光照传感器(数值类, IIC/I2C接口)
    27 开源DFPlayer Mini TF卡MP3播放模块(输出执行器类D7/D8数字接口)
    28 LCD1602液晶屏模块(输出显示器类, IIC/I2C接口)
    29 人体红外热释电运动传感器模块 (触发类,数字D7接口)
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-13 14:49 | 显示全部楼层
    13 IRrecord:串口显示读取的红外遥控代码

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    Eagler8实验程序列表
    13 IRrecord:串口显示读取的红外遥控代码
     */
    
    #include <IRremote.h>
    
    int RECV_PIN = 8;
    int BUTTON_PIN = 12;
    int STATUS_PIN = 13;
    
    IRrecv irrecv(RECV_PIN);
    IRsend irsend;
    
    decode_results results;
    
    void setup()
    {
      Serial.begin(9600);
      irrecv.enableIRIn(); // Start the receiver
      pinMode(BUTTON_PIN, INPUT);
      pinMode(STATUS_PIN, OUTPUT);
    }
    
    // Storage for the recorded code
    int codeType = -1; // The type of code
    unsigned long codeValue; // The code value if not raw
    unsigned int rawCodes[RAWBUF]; // The durations if raw
    int codeLen; // The length of the code
    int toggle = 0; // The RC5/6 toggle state
    
    // Stores the code for later playback
    // Most of this code is just logging
    void storeCode(decode_results *results) {
      codeType = results->decode_type;
      int count = results->rawlen;
      if (codeType == UNKNOWN) {
        Serial.println("Received unknown code, saving as raw");
        codeLen = results->rawlen - 1;
        // To store raw codes:
        // Drop first value (gap)
        // Convert from ticks to microseconds
        // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
        for (int i = 1; i <= codeLen; i++) {
          if (i % 2) {
            // Mark
            rawCodes[i - 1] = results->rawbuf*USECPERTICK - MARK_EXCESS;
            Serial.print(" m");
          } 
          else {
            // Space
            rawCodes[i - 1] = results->rawbuf*USECPERTICK + MARK_EXCESS;
            Serial.print(" s");
          }
          Serial.print(rawCodes[i - 1], DEC);
        }
        Serial.println("");
      }
      else {
        if (codeType == NEC) {
          Serial.print("Received NEC: ");
          if (results->value == REPEAT) {
            // Don't record a NEC repeat value as that's useless.
            Serial.println("repeat; ignoring.");
            return;
          }
        } 
        else if (codeType == SONY) {
          Serial.print("Received SONY: ");
        } 
        else if (codeType == RC5) {
          Serial.print("Received RC5: ");
        } 
        else if (codeType == RC6) {
          Serial.print("Received RC6: ");
        } 
        else {
          Serial.print("Unexpected codeType ");
          Serial.print(codeType, DEC);
          Serial.println("");
        }
        Serial.println(results->value, HEX);
        codeValue = results->value;
        codeLen = results->bits;
      }
    }
    
    void sendCode(int repeat) {
      if (codeType == NEC) {
        if (repeat) {
          irsend.sendNEC(REPEAT, codeLen);
          Serial.println("Sent NEC repeat");
        } 
        else {
          irsend.sendNEC(codeValue, codeLen);
          Serial.print("Sent NEC ");
          Serial.println(codeValue, HEX);
        }
      } 
      else if (codeType == SONY) {
        irsend.sendSony(codeValue, codeLen);
        Serial.print("Sent Sony ");
        Serial.println(codeValue, HEX);
      } 
      else if (codeType == RC5 || codeType == RC6) {
        if (!repeat) {
          // Flip the toggle bit for a new button press
          toggle = 1 - toggle;
        }
        // Put the toggle bit into the code to send
        codeValue = codeValue & ~(1 << (codeLen - 1));
        codeValue = codeValue | (toggle << (codeLen - 1));
        if (codeType == RC5) {
          Serial.print("Sent RC5 ");
          Serial.println(codeValue, HEX);
          irsend.sendRC5(codeValue, codeLen);
        } 
        else {
          irsend.sendRC6(codeValue, codeLen);
          Serial.print("Sent RC6 ");
          Serial.println(codeValue, HEX);
        }
      } 
      else if (codeType == UNKNOWN /* i.e. raw */) {
        // Assume 38 KHz
        irsend.sendRaw(rawCodes, codeLen, 38);
        Serial.println("Sent raw");
      }
    }
    
    int lastButtonState;
    
    void loop() {
      // If button pressed, send the code.
      int buttonState = digitalRead(BUTTON_PIN);
      if (lastButtonState == HIGH && buttonState == LOW) {
        Serial.println("Released");
        irrecv.enableIRIn(); // Re-enable receiver
      }
    
      if (buttonState) {
        Serial.println("Pressed, sending");
        digitalWrite(STATUS_PIN, HIGH);
        sendCode(lastButtonState == buttonState);
        digitalWrite(STATUS_PIN, LOW);
        delay(50); // Wait a bit between retransmissions
      } 
      else if (irrecv.decode(&results)) {
        digitalWrite(STATUS_PIN, HIGH);
        storeCode(&results);
        irrecv.resume(); // resume receiver
        digitalWrite(STATUS_PIN, LOW);
      }
      lastButtonState = buttonState;
    }

  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-12-2 08:12 | 显示全部楼层
    yzhkpli 发表于 2019-12-1 23:26
    谢谢。这个店里没有arduino的亚克力垫板卖啊。


    O1CN01xTdLob1t4QgMoWmoQ_!!2761015848.jpg
    O1CN01WkzG1G1t4QgTe1nPC_!!2761015848.jpg
    O1CN01JxN2W51t4QgRB2hbR_!!2761015848.jpg
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-12-1 17:11 | 显示全部楼层
    yzhkpli 发表于 2019-12-1 16:43
    最便宜的好像是这个
    https://item.taobao.com/item.htm?spm=a230r.1.14.50.3e1f4e22zyfcFn&id=5394736391 ...

    这个 https://item.taobao.com/item.htm ... 3&_u=1cmbdsae23

    系列实验使用的这款

    3D图00.jpg
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-8-26 16:13 | 显示全部楼层
    本帖最后由 eagler8 于 2019-10-25 11:10 编辑

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
    【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
    实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
    安装驱动库:<MENU.h>(新手之帆)
    实验接线:A4---SDA, A5---SCL
    项目:多级菜单
    */
    
    #include<MENU.h>
    Menu test;
    String s[5]={"time","weather","arduino","esp32","esp8266"};
    void setup() {
      test.Begin(2,3,45,3,"--",0);
      test.Inputstring(s,5,0);
      test.Inputfun_0("a","b","c");
      test.Inputfun_1("f","e","f");
      test.Inputfun_2("fe","h","i");
      test.Inputfun_3("1","k","l");
      test.Inputfun_4("24·","n","o");
    }
    
    void loop() {
      test.Loop();
    }
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 08:27 | 显示全部楼层
    Aduino UNO 9in1 实验扩展板电原理图
    00线路图.jpg





  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 08:29 | 显示全部楼层
    Aduino UNO 9in1 实验扩展板de模块与板载端口:


    复位按键(REST)

    10K旋转电位器模块(A0)

    2路SW按键模块(D2、D3)

    Light亮度传感器模块(A1)

    LM35D温度传感器模块(A2)

    Buzzer无源蜂鸣器模块(D5)

    DHT11温湿度传感器模块(D4)

    ER Receiver红外接收模块(D6)

    1路Analog Port模拟量端口(A3)

    RGB全彩LED模块(D9、D10、D11)

    2路Digital Port数字量端口(D7、D8)

    1个TTL串口(可接入蓝牙或WIFI模块等)

    2路3mm LED模块(红色D12、蓝色D13)

    1个双向同步串行总线I2C接口(A4 SDA及A5 SCL,可接显示屏等)



    3D图.jpg
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 08:37 | 显示全部楼层
    扩展板主要特性


    优秀PCB设计,美观大方
    完全兼容Arduino UNO R3接口
    预留了5个扩展端口,可以完成其他模块实验
    提供了Arduino初学入门基本实验九种模块
    不用焊接,不用连线,直接下载程序就可以完成实验
    定制加高排针,不会与UNO板的USB接口接触发生短路
    一块板子集成九种模块功能,轻而易举完成18种程序实验
    提供所有模块代码库文件,逐一经过测试,直接就可以使用

    0000-0.jpg

  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 08:39 | 显示全部楼层
    01 Blink:D13蓝色 LED 闪烁

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
      Eagler8实验程序列表
      01 Blink:D13蓝色 LED 闪烁
     */
     
    int led = 13;
     
    void setup() {
      pinMode(led, OUTPUT);
    }
     
    void loop() {
      digitalWrite(led, HIGH);   
      delay(1000);              
      digitalWrite(led, LOW);  
      delay(1000);              
    }



    01--.jpg



  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 09:22 | 显示全部楼层
    01-0.jpg


  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 09:33 | 显示全部楼层
    02 Blink2:D12、D13红蓝色 LED 交替闪烁

    kittenblock中小学创客名师推荐的图形化编程软件

    /*
     Eagler8实验程序列表
     02 Blink2:D12、D13红蓝色 LED 交替闪烁
     */
      
    int led1 = 12;
    int led2 = 13;
     
    void setup() {                
      pinMode(led1, OUTPUT);     
      pinMode(led2, OUTPUT);
    }
     
    void loop() {
      digitalWrite(led1, HIGH);  
      delay(1000);               
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);  
      delay(1000);
      digitalWrite(led2, LOW);  
    }






  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 13:42 | 显示全部楼层
    01-0.jpg
  • TA的每日心情
    开心
    2020-4-5 05:30
  • 签到天数: 305 天

    [LV.8]以坛为家I

     楼主| 发表于 2019-6-10 13:51 | 显示全部楼层
    02 Blink2:D12、D13红蓝色 LED 交替闪烁


    kittenblock中小学创客名师推荐的图形化编程软件

    /*
     Eagler8实验程序列表
     02 Blink2:D12、D13红蓝色 LED 交替闪烁
     */
      
    int led1 = 12;
    int led2 = 13;
     
    void setup() {                
      pinMode(led1, OUTPUT);     
      pinMode(led2, OUTPUT);
    }
     
    void loop() {
      digitalWrite(led1, HIGH);  
      delay(1000);               
      digitalWrite(led1, LOW);
      digitalWrite(led2, HIGH);  
      delay(1000);
      digitalWrite(led2, LOW);  
    }

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    《Color Unit免费申请试用》
    《Color Unit免费申请试用
    COLOR 是一款颜色识别 Unit,其内部集成TCS3472彩色光数字转换器,能够将其检测到颜色
    (blinker+wifiduino)自制远程遥控“机甲大师”
    (blinker+wifiduino)自
    之前就尝试过其他云平台做远程遥控小车,但是某APP 界面无法自定义设计,操作方式
    自动抛石机的编程,两个舵机一个碰撞传感器。
    自动抛石机的编程,两个舵
    以前从未接触这个,突然老师就要求写这个的编程,非常希望得到帮助。 大意是这样的:
    no matching function for call to 'DS3231::DS3231()'
    no matching function for
    刚学习的小白,有大佬知道这个什么意思吗,怎么解决
    教你让OLED动起来!多重字符串版!
    教你让OLED动起来!多重字
    大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表