01TUNIOT入門課程


(2017/02/01 大年初五)

題目一:點亮NodeMCU ESP8266旁的LED燈(integrated LED)
題目二:點亮接在NodeMCU上的三色LED燈
題目三:讀取光敏電阻的值,並顯示在序列埠監控視窗
題目四:按鍵的使用 
題目五:LCD顯示器的使用
題目六:紅外線動作感測器(PIR Motion Sensor) 或稱人體紅外線感測器的使用
題目七:超音波測距模組的使用 
題目八:伺服馬達的使用 
題目九:OLED的使用 


題目一:點亮NodeMCU ESP8266旁的LED燈(integrated LED)
  • 利用拖曳的方法,完成如下的程式(檔案於附件)(integrated LED在HIGH的時侯是暗燈、在LOW的時侯是亮燈)

  • 開啟此一Arduino檔案,會出現此一提示視窗

  • 利用Arduino IDE軟體,開啟此程式,並選擇正確的板子(NodeMCU) 及序列埠


    註:教學影片中板子的Upload Speed選921600

  • 上傳(燒錄)程式

  • NodeMCU的integrated LED一閃一閃

    除了integrated LED可用外,下方還有一顆D2的LED燈可用

  • integrated LED = D4 = GPIO2,且integrated LED 與 D4 亮燈相反,當D4=1時integrated LED不亮,當D4=0時integrated LED亮
    (integrated LED在HIGH的時侯是暗燈、在LOW的時侯是亮燈)

題目二:點亮接在NodeMCU上的三色LED燈
  • 三色LED燈的三腳分別接於 D0、D1、D2 ,負極接於GND,如下圖:


  • 利用拖曳的方法,完成如下的程式 (檔案於附件)



題目三:讀取光敏電阻的值,並顯示在序列埠監控視窗
  • 光敏電阻的S針腳接在A0上,+接在3.3V ,-接在GND上,如下圖:


  • 利用拖曳的方法,完成如下的程式 (檔案於附件)

  • 測試結果:


題目四:按鍵的使用
  • 將按鍵模組的S針腳接在D2上,+接在3.3V ,-接在GND上,如下圖:
     
  • 利用拖曳的方法,完成如下的程式 (檔案於附件)

    註:當按鍵未按下時,其值為1;當按下時,其值為0

題目五:LCD顯示器的使用
  • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1,如下圖:

    註:I2C 1602 LCD顯示器的VCC要接到5V,如果接到3.3V會電力不足,顯示不清楚

  • 先到官網找到 Arduino Liquid cristal I2C library,並下載回來

    註:另外一個檔案 I2C scanner sketch 是用來偵測此LCD的位址,因為我已知我的LCD Address是 0x3F,所以沒有去下載使用!

  • 我的習慣作法是將此檔解壓縮(Arduino-LiquidCrystal-I2C-library-master.zip)解壓縮,再放到Arduino/libraries的資料夾下

  • 也可以使用「匯入程式庫」的方式來匯入



  • 先小試一下,在LCD上顯示Hello World,, 利用拖曳的方法,完成如下的程式 (檔案於附件)


  • 接下來再測試一下,在LCD上顯示光敏電阻的值



題目六:紅外線動作感測器(PIR Motion Sensor) 或稱人體紅外線感測器的使用
  • 紅外線動作感測器(PIR Motion Sensor)


  • 接線說明:
    • 紅外線動作感測器的OUTPUT接在D3上,POWER接在3.3V ,GND接在GND上
    • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1
    • LED的正極接D4、負極接GND

  •  利用拖曳的方法,完成如下的程式 (檔案於附件)


  • 測試結果



題目七:超音波測距模組的使用,將距離顯示在LCD上
  • 接線說明:
    • 將超音波測距模組VCC接到(NodeMCU)的3.3V;GND接GND;Trig接D5;Echo接D6
    • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1


  •  利用拖曳的方法,完成如下的程式 (檔案於附件)



題目八:伺服馬達的使用
  • 接線說明:
    • 伺服馬達SG90的S針腳接在D4上,+接在3.3V ,-接在GND上 (註:+接在3.3V,伺服馬達電力不足會常罷工,所以還是要接在5V會比較好) 
    • I2C 1602 LCD顯示器的GND接到(NodeMCU)的GND;VCC接到5V;SDA接到D2;SCL接到D1

  • 利用拖曳的方法,完成如下的程式 (檔案於附件)

  • 轉成Arduino語言,如下
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    #include <Servo.h>
    
    LiquidCrystal_I2C lcd(0x3F,16,2);
    
    Servo servo_2;
    
    void setup()
    {
      lcd.begin();
    
      servo_2.attach(2);
    
    
    }
    
    
    void loop()
    {
    
        servo_2.write((random(30,150)));
        delay(100);
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Angle :");
        lcd.setCursor(0, 1);
        lcd.print(servo_2.read());
        delay(3000);
    
    }



題目九:OLED的使用 
  • OLED顯示器的GND接到(NodeMCU)的GND;VCC接到3.3V;SCL接到D1;SDA接到D2,如下圖:




  • 先到官網(http://easycoding.tn/index.php/resources/)找到 esp8266-oled-ssd1306 library,並下載回來

    註:另外一個檔案 I2C scanner sketch 是用來偵測此OLED的位址,測得我的OLED Address是 0x3C!


  • 使用「匯入程式庫」的方式來匯入

    結果如下:



  • 官網範例測試

    ArialMT_Plain_10表字體大小

  • #include <Wire.h>
    #include "SSD1306.h"
    
    SSD1306  display(0x3C, 4, 5);
    
    void setup()
    {
      Serial.begin(9600);
    display.init();
    
        display.setTextAlignment(TEXT_ALIGN_LEFT);
      display.setFont(ArialMT_Plain_10);
      display.drawString(0, 0, "Hello World!");
      display.display();
      delay(3000);
      display.setTextAlignment(TEXT_ALIGN_LEFT);
      display.setFont(ArialMT_Plain_16);
      display.drawString(0, 12, "OLED");
      display.display();
      delay(3000);
      display.setTextAlignment(TEXT_ALIGN_LEFT);
      display.setFont(ArialMT_Plain_24);
      display.drawString(0, 26, "is cool!");
      display.display();
    
    }
    
    
    void loop()
    {
    
    
    }






ċ
TUNIOT-09.xml
(2k)
黃文玉,
2017年3月12日 下午10:47
ċ
TUNIOT__01.ino
(0k)
黃文玉,
2017年1月31日 下午11:20
ċ
TUNIOT__03.ino
(0k)
黃文玉,
2017年2月1日 上午7:07
ċ
TUNIOT__05-02.ino
(0k)
黃文玉,
2017年2月1日 上午7:07
ċ
TUNIOT__05.ino
(0k)
黃文玉,
2017年2月1日 上午7:07
ċ
TUNIOT__06.ino
(0k)
黃文玉,
2017年2月1日 上午7:08
ċ
TUNIOT__2.ino
(0k)
黃文玉,
2017年1月31日 下午11:21
Comments