欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 一塊擴展板完成Arduino的10類37項實驗(代碼+圖形+仿真) [打印本頁]

作者: eagler8    時間: 2019-6-10 13:27
標題: 一塊擴展板完成Arduino的10類37項實驗(代碼+圖形+仿真)
本帖最后由 eagler8 于 2019-8-10 07:12 編輯



實驗目錄(動手做):
一、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 電位器采集數(shù)值(旋轉(zhuǎn)角度270°輸出0-3.3V/5V電壓信號電位器阻值10K)
08 Rotation_LED:A0 電位器控制 D11 全彩 LED 藍色端亮度
09 RC_Motor:A0 電位器控制 D7 輸出口的舵機控制其轉(zhuǎn)動角度(舵機需自備Arduino 需要外部供電)
四、RGB 全彩 LED 實驗
10 LED_RGB_Text:全彩 LED 基本顏色變化
11 LED_RGB:全彩 LED 彩虹變化
五、紅外傳感器D6實驗(紅外遙控器需自備)
12 IRrelay:按紅外遙控器任意鍵,可以控制 D13 LED 開關(guān)(控制距離1-8米,頻率38KHz,兼容市面上大部分紅外遙控器)
13 IRrecord:串口顯示讀取的紅外遙控代碼
六、溫度傳感器實驗
14 LM35_RS232AD:串口顯示 A2 口 LM35 溫度傳感器讀取的溫度(可測試室內(nèi)外溫度,范圍-50-150°C,靈敏度好)
七、溫濕度傳感器實驗
15 DHT11_Test:串口顯示 D4 口 DHT11 溫濕度傳感器讀取的溫濕度數(shù)據(jù)(測溫范圍0-50°C,濕度范圍20%-90%PH)
八、亮度傳感器實驗
16 Light Sensor:串口顯示 A1 口光敏電阻采集的數(shù)值
17 Light_LED:A1 口光敏電阻控制 D13 LED 開關(guān)(感光比較靈敏,適合教學實驗及民用設備)
九、蜂鳴器實驗
18 Buzzer:D5 口無源蜂鳴器模擬救護車警笛(可發(fā)出簡單的音樂聲,音樂需要通過程序編寫)
十、擴展實驗
19 模擬超聲波測距傳感器(探測類I,IIC/I2C接口)
20 總線DS18B20溫度傳感器(數(shù)值類,接擴展板數(shù)字D7接口)
21 TM1637四位數(shù)碼管(數(shù)碼管和點陣類,接擴展板數(shù)字D7/D8接口)
22 GY-BMP280-3.3 大氣壓強高度計傳感器模塊 ( 數(shù)值類,IIC/I2C接口)
23 GY-NEO-6MV2新款飛控GPS衛(wèi)星信號接收模塊 (數(shù)值類,TTL接口)
24 5V低電平觸發(fā)單路繼電器模塊(執(zhí)行類,數(shù)字D7接口)
25 帶駐極話筒4線制聲音傳感器模塊(觸發(fā)類,數(shù)字D7接口)
26 BH1750FVI 數(shù)字光強度模塊光照傳感器(數(shù)值類, IIC/I2C接口)
27 開源DFPlayer Mini TF卡MP3播放模塊(輸出執(zhí)行器類D7/D8數(shù)字接口)
28 LCD1602液晶屏模塊(輸出顯示器類, IIC/I2C接口)
29 人體紅外熱釋電運動傳感器模塊 (觸發(fā)類,數(shù)字D7接口)


作者: eagler8    時間: 2019-6-10 13:28
擴展板電原理圖





作者: eagler8    時間: 2019-6-10 13:29
Aduino UNO 9in1 實驗擴展板de模塊與板載端口:

復位按鍵(REST)
10K旋轉(zhuǎn)電位器模塊(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數(shù)字量端口(D7、D8)
1個TTL串口(可接入藍牙或WIFI模塊等)
2路3mm LED模塊(紅色D12、藍色D13)
1個雙向同步串行總線I2C接口(A4 SDA及A5 SCL,可接顯示屏等)







作者: eagler8    時間: 2019-6-10 13:31
擴展板主要特性

優(yōu)秀PCB設計,美觀大方
完全兼容Arduino UNO R3接口
預留了5個擴展端口,可以完成其他模塊實驗
提供了Arduino初學入門基本實驗九種模塊
不用焊接,不用連線,直接下載程序就可以完成實驗
定制加高排針,不會與UNO板的USB接口接觸發(fā)生短路
一塊板子集成九種模塊功能,輕而易舉完成18種程序?qū)嶒?/font>
提供所有模塊代碼庫文件,逐一經(jīng)過測試,直接就可以使用




作者: eagler8    時間: 2019-6-10 13:34

01 Blink:D13藍色 LED 閃爍


  1. /*
  2.   Eagler8實驗程序列表
  3.   01 Blink:D13藍色 LED 閃爍
  4. */

  5. int led = 13;

  6. void setup() {
  7.   pinMode(led, OUTPUT);
  8. }

  9. void loop() {
  10.   digitalWrite(led, HIGH);   
  11.   delay(1000);              
  12.   digitalWrite(led, LOW);  
  13.   delay(1000);              
  14. }
復制代碼




作者: eagler8    時間: 2019-6-10 13:41


作者: eagler8    時間: 2019-6-10 13:43


作者: eagler8    時間: 2019-6-10 13:48
本帖最后由 eagler8 于 2019-6-10 14:37 編輯

https://v.youku.com/v_show/id_XNDIyMTkzNzc4NA==.html?spm=a2hzp.8244740.0.0https://v.youku.com/v_show/id_XNDIyMTkzNzc4NA==.html?spm=a2hzp.8244740.0.0

作者: eagler8    時間: 2019-6-10 13:55
02 Blink2:D12、D13紅藍色 LED 交替閃爍


  1. /*
  2. Eagler8實驗程序列表
  3. 02 Blink2:D12、D13紅藍色 LED 交替閃爍
  4. */
  5.   
  6. int led1 = 12;
  7. int led2 = 13;

  8. void setup() {               
  9.   pinMode(led1, OUTPUT);     
  10.   pinMode(led2, OUTPUT);
  11. }

  12. void loop() {
  13.   digitalWrite(led1, HIGH);  
  14.   delay(1000);               
  15.   digitalWrite(led1, LOW);
  16.   digitalWrite(led2, HIGH);  
  17.   delay(1000);
  18.   digitalWrite(led2, LOW);  
  19. }
復制代碼




作者: eagler8    時間: 2019-6-10 13:59


作者: eagler8    時間: 2019-6-10 14:01


作者: eagler8    時間: 2019-6-10 14:04
https://v.youku.com/v_show/id_XNDIyMTk2OTg4NA==.html?spm=a2hzp.8244740.0.0

作者: eagler8    時間: 2019-6-10 14:36
03 Blink3:模擬爆閃警燈


  1. /*
  2. Eagler8實驗程序列表
  3. 03 Blink3:模擬爆閃警燈
  4. */
  5.   
  6. int led1 = 12;
  7. int led2 = 13;
  8. int i,j;

  9. void setup() {               
  10.   pinMode(led1, OUTPUT);     
  11.   pinMode(led2, OUTPUT);
  12. }

  13. void loop() {
  14.   for(i=0;i<10;i++){
  15.   digitalWrite(led1, HIGH);   
  16.   delay(30);               
  17.   digitalWrite(led1, LOW);
  18.   delay(40);
  19.   }
  20.    
  21.   for(i=0;i<10;i++){
  22.   digitalWrite(led2, HIGH);  
  23.   delay(30);
  24.   digitalWrite(led2, LOW);
  25.   delay(40);
  26.   }
  27. }
復制代碼




作者: eagler8    時間: 2019-6-10 14:50


作者: eagler8    時間: 2019-6-10 14:53


作者: eagler8    時間: 2019-6-10 14:55
https://v.youku.com/v_show/id_XNDIyMTk5NDUwMA==.html?spm=a2hzp.8244740.0.0

作者: eagler8    時間: 2019-6-11 13:02
04 Breath_LED: D9 全彩 LED 模擬紅色呼吸燈


  1. /*
  2. Eagler8實驗程序列表
  3. 04 Breath_LED:D9 全彩 LED 模擬紅色呼吸燈
  4. */

  5. #define LED 9
  6. int i = 0;

  7. void setup()
  8. {
  9.   pinMode(LED,OUTPUT);
  10. }
  11. void loop()
  12. {
  13. for(i=0;i<220;i++)
  14.   {
  15.     analogWrite(LED,i);
  16.     delay(15);
  17.   }
  18.   for(i=220;i>0;i--)
  19.   {
  20.     analogWrite(LED,i);
  21.     delay(15);
  22.   }
  23.   analogWrite(LED,0);
  24.   delay(60);
  25. }
復制代碼




作者: eagler8    時間: 2019-6-11 13:02


作者: eagler8    時間: 2019-6-11 13:03


作者: eagler8    時間: 2019-6-11 13:09
05 Button:D2 按鍵控制 D13藍色 LED


  1. /*
  2. Eagler8實驗程序列表
  3. 05 Button:D2 按鍵控制 D13藍色 LED
  4. */

  5. int ledPin = 13;               
  6. int inputPin = 2;               
  7. int val = 0;                    
  8. void setup()
  9. {
  10.   pinMode(ledPin, OUTPUT);      
  11.   pinMode(inputPin, INPUT);     
  12. }

  13. void loop()
  14. {
  15.   val = digitalRead(inputPin);  
  16.   if(val == HIGH)
  17.   {         
  18.      digitalWrite(ledPin, LOW);  
  19.   }
  20.   else
  21.   {
  22.      digitalWrite(ledPin, HIGH);
  23.   }
  24. }
復制代碼




作者: eagler8    時間: 2019-6-11 13:12


作者: eagler8    時間: 2019-6-11 13:13


作者: eagler8    時間: 2019-6-11 13:17
06 Button_Lock:D3 按鍵控制 D13 藍色LED 自鎖實驗


  1. /*
  2. Eagler8實驗程序列表
  3. 06 Button_Lock:D3 按鍵控制 D13 藍色LED 自鎖實驗
  4. */

  5. int Button=3;
  6. int LED=13;
  7. boolean onoff=LOW;

  8. void setup(){
  9.   pinMode(Button,INPUT);
  10.   pinMode(LED,OUTPUT);
  11. }

  12. void loop(){
  13.   if(digitalRead(Button)==HIGH)  
  14.   {
  15.     delay(10);
  16.     if(digitalRead(Button)==LOW)
  17.     {
  18.       digitalWrite(LED,onoff);
  19.       onoff=(!onoff);
  20.       delay(10);  
  21.       while(digitalRead(Button)==LOW)
  22.       {
  23.         delay(1);
  24.       }
  25.     }
  26.   }
  27. }
復制代碼




作者: eagler8    時間: 2019-6-11 13:24


作者: eagler8    時間: 2019-6-11 13:24


作者: eagler8    時間: 2019-6-11 13:34
07 RS232_AD:串口讀取 A0 電位器采集的數(shù)值


  1. /*
  2. Eagler8實驗程序列表
  3. 07 RS232_AD:串口讀取 A0 電位器采集的數(shù)值(旋轉(zhuǎn)角度270°,輸出0-3.3V/5V電壓信號,電位器阻值10K)
  4. */

  5. void setup()
  6. {
  7.   Serial.begin(9600); // 打開串口,設置波特率為9600 bps
  8. }
  9. void loop()
  10. {
  11.       int val;
  12.       val=analogRead(0);   //傳感器接于模擬口0
  13.       Serial.println(val,DEC);//從串口發(fā)送數(shù)據(jù)并換行        
  14.       delay(100);
  15. }
復制代碼




作者: eagler8    時間: 2019-6-11 13:39


作者: eagler8    時間: 2019-6-11 13:39


作者: eagler8    時間: 2019-6-11 13:39


作者: eagler8    時間: 2019-6-11 19:01
08 Rotation_LED:A0 電位器控制 D10 全彩 LED 藍色端亮度


  1. /*
  2. Eagler8實驗程序列表
  3. 08 Rotation_LED:A0 電位器控制 D10全彩 LED 藍色端亮度
  4. */

  5. void setup()
  6. {
  7.   pinMode(10,OUTPUT);         
  8. }
  9.   
  10. void loop()
  11. {
  12.   int n = analogRead(A0);     
  13.   analogWrite(10,n/4);         
  14. }
復制代碼




作者: eagler8    時間: 2019-6-11 19:04

作者: eagler8    時間: 2019-6-11 19:08


作者: eagler8    時間: 2019-6-11 19:13
09 RC_Motor:A0 電位器控制 D7 輸出口的舵機,控制其轉(zhuǎn)動角度(舵機需自備,Arduino 需要外部供電)


  1. /*
  2. Eagler8實驗程序列表
  3. 09 RC_Motor:A0 電位器控制 D7 輸出口的舵機,控制其轉(zhuǎn)動角度(舵機需自備,Arduino 需要外部供電)
  4. */

  5. #include <Servo.h>
  6. Servo myservo;

  7. int analogPin = 0;

  8. int val;
  9. void setup()
  10. {
  11.   myservo.attach(7);  // 7號引腳輸出電機控制信號

  12.   Serial.begin(9600);      
  13. }
  14. void loop()
  15. {
  16.   Serial.print("servo:");
  17.   Serial.println(val);
  18.   delay(15);
  19.   val = analogRead(analogPin);       // 讀取來自可變電阻的模擬值(0到1023之間)
  20.   val = map(val, 0, 1023, 0, 179);   // 利用“map”函數(shù)縮放該值,得到伺服電機需要的角度(0到180之間)

  21.   myservo.write(val);   // 設定伺服電機的位置
  22.   
  23.   delay(15);            // 等待電機旋轉(zhuǎn)到目標角度
  24. }
復制代碼




作者: eagler8    時間: 2019-6-11 19:33
舵機自動180度搖擺





作者: eagler8    時間: 2019-6-11 19:38
控制80度旋轉(zhuǎn)





作者: eagler8    時間: 2019-6-11 19:44
10 LED_RGB_Text:全彩 LED 基本顏色變化


  1. /*
  2. Eagler8實驗程序列表
  3. 10 LED_RGB_Text:全彩 LED 基本顏色變化
  4. */

  5. #define LEDR 9
  6. #define LEDG 10
  7. #define LEDB 11
  8. int i = 0;

  9. void setup()
  10. {
  11.   pinMode(LEDG,OUTPUT);
  12.   pinMode(LEDB,OUTPUT);
  13.   pinMode(LEDR,OUTPUT);
  14. }

  15. void loop()
  16. {
  17.   analogWrite(LEDR,0);
  18.   analogWrite(LEDB,0);
  19.   analogWrite(LEDG,0);  //off
  20.   analogWrite(LEDR,255);
  21.   delay(500);    //hong
  22.   analogWrite(LEDG,100);
  23.   delay(500);   //cheng
  24.   analogWrite(LEDR,255);
  25.   analogWrite(LEDG,255);
  26.   delay(500);   //huang
  27.   analogWrite(LEDR,0);
  28.   analogWrite(LEDG,255);
  29.   delay(500);   //lv  
  30.   analogWrite(LEDB,255);
  31.   delay(500);   //qing
  32.   analogWrite(LEDG,0);
  33.   analogWrite(LEDB,255);
  34.   delay(500);   //lan
  35.   analogWrite(LEDR,255);
  36.   analogWrite(LEDG,0);
  37.   delay(500);   //zi
  38.   
  39.   analogWrite(LEDG,255);
  40.   analogWrite(LEDB,255);
  41.   analogWrite(LEDR,255);
  42.    delay(500);   //bai   
  43.    
  44. }
復制代碼



作者: eagler8    時間: 2019-6-11 19:47


作者: eagler8    時間: 2019-6-13 07:39
第一個方案,只是混合顏色的呼吸燈,不太對頭,繼續(xù)試驗.....







作者: eagler8    時間: 2019-6-13 07:53
第一個方案,只是混合顏色的呼吸燈,不太對頭,繼續(xù)試驗.....







作者: eagler8    時間: 2019-6-13 08:59
第二方案,以紅、藍、綠的顏色順序做呼吸狀變化,還是對不上.......





作者: eagler8    時間: 2019-6-13 08:59


作者: eagler8    時間: 2019-6-13 08:59


作者: eagler8    時間: 2019-6-13 09:00


作者: eagler8    時間: 2019-6-13 09:00


作者: eagler8    時間: 2019-6-13 10:07
實驗方案三,有點像了,就是程序復雜些了,暫時這樣吧(以后再嘗試簡化)





作者: eagler8    時間: 2019-6-13 10:07


作者: eagler8    時間: 2019-6-13 10:07


作者: eagler8    時間: 2019-6-13 10:27
11 LED_RGB:全彩 LED 彩虹變化

  1. /*
  2. Eagler8實驗程序列表
  3. 11 LED_RGB:全彩 LED 彩虹變化
  4. */

  5. #define LEDR 9
  6. #define LEDG 10
  7. #define LEDB 11
  8. int i = 0;

  9. void setup()
  10. {
  11.   pinMode(LEDG,OUTPUT);
  12.   pinMode(LEDB,OUTPUT);
  13.   pinMode(LEDR,OUTPUT);
  14. }

  15. void loop()
  16. {
  17.   analogWrite(LEDR,255);
  18.   delay(1000);    //hong
  19.   analogWrite(LEDG,120);
  20.   delay(1000);   //cheng
  21.   analogWrite(LEDR,255);
  22.   analogWrite(LEDG,220);
  23.   delay(1000);   //huang
  24.   analogWrite(LEDR,0);
  25.   analogWrite(LEDG,255);
  26.   delay(1000);   //lv  
  27.   analogWrite(LEDB,255);
  28.   delay(1000);   //qing
  29.   analogWrite(LEDG,0);
  30.   analogWrite(LEDB,255);
  31.   delay(1000);   //lan
  32.   analogWrite(LEDR,255);
  33.   analogWrite(LEDG,0);
  34.   delay(1000);   //zi
  35.   analogWrite(LEDG,255);
  36.   delay(1000);   //bai   
  37.    
  38.   analogWrite(LEDG,0);
  39.   analogWrite(LEDB,0);
  40.   analogWrite(LEDR,255);
  41.   delay(1000);   //zi   
  42.   for(i=0;i<255;i++)
  43.   {
  44.     analogWrite(LEDG,i);
  45.     delay(10);
  46.   }
  47.   for(i=255;i>0;i--)
  48.   {
  49.     analogWrite(LEDR,i);
  50.     delay(10);
  51.   }
  52.    for(i=0;i<255;i++)
  53.   {
  54.     analogWrite(LEDB,i);
  55.     delay(10);
  56.   }
  57.   for(i=255;i>0;i--)
  58.   {
  59.     analogWrite(LEDG,i);
  60.     delay(10);
  61.   }
  62.    for(i=0;i<255;i++)
  63.   {
  64.     analogWrite(LEDR,i);
  65.     delay(10);
  66.   }
  67.    for(i=0;i<255;i++)
  68.   {
  69.     analogWrite(LEDG,i);
  70.     delay(10);
  71.   }
  72.   analogWrite(LEDG,0);
  73.   analogWrite(LEDB,0);
  74.   analogWrite(LEDR,0);
  75. }
復制代碼




作者: eagler8    時間: 2019-6-13 10:53


作者: eagler8    時間: 2019-6-13 10:59
圖形編程,估計與實驗十相類似,差別不大
作者: eagler8    時間: 2019-6-13 11:57
12 紅外控制,接收紅外命令控制板載LED燈亮滅

  1. /*
  2. Eagler8實驗程序列表
  3. 12 紅外控制,接收紅外命令控制板載LED燈亮滅(1號鍵滅,2號鍵亮,控制距離1-8米,兼容市面上大部分紅外遙控器)
  4. 說明:開關(guān)按鍵可以自己定義
  5. */

  6. #include <IRremote.h>

  7. int RECV_PIN = 8;
  8. int LED_PIN = 13;

  9. IRrecv irrecv(RECV_PIN);

  10. decode_results results;

  11. void setup()
  12. {
  13.   Serial.begin(9600);
  14.   irrecv.enableIRIn();
  15.   pinMode(LED_PIN, OUTPUT);
  16.   digitalWrite(LED_PIN, HIGH);
  17. }

  18. void loop() {
  19.   if (irrecv.decode(&results)) {
  20.     Serial.println(results.value, HEX);
  21.     if (results.value == 0xFFA25D)
  22.     {
  23.       digitalWrite(LED_PIN, LOW);
  24.     } else if (results.value == 0xFF629D)
  25.     {
  26.       digitalWrite(LED_PIN, HIGH);
  27.     }
  28.     irrecv.resume();
  29.   }
  30.   delay(100);
  31. }
復制代碼




作者: eagler8    時間: 2019-6-13 12:01


作者: eagler8    時間: 2019-6-13 12:52
任何鍵均可控制





作者: eagler8    時間: 2019-6-13 12:52


作者: eagler8    時間: 2019-6-13 14:49
13 IRrecord:串口顯示讀取的紅外遙控代碼

  1. /*
  2. Eagler8實驗程序列表
  3. 13 IRrecord:串口顯示讀取的紅外遙控代碼
  4. */

  5. #include <IRremote.h>

  6. int RECV_PIN = 8;
  7. int BUTTON_PIN = 12;
  8. int STATUS_PIN = 13;

  9. IRrecv irrecv(RECV_PIN);
  10. IRsend irsend;

  11. decode_results results;

  12. void setup()
  13. {
  14.   Serial.begin(9600);
  15.   irrecv.enableIRIn(); // Start the receiver
  16.   pinMode(BUTTON_PIN, INPUT);
  17.   pinMode(STATUS_PIN, OUTPUT);
  18. }

  19. // Storage for the recorded code
  20. int codeType = -1; // The type of code
  21. unsigned long codeValue; // The code value if not raw
  22. unsigned int rawCodes[RAWBUF]; // The durations if raw
  23. int codeLen; // The length of the code
  24. int toggle = 0; // The RC5/6 toggle state

  25. // Stores the code for later playback
  26. // Most of this code is just logging
  27. void storeCode(decode_results *results) {
  28.   codeType = results->decode_type;
  29.   int count = results->rawlen;
  30.   if (codeType == UNKNOWN) {
  31.     Serial.println("Received unknown code, saving as raw");
  32.     codeLen = results->rawlen - 1;
  33.     // To store raw codes:
  34.     // Drop first value (gap)
  35.     // Convert from ticks to microseconds
  36.     // Tweak marks shorter, and spaces longer to cancel out IR receiver distortion
  37.     for (int i = 1; i <= codeLen; i++) {
  38.       if (i % 2) {
  39.         // Mark
  40.         rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK - MARK_EXCESS;
  41.         Serial.print(" m");
  42.       }
  43.       else {
  44.         // Space
  45.         rawCodes[i - 1] = results->rawbuf[i]*USECPERTICK + MARK_EXCESS;
  46.         Serial.print(" s");
  47.       }
  48.       Serial.print(rawCodes[i - 1], DEC);
  49.     }
  50.     Serial.println("");
  51.   }
  52.   else {
  53.     if (codeType == NEC) {
  54.       Serial.print("Received NEC: ");
  55.       if (results->value == REPEAT) {
  56.         // Don't record a NEC repeat value as that's useless.
  57.         Serial.println("repeat; ignoring.");
  58.         return;
  59.       }
  60.     }
  61.     else if (codeType == SONY) {
  62.       Serial.print("Received SONY: ");
  63.     }
  64.     else if (codeType == RC5) {
  65.       Serial.print("Received RC5: ");
  66.     }
  67.     else if (codeType == RC6) {
  68.       Serial.print("Received RC6: ");
  69.     }
  70.     else {
  71.       Serial.print("Unexpected codeType ");
  72.       Serial.print(codeType, DEC);
  73.       Serial.println("");
  74.     }
  75.     Serial.println(results->value, HEX);
  76.     codeValue = results->value;
  77.     codeLen = results->bits;
  78.   }
  79. }

  80. void sendCode(int repeat) {
  81.   if (codeType == NEC) {
  82.     if (repeat) {
  83.       irsend.sendNEC(REPEAT, codeLen);
  84.       Serial.println("Sent NEC repeat");
  85.     }
  86.     else {
  87.       irsend.sendNEC(codeValue, codeLen);
  88.       Serial.print("Sent NEC ");
  89.       Serial.println(codeValue, HEX);
  90.     }
  91.   }
  92.   else if (codeType == SONY) {
  93.     irsend.sendSony(codeValue, codeLen);
  94.     Serial.print("Sent Sony ");
  95.     Serial.println(codeValue, HEX);
  96.   }
  97.   else if (codeType == RC5 || codeType == RC6) {
  98.     if (!repeat) {
  99.       // Flip the toggle bit for a new button press
  100.       toggle = 1 - toggle;
  101.     }
  102.     // Put the toggle bit into the code to send
  103.     codeValue = codeValue & ~(1 << (codeLen - 1));
  104.     codeValue = codeValue | (toggle << (codeLen - 1));
  105.     if (codeType == RC5) {
  106.       Serial.print("Sent RC5 ");
  107.       Serial.println(codeValue, HEX);
  108.       irsend.sendRC5(codeValue, codeLen);
  109.     }
  110.     else {
  111.       irsend.sendRC6(codeValue, codeLen);
  112.       Serial.print("Sent RC6 ");
  113.       Serial.println(codeValue, HEX);
  114.     }
  115.   }
  116.   else if (codeType == UNKNOWN /* i.e. raw */) {
  117.     // Assume 38 KHz
  118.     irsend.sendRaw(rawCodes, codeLen, 38);
  119.     Serial.println("Sent raw");
  120.   }
  121. }

  122. int lastButtonState;

  123. void loop() {
  124.   // If button pressed, send the code.
  125.   int buttonState = digitalRead(BUTTON_PIN);
  126.   if (lastButtonState == HIGH && buttonState == LOW) {
  127.     Serial.println("Released");
  128.     irrecv.enableIRIn(); // Re-enable receiver
  129.   }

  130.   if (buttonState) {
  131.     Serial.println("Pressed, sending");
  132.     digitalWrite(STATUS_PIN, HIGH);
  133.     sendCode(lastButtonState == buttonState);
  134.     digitalWrite(STATUS_PIN, LOW);
  135.     delay(50); // Wait a bit between retransmissions
  136.   }
  137.   else if (irrecv.decode(&results)) {
  138.     digitalWrite(STATUS_PIN, HIGH);
  139.     storeCode(&results);
  140.     irrecv.resume(); // resume receiver
  141.     digitalWrite(STATUS_PIN, LOW);
  142.   }
  143.   lastButtonState = buttonState;
  144. }
復制代碼




作者: eagler8    時間: 2019-6-13 14:55


作者: eagler8    時間: 2019-6-13 16:16


作者: eagler8    時間: 2019-6-13 16:17


作者: eagler8    時間: 2019-6-13 17:12
圖形編程只用簡單的三行程序,就能讀出紅外遙控器各個按鍵的編碼






作者: eagler8    時間: 2019-6-13 17:13


作者: eagler8    時間: 2019-6-13 17:29


作者: eagler8    時間: 2019-6-13 18:06
14 LM35_RS232AD:串口顯示 A2 口 LM35 溫度傳感器讀取的溫度(可測試室內(nèi)外溫度,范圍-50-150°C,靈敏度好)

  1. /*
  2. Eagler8實驗程序列表
  3. 溫度傳感器實驗
  4. 14 LM35_RS232AD:串口顯示 A2 口 LM35 溫度傳感器讀取的溫度(可測試室內(nèi)外溫度,范圍-50-150°C,靈敏度好)
  5. */

  6. void setup()
  7. {
  8.     Serial.begin(9600);
  9. }

  10. void loop()
  11. {
  12.     int val;
  13.     int dat;
  14.     val=analogRead(2);
  15.     dat=(125*val)>>8;
  16.     Serial.print("Tep:");
  17.     Serial.print(dat);
  18.     Serial.println("C");
  19.     delay(500);
  20. }
復制代碼




作者: eagler8    時間: 2019-6-13 18:09





作者: eagler8    時間: 2019-6-13 18:21


作者: eagler8    時間: 2019-6-13 18:22


作者: eagler8    時間: 2019-6-13 19:24


作者: eagler8    時間: 2019-6-13 19:39
溫濕度傳感器實驗
15 DHT11_Test:串口顯示 D4  DHT11 溫濕度傳感器讀取的溫濕度數(shù)據(jù)(測溫范圍0-50°C,濕度范圍20%-90%PH)



  1. /*
  2. Eagler8實驗程序列表
  3. 溫濕度傳感器實驗
  4. 15 DHT11_Test:串口顯示 D4  DHT11 溫濕度傳感器讀取的溫濕度數(shù)據(jù)(測溫范圍0-50°C,濕度范圍20%-90%PH)
  5. */
  6.   
  7. double Fahrenheit(double celsius)
  8. {
  9.     return 1.8 * celsius + 32;
  10. }

  11. //Celsius to Kelvin conversion
  12. double Kelvin(double celsius)
  13. {
  14.     return celsius + 273.15;
  15. }

  16. double dewPoint(double celsius, double humidity)
  17. {
  18.     double A0= 373.15/(273.15 + celsius);
  19.     double SUM = -7.90298 * (A0-1);
  20.     SUM += 5.02808 * log10(A0);
  21.     SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
  22.     SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
  23.     SUM += log10(1013.246);
  24.     double VP = pow(10, SUM-3) * humidity;
  25.     double T = log(VP/0.61078);   
  26.     return (241.88 * T) / (17.558-T);
  27. }

  28. double dewPointFast(double celsius, double humidity)
  29. {
  30.     double a = 17.271;
  31.     double b = 237.7;
  32.     double temp = (a * celsius) / (b + celsius) + log(humidity/100);
  33.     double Td = (b * temp) / (a - temp);
  34.     return Td;
  35. }


  36. #include <DHT11.h>

  37. dht11 DHT11;

  38. #define DHT11PIN 2

  39. void setup()
  40. {
  41.   Serial.begin(9600);
  42.   Serial.println("DHT11 TEST PROGRAM ");
  43.   Serial.print("LIBRARY VERSION: ");
  44.   Serial.println(DHT11LIB_VERSION);
  45.   Serial.println();
  46. }

  47. void loop()
  48. {
  49.   Serial.println("\n");

  50.   int chk = DHT11.read(DHT11PIN);

  51.   Serial.print("Read sensor: ");
  52.   switch (chk)
  53.   {
  54.     case 0: Serial.println("OK"); break;
  55.     case -1: Serial.println("Checksum error"); break;
  56.     case -2: Serial.println("Time out error"); break;
  57.     default: Serial.println("Unknown error"); break;
  58.   }

  59.   Serial.print("Humidity (%): ");
  60.   Serial.println((float)DHT11.humidity, 2);

  61.   Serial.print("Temperature (oC): ");
  62.   Serial.println((float)DHT11.temperature, 2);

  63.   Serial.print("Temperature (oF): ");
  64.   Serial.println(Fahrenheit(DHT11.temperature), 2);

  65.   Serial.print("Temperature (K): ");
  66.   Serial.println(Kelvin(DHT11.temperature), 2);

  67.   Serial.print("Dew Point (oC): ");
  68.   Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));

  69.   Serial.print("Dew PointFast (oC): ");
  70.   Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));

  71.   delay(2000);
  72. }
復制代碼




作者: eagler8    時間: 2019-6-13 20:30
未經(jīng)校準的串口輸出數(shù)據(jù)





作者: eagler8    時間: 2019-6-13 20:54


作者: eagler8    時間: 2019-6-13 20:54


作者: eagler8    時間: 2019-6-13 21:24


作者: eagler8    時間: 2019-6-13 21:24


作者: eagler8    時間: 2019-6-16 17:47
16 Light Sensor:串口顯示 A1 口光敏電阻采集的數(shù)值

  1. /*
  2. Eagler8實驗程序列表
  3. 亮度傳感器實驗
  4. 16 Light Sensor:串口顯示 A1 口光敏電阻采集的數(shù)值
  5. */

  6. void setup()
  7. {
  8.   Serial.begin(9600);
  9. }
  10. void loop()
  11. {
  12.       int val;
  13.       val=analogRead(1);   
  14.       Serial.println(val,DEC);   
  15.       delay(100);
  16. }
復制代碼




作者: eagler8    時間: 2019-6-16 20:07
光線的波形





作者: eagler8    時間: 2019-6-16 20:33


作者: eagler8    時間: 2019-6-16 20:34


作者: eagler8    時間: 2019-6-16 20:34


作者: eagler8    時間: 2019-6-17 09:56
17 Light_LED:A1 口光敏電阻控制 D13 LED 開關(guān)

  1. /*
  2. Eagler8實驗程序列表
  3. 17 Light_LED:A1 口光敏電阻控制 D13 LED 開關(guān)(感光比較靈敏,適合教學實驗及民用設備)
  4. */

  5. int sensorPin = 1;   
  6. int ledPin = 13;      
  7. int sensorValue = 0;  

  8. void setup()
  9. {
  10.     pinMode(ledPin, OUTPUT);   
  11. }

  12. void loop()
  13. {
  14.     sensorValue = analogRead(sensorPin);
  15.     if(sensorValue < 700)
  16.     {
  17.         digitalWrite(ledPin, HIGH);   
  18.     }
  19.     else digitalWrite(ledPin, LOW);
  20. }
復制代碼




作者: eagler8    時間: 2019-6-17 10:11


作者: eagler8    時間: 2019-6-17 10:21
18 Buzzer:D5 口無源蜂鳴器模擬救護車警笛


  1. /*
  2. Eagler8實驗程序列表
  3. 蜂鳴器實驗
  4. 18 Buzzer:D5 口無源蜂鳴器模擬救護車警笛(可發(fā)出簡單的音樂聲,音樂需要通過程序編寫)
  5. */

  6. int buzzer=5;
  7. void setup()
  8. {
  9.   pinMode(buzzer,OUTPUT);
  10.   }
  11. void loop()
  12. { unsigned char i,j;
  13. while(1)
  14. { for(i=0;i<200;i++)
  15. { digitalWrite(buzzer,HIGH);
  16. delay(1);
  17. digitalWrite(buzzer,LOW);
  18. delay(1);
  19. }
  20. for(i=0;i<100;i++)
  21. { digitalWrite(buzzer,HIGH);
  22. delay(2);
  23. digitalWrite(buzzer,LOW);
  24. delay(2);
  25. }
  26. }
  27. }
復制代碼




作者: eagler8    時間: 2019-6-17 11:10


作者: eagler8    時間: 2019-6-17 11:11


作者: 大貓8888    時間: 2019-6-23 22:09
高手,頂一個
作者: eagler8    時間: 2019-6-27 09:04
【Arduino】37種傳感器模塊系列實驗(專業(yè)資料+實驗代碼+圖形編程)
- Arduino 單片機論壇
http://www.raoushi.com/bbs/dpj-159232-1.html


作者: eagler8    時間: 2019-6-27 13:39
大貓8888 發(fā)表于 2019-6-23 22:09
高手,頂一個

謝謝鼓勵,不是高手,開始學習才二個多月de新手呢......
作者: eagler8    時間: 2019-6-29 06:09
Arduino程序代碼+Mind圖形編程+Linkboy仿真編程


后續(xù)想法是好好利用這塊擴展板子的基礎(chǔ)硬件資源,使用這板上的五個擴展端口,擴大實驗范圍,繼續(xù)采取Arduino程序代碼+Mind圖形編程+Linkboy仿真編程三者相結(jié)合的方式,互為補充,打好基礎(chǔ),促進理解。





作者: eagler8    時間: 2019-6-29 06:30
這個擴展板上的五個擴展端口分別是
J1\J2---2路Digital Port數(shù)字量端口(D7、D8)
J3------1路Analog Port模擬量端口(A3)
J4------1個雙向同步串行總線I2C接口(A4 SDA及A5 SCL,可接顯示屏等)
J5------1個TTL串口(D0,D1,可接入藍牙或WIFI模塊等)






作者: eagler8    時間: 2019-6-29 06:44
擴展板的五個擴展端口占用了Arduino uno的七個口,A3、A4、A5、D0、D1、D7和D8,另外D5口的蜂鳴器換成了有源的,便于實驗使用




作者: eagler8    時間: 2019-6-29 07:15
第10類 擴展實驗
19 模擬超聲波測距傳感器(探測類I2C接口)





作者: eagler8    時間: 2019-6-29 08:43
第一次做超聲波模塊的實驗,也不太理解,實驗的結(jié)果是這樣的,沒有探測輸出



作者: eagler8    時間: 2019-6-29 08:50
第10類 擴展實驗
19 模擬超聲波測距傳感器(探測類數(shù)字D7\D8接口)

后來接到了兩個數(shù)字端口,讀取的是超聲波模塊輸出的模擬量






作者: eagler8    時間: 2019-6-29 09:00
  1. /*
  2. Eagler8系列實驗程序列表
  3. 第10類 擴展實驗
  4. 19 模擬超聲波測距傳感器(探測類數(shù)字D7\D8接口)
  5. 項目:利用SR04超聲波傳感器進行測距,并用串口顯示測出的距離值
  6. 要點:初始化串口通信及連接SR04的引腳
  7.      檢測引腳上輸入的脈沖寬度,需要先設置為輸入狀態(tài)
  8.      產(chǎn)生一個10us的高脈沖去觸發(fā)TrigPin
  9.      檢測脈沖寬度,并計算出距離
  10. */

  11. const int TrigPin = 7;
  12. const int EchoPin = 8;
  13. float distance;

  14. void setup()
  15. {   
  16.         Serial.begin(9600);
  17.         pinMode(TrigPin, OUTPUT);
  18.         pinMode(EchoPin, INPUT);
  19.         Serial.println("Ultrasonic sensor:");
  20. }

  21. void loop()
  22. {
  23.         digitalWrite(TrigPin, LOW);
  24.         delayMicroseconds(2);
  25.         digitalWrite(TrigPin, HIGH);
  26.         delayMicroseconds(10);
  27.         digitalWrite(TrigPin, LOW);

  28.         distance = pulseIn(EchoPin, HIGH) / 58.00;
  29.         Serial.print(distance);
  30.         Serial.print("cm");
  31.         Serial.println();
  32.         delay(1000);
  33. }
復制代碼



作者: eagler8    時間: 2019-6-29 09:26


作者: eagler8    時間: 2019-6-29 10:03


作者: eagler8    時間: 2019-6-29 10:12
串口顯示距離,當探測距離小于50cm時,D5端有源蜂鳴器響,D12端紅燈亮,串口打印 "你好! 歡迎來參觀!”




作者: eagler8    時間: 2019-6-29 11:34


作者: eagler8    時間: 2019-6-29 11:37


作者: eagler8    時間: 2019-6-29 13:51


作者: liuzhili2009    時間: 2019-6-30 08:36
真不錯的開發(fā)板
作者: eagler8    時間: 2019-7-4 07:45
liuzhili2009 發(fā)表于 2019-6-30 08:36
真不錯的開發(fā)板

也是偶然發(fā)現(xiàn)的,做做實驗挺方便




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1