01TUNIOT入門課程
(2017/02/01 大年初五)
題目一:點亮NodeMCU ESP8266旁的LED燈(integrated LED)
題目二:點亮接在NodeMCU上的三色LED燈
題目三:讀取光敏電阻的值,並顯示在序列埠監控視窗
題目四:按鍵的使用
題目五:LCD顯示器的使用
題目六:紅外線動作感測器(PIR Motion Sensor) 或稱人體紅外線感測器的使用
題目七:超音波測距模組的使用
題目八:伺服馬達的使用
題目九:OLED的使用
進入TUNIOT網站:http://easycoding.tn/tuniot/demos/code/
官方教學影片:https://www.youtube.com/playlist?list=PLfPtpZzK2Z_Qy2ZbbzvWa58cKKOisMUZ1
認識一下 NodeMCU 的腳位圖
題目一:點亮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() { }