Start the Internet of Things (IoT)
with
NodeMCU
goo.gl/qgwn6y
ไมโครอคอนโทรลเลอร์ทั่วๆไป
อินพุต เอาต์พุตประมวลผล
หลักการระบบควบคุม
ป้อนกลับ
อินพุต เอาต์พุตประมวลผล
หลักการระบบควบคุม IoT
ป้อนกลับ
เชื่อมต่อ
Internet
ความหมายของ IoT : Internet of Thing
หมายถึง เทคโนโลยีที่ก่อให้เกิดการเชื่อมโยงกันของ สิ่งของ ผู้คน
ข้อมูลและการบริการเข้ากับเครือข่ายอินเทอร์เน็ต
สิ่งของ
ผู้คน
ข้อมูล
การบริการ
Cloud Internet
1. สิ่ งของ (Thing)
2. ตัวควบคุม, ตัวตรวจจับและอุปกรณ์ขับโหลด
3. ระบบเชื่อมต่ออินเทอร์เน็ต (แบบมีสายหรือไร้สาย)
4. ข้อมูล
5. ระบบจัดการฐานข้อมูล Cloud server
ส่วนประกอบของ IoT
แผนภาพเพื่อใช้งาน NodeMCU
NodeMCU-12E
ESP8266-12E (ESP8266EX)
MCU 32 BIT
หน่วยความจา 4 MByte (12E)
RAM ประมาณ 112 kByte
WIFI ในตัว
USB 2 Serial สาหรับดาวน์โหลด
ใช้ไฟเลี้ยงผ่านพอร์ต USB ได้
ดาวน์โหลดผ่าน USB
GPIO 16 ขา
ANALOG 1 ช่อง
GPIO กระแสสูงสุด 15mA
Analog รับแรงดัน 0-3.3V (มีวงจรแบ่งแรงดัน)
NODE MCU Pinout
2. AX-NodeMCU
วงจรของ AX-NodeMCU
ZX-LEDSWITCH ZX-LED3C
Piezo
HC-SR04
DHT11 BH1750 Solid State Relay
NodeMCU V2 กับ Arduino
จุดเปลี่ยนของ ESP8266 คือมีคนทาให้เขียนโปรแกรมด้วย
Arduino ได้
Arduino1.6.5
ต้นกาเนิด Arduino
www.arduino.cc
• คู่มืออ้างอิงการใช้งาน
• ตัวอย่างฮาร์ดแวร์
• จุดกาเนิด IDEA
• ที่ดาวน์โหลดโปรแกรม
• ที่ซักถามปัญหา
ข้อมูลอ้างอิงสาหรับเขียนโปรแกรม
• ชุดคาสั่ง
• ไลบรารี่
• ตัวแปร
• คาสงวน
โครงการ Opensource จาก Arduino
Arduino UNO ยอดฮิต
iDuino จาก inex
iDuino R3B จาก inex
Edit + Compile + Download
คอมไพเลอร์ Opensource
SOFTWARE
คอมไพเลอร์ OpenSource
ติดตั้งโปรแกรม
ประกอบด้วย
• ซอฟต์แวร์ Arduino 1.6.5
• ไลบรารี่ สาหรับอุปกรณ์พิเศษ
• ไดรเวอร์ USB
• Add on สาหรับ ESP8266
Arduino1.6.5r5_Setup151116.exe
ขั้นตอนการติดตั้ง
ติดตั้งโปรแกรมหลัก
ขั้นตอนการติดตั้ง
ติดตั้งไดรเวอร์ USB to Serial
ขั้นตอนการติดตั้ง
ติดตั้ง ESP8266 Addon
เชื่อมต่อ NodeMCU กับ PC
ใช้ไฟเลี้ยงจาก PC
LED ติดสว่าง
ไฟเลี้ยงจากภายนอก
ตรวจสอบการเชื่อมต่อ
เปิ ดโปรแกรม Arduino 1.6.5
เปิ ดโปรแกรม Arduino 1.6.5
LED ตาแหน่ง D0/16
void setup() {
pinMode(D0,OUTPUT);
}
void loop() {
digitalWrite(D0,1);
delay(500);
digitalWrite(D0,0);
delay(500);
}
ตรวจสอบไวยกรณ์
อัปโหลดโปรแกรม
Compile / Upload
Compile / Upload
void setup()
{
}
void loop()
{
}
สาหรับกาหนดค่า เกิดขึ้นครั้งเดียว
โปรแกรมหลักทางานต่อเนื่อง
START
ทางานใน Setup
ทางานใน Loop
รูปแบบ Arduino
กาหนดขาพอร์ตเป็นอินพุตหรือเอาต์พุต
pinMode(pin,Direction);
pinMode(D0,1); // กำหนดขำเป็นเอำต์พุต
pin = ตาแหน่งขา D0-D10
Direction = OUTPUT , 1 กาหนดขาเป็นเอาต์พุต
Direction = INPUT ,0 กาหนดขาเป็นอินพุต
Direction = INPUT_PULLUP , 2 กาหนดขาเป็น
อินพุต มีตัวต้านทานพูลอัพในตัว
รูปแบบ คาสั่ง digitalWrite
digitalWrite(pin,Logic);
pin = ตาแหน่งขา
Logic = HIGH , 1 เอาต์พุตลอจิก "1"
Logic = LOW , 0 เอาต์พุตลอจิก "0"
digitalWrite(D0,HIGH);
ตัวอย่าง
รูปแบบ คาสั่ง delay
delay(DelayTime);
DelayTime ค่าเวลาหน่วงหน่วยเป็นมิลลิวินาที
คาสั่งหน่วงเวลาค้างที่บรรทัดนี้นานเท่าค่า DelayTime
delay(2000);
ตัวอย่าง
ค้างที่นี่นาน 2 วินาที
ZX-LED
ZX-LED3CS
ต่อเป็นวงจรเพื่อ LED 4 ดวง
ไฟวิ่ง 4 ดวง แบบพื้นฐาน
void setup() {
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
}
void loop() {
digitalWrite(D0, 1);
digitalWrite(D1, 0);
digitalWrite(D2, 0);
digitalWrite(D3, 0);
delay(300);
digitalWrite(D0, 0);
digitalWrite(D1, 1);
digitalWrite(D2, 0);
digitalWrite(D3, 0);
delay(300);
digitalWrite(D0, 0);
digitalWrite(D1, 0);
digitalWrite(D2, 1);
digitalWrite(D3, 0);
delay(300);
digitalWrite(D0, 0);
digitalWrite(D1, 0);
digitalWrite(D2, 0);
digitalWrite(D3, 1);
delay(300);
}
คาสั่งตรวจสอบเงื่อนไข for
รูปแบบ
for (ค่าเริ่มต้น; เงื่อนไข ;ส่วนเพิ่มค่า)
{
ทาคาสั่ง จนครบเงื่อนไข;
}
int pins[]={D0,D1,D2,D3};
int i;
void setup(){
for(i=0;i<4;i++){
pinMode(pins[i],OUTPUT);
}
}
void loop(){
for(i=0;i<4;i++){
digitalWrite(pins[i],HIGH);
delay(300);
digitalWrite(pins[i],LOW);
}
}
ไฟวิ่ง 4 ดวง แบบปรับปรุง
int pins[]={D0,D1,D2,D3};
int i;
void setup(){
for(i=0;i<4;i++){pinMode(pins[i],1);}
}
void loop(){
for(i=0;i<4;i++){
digitalWrite(pins[i],1);delay(200);
}
for(i=0;i<4;i++){
digitalWrite(pins[i],0);delay(200);
}
}
ไฟวิ่ง 4 ดวง แบบแถบ
ลาโพงเปียโซ
• ใช้ลาโพงเปียโซ มีอิมพีแดนซ์ 32W
• มีค่าความถี่ย่าน 300Hz ถึง 3000 Hz
void setup() {
pinMode(D7,OUTPUT);
}
void loop() {
digitalWrite(D7,1);
delayMicroseconds(300);
digitalWrite(D7,0);
delayMicroseconds(300);
}
ทดสอบสร้างเสียงอย่างง่าย
ส่งค่าออกเอาต์พุตแบบ อะนาลอก
analogWrite(pin,PWM);
pin = ตาแหน่งขา D0-D10
PWM = ค่า DutyCycle 0-1023 แทน 0-100 %
ความถี่ PWM ประมาณ 1kHz
analogWriteFreq(Freq);
ปรับค่าความถี่
Freq = 18-60,000 Hz
PWM : Pulse Width Modulator
analogWrite(pin,DutyCycle);
ความถี่ Fix 1kHz
NodeMCU PWM ทุกขา
ต่อสาหรับ Test คาสั่ง analogWrite
int i;
void setup(){
Serial.begin(115200);
analogWrite(D7,512);
}
void loop(){
for (i=100;i<20000;i++){
analogWriteFreq(i);
Serial.println(i);
delay(100);
}
}
ทดสอบเปลี่ยนความถี่
int i;
void setup(){
Serial.begin(115200);
analogWrite(D6,127);
}
void loop(){
for (i=0;i<255;i++){
analogWrite(D6,i);
Serial.println(i);
delay(10);
}
}
ทดสอบเปลี่ยนดิวตี้ไซเกิล
int i;
void setup(){}
void loop(){
for(i=0;i<=255;i+=5){
analogWrite(D6,i);
delay(10);
}
for(i=255;i>0;i-=5){
analogWrite(D6,i);
delay(10);
}
}
ไฟวูบที่ขา D6
สวิตช์ ZX-Switch01
กาหนดขาพอร์ตเป็นอินพุตหรือเอาต์พุต
pinMode(pin,Direction);
pinMode(D0,1); // กำหนดขำเป็นเอำต์พุต
pin = ตาแหน่งขา D0-D10
Direction = OUTPUT , 1 กาหนดขาเป็นเอาต์พุต
Direction = INPUT ,0 กาหนดขาเป็นอินพุต
Direction = INPUT_PULLUP , 2 กาหนดขาเป็น
อินพุต มีตัวต้านทานพูลอัพในตัว
x=digitalRead(pin);
x = ตัวแปร Boolean ที่นามารับค่า
pin = ขาอินพุตดิจิตอล
รูปแบบ คาสั่ง digitalRead
x=digitalRead(D4);
if (x==0){
digitalWrite(D0,HIGH)
}
ตัวอย่าง
เชื่อมต่อ LED และ Switch
void setup(){
pinMode(D4,INPUT);
pinMode(D1,OUTPUT);
}
void loop(){
if(digitalRead(D4)){
digitalWrite(D5,HIGH);
}
else{
digitalWrite(D5,LOW);
}
}
ตัวอย่าง digitalRead()
คาสั่งตรวจสอบเงื่อนไข if-else
รูปแบบ
if (เงื่อนไข)
{
คาสั่ง1 ทาเมื่อเงื่อนไขเป็นจริง;
}
else
{
คาสั่ง2 ทาเมื่อเงื่อนไขเป็นเท็จ;
}
สวิตช์ กดติด/กดดับ (ใช้ Delay)
boolean st=0;
void setup(){
pinMode(D5,INPUT);
pinMode(D1,OUTPUT);
}
void loop(){
if(!digitalRead(D5)){
delay(200);
if(st){
digitalWrite(D1,HIGH);st=0;
}
else{
digitalWrite(D1,LOW);st=1;
}
}
}
คาสั่งตรวจสอบเงื่อนไข while
รูปแบบ
while(เงื่อนไข)
{
ทาคาสั่งจนเงื่อนไขเป็นเท็จ;
}
while(1); // โปรแกรมค้างที่บันทัดคาสั่งนี้ตลอดกาล
while(1)
{
คาสั่งที่ 1;
คาสั่งที่ 2;
if(เงื่อนไขเป้าหมาย)
{
break;
}
}
ปกติโปรแกรมจะวนทาคาสั่ง1 และ 2
รวมถึงตรวจสอบเงื่อนไข if อย่าง
ต่อเนื่อง จนกระทั่งพบว่า เงี่อนไข
เป้าหมายเป็นจริง จึงจะหลุดออก
จากลูป while ด้วยคาสั่ง break
การใช้งาน While หลุดออกด้วย break
byte
0-65535 (unsigned int)word
0-255 (unsigned char)
0-1boolean True False
-32768 ถึง 32767int
-128 ถึง 127char
-3.4 x 1038 ถึง 3.4 x 1038float
หาข้อมูลเพิ่มเติมจาก reference
ตัวแปรที่ใช้ใน Arduino
สวิตช์ กดติด/กดดับ (ใช้ while)
boolean st=0;
void setup(){
pinMode(D5,INPUT);
pinMode(D1,OUTPUT);
}
void loop(){
if(!digitalRead(D5)){
while(!digitalRead(D5));
delay(200);
if(st){
digitalWrite(D1,HIGH);st=0;
}
else{
digitalWrite(D1,LOW);st=1;
}
}
}
การรับส่งข้อมูล Serial กับคอมพิวเตอร์
Serial.print(78, BIN) gives "1001110"
Serial.print(78, OCT) gives "116"
Serial.print(78, DEC) gives "78"
Serial.print(78, HEX) gives "4E"
Serial.println(1.23456, 0) gives "1"
Serial.println(1.23456, 2) gives "1.23"
Serial.println(1.23456, 4) gives "1.2346");
Serial.begin(BAUD) เริ่มต้นใช้งานการสื่อสาร
BAUD คือบอดเรตที่ใช้ในการสื่อสาร
Serial.write(1Byte) ส่งข้อมูล 1 ไบต์,หรือข้อความง่ายๆ
Serial.print(BAUD) ส่งข้อความพร้อมพารามิเตอร์ต่างๆ
Serial.println(BAUD) ส่งข้อความพร้อมพารามิเตอร์ต่างๆ และขึ้นบรรทัดใหม่
สวิตช์ กดติด/กดดับ (ใช้ while)
boolean st=0;
void setup(){
Serial.begin(115200);
pinMode(D5,INPUT);
pinMode(D1,OUTPUT);
Serial.println("Hello");
}
void loop(){
Serial.println("x");
delay(200);
if(!digitalRead(D5)){
while(!digitalRead(D5));
if(st){
digitalWrite(D1,HIGH);st=0;
}
else{
digitalWrite(D1,LOW);st=1;
}
}
}
ฟังก์ชั่น millis()
millis จะเพิ่มค่าขึ้นทีละ 1 ทุก ๆ 1 มิลลิวินาที
millis จะทางานอยู่เบื้องหลังด้วย Interrupt Timer
millis ใช้ตัวแปร Long ในการเก็บค่า (4 ไบต์)
4,294,967,296 มิลลิวินาที ก่อนเคลียร์เป็น 0
int interval1,interval2;
bool S1=0,S2=0,S3=0;
void setup() {
pinMode(D0,OUTPUT);
pinMode(D4,OUTPUT);
interval1=millis();
interval2=millis();
}
void loop() {
if (millis()>interval1+350){
interval1=millis();
if(S1){digitalWrite(D0,HIGH);S1=0;}
else{digitalWrite(D0,LOW);S1=1;}
}
if (millis()>interval2+400){
interval2=millis();
if(S2){digitalWrite(D4,HIGH);S2=0;}
else{digitalWrite(D4,LOW);S2=1;}
}
}
ตัวอย่างการใช้ millis()
I2C-LCD16x2
PCF8574 = 0x27
PCF8574A = 0x3F
ไอซี PCF8574 และ PCF8574A
เชื่อมต่อเข้ากับบอร์ด AX-NodeMCU
ขาพอร์ต D1/GPIO5 เป็นขาสัญญาณ SCL
ขาพอร์ต D2/GPIO4 เป็นขาสัญญาณ SDA
ติดตั้งไลบรารี่
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/archive/master.zip
ดาวน์โหลดไลบรารี่จาก
ติดตั้งที่
//SCL as D1/GPIO5
//SCA as D2/GPIO4
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Initial I2C-LCD
// Address is 0x27 (for PCF8574) or 0x3F (for PCF8574A)
// Type 16 characters 2 lines
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup() {
lcd.begin(); // Start
lcd.backlight(); // Enable LED backlight
lcd.setCursor(0, 0); // Set home cursor
lcd.print("Line 1 Hello "); // Display message on line 1 (upper)
lcd.setCursor(3, 1); // Set new position
lcd.print("Line 2 Hello "); // Display message on line 2 (lower)
}
void loop()
{}
ทดสอบแสดงผล
Line 1 Hello
Line 2 Hello
สรุปชุดคาสั่ง I2C LCD
Print()
begin();
clear();
home();
noDisplay();
display();
noBlink();
blink();
noCursor();
cursor();
scrollDisplayLeft();
scrollDisplayRight();
printLeft();
printRight();
leftToRight();
rightToLeft();
shiftIncrement();
shiftDecrement();
noBacklight();
backlight();
autoscroll();
noAutoscroll();
createChar(uint8_t,
uint8_t[]);
setCursor(uint8_t, uint8_t);
write(uint8_t);
command(uint8_t);
x=analogRead(pin);
x = ตัวแปร int เพื่อนามารับค่า
pin = ขาอินพุตอะนาลอก A0 เท่านั้น
การอ่านค่าอะนาลอก
ตัวอย่างอ่านค่า analog แสดงที่ LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin();
lcd.noBacklight();delay(2000);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("AnalogRead A0");
}
void loop(){
lcd.setCursor(3, 1);
lcd.print(analogRead(A0));
lcd.print(" ");
delay(500);
}
การใช้งานคาสั่ง map
map(value, fromLow, fromHigh, toLow, toHigh)
y = map(x, 1, 50, 50, 1);
ตัวอย่าง
y = map(x, 1, 50, 50, -100);
ตัวอย่าง
ตัวอย่างอ่านค่าพร้อมใช้คาสั่ง map
int x,y;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("AnalogRead 0-100");
}
void loop(){
lcd.setCursor(3, 1);
x=analogRead(A0);
y=map(x,0,1024,0,100);
lcd.print(y);
lcd.print(" ");
delay(500);
}
โซลิดสเตตรีเลย์
การเชื่อมต่อโซลิดสเตตรีเลย์
บอร์ด ZX-SSR01
การขับโหลด 220V ด้วย ZX-SSR01
ZX-SSR01 กับ AX-NodeMCU
ระยะทาง (เซนติเมตร) = (ระยะเวลาในหน่วยไมโครวินาที / 29) / 2
วัดระยะทางด้วย HC-SR04
ต่อวงจรแบ่งแรงดัน จาก 5 V ลดเหลือ 3.3V
การเชื่อมต่อโมดูล HC-SR04
D6/12
D5/14
การเชื่อมต่อวงจรกับ NodeMCU
ระยะทาง (เซนติเมตร) = (ระยะเวลาในหน่วยไมโครวินาที / 29) / 2
ระยะทาง (นิ้ ว) = (ระยะเวลาในหน่วยไมโครวินาที / 74) / 2
ZX-DHT11 วัดความชื้นและอุณหภูมิ
วัดความชื้นสัมพัทธ์
20 ถึง 80%RH
ควำมผิดพลำด 5%RH
ควำมละเอียด 1 %
ขนำดข้อมูล 8 บิต
วัดอุณหภูมิ
0 ถึ ง 50 องศำเซลเซียส
ควำมผิดพลำด 2 องศำเซลเซียส
ควำมละเอียด 1 องศำเซลเซียส
ขนำดของข้อมูล 8 บิต
การเชื่อมต่อ DHT-11 กับ AX-NodeMCU
BH1750 บอร์ดวัดความเข้มแสงติดต่อผ่านบัส
I2C
ย่านวัดความเข้มแสง 1 ถึ ง 65,535 ลักซ์ มีค่าความผิดพลาด 20%
ทนต่อการรบกวนจากแสงอินฟราเรด
ต่อพร้อมกันได้ 2 ตัวกาหนดผ่านขา ADDR
BH1750 บอร์ดวัดความเข้มแสงติดต่อผ่านบัส
I2C
การเชื่อมต่อ BH1750 กับ AX-NodeMCU
รูปแบบการอ่านค่า
attachInterrupt(pin, ISR, mode)
pin ตาแหน่งขาที่รับอินเตอร์รัปต์
ISR ตาแหน่งฟังก์ชั่นที่เรียกบริการ Interrupt
mode รูปแบบการกระตุ้น Interrupt
LOW กระตุ้นเมื่อขาเป็น 0
CHANGE กระตุ้นเมื่อมีการเปลี่ยนค่า
RISING กระตุ้นที่ขอบขาขึ้น
FALLING กระตุ้นที่ขอบขาลง
void setup() {
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D5, INPUT);
pinMode(D4, INPUT);
attachInterrupt(D5,pinD5_ISR,CHANGE);
attachInterrupt(D4,pinD4_ISR,CHANGE);
}
void loop() {
digitalWrite(D3,1);delay(100);
digitalWrite(D3,0);delay(100);
}
void pinD5_ISR() {
digitalWrite(D2, HIGH);
}
void pinD4_ISR() {
digitalWrite(D2, LOW);
}
ตัวอย่างการใช้งาน Interrupt
จอแสดงผล OLED 128x64 จุด
• จอแสดงผล 0.96 นิ้ว
• ใช้ชิปเบอร์ SSD1306
• ความละเอียด 128 x 64 จุด
• ให้แสงสีขาวหรือฟ้า
• ติดต่อผ่านระบบบัส I2C
• ไฟเลี้ยง +3.3V 20mA
• มีวงจรทวีแรงดัน +4.5V เพื่อขับ LED
ผนวกไลบรารี่เพื่อติดต่อ GLCD
เชื่อมต่อ Internet แล้วเข้าที่ Manage Libraries...
Adafruit_GFX.h
Library Manager ค้นหา Adafruit_GFX.h
พิมพ์ค้นหา Arduino GFX เจอแล้วกด Install
ดาวน์โหลดไฟล์ไลบรารี่ จาก github
Adafruit_SSD1306
https://github.com/adafruit/Adafruit_SSD1306/archive/master.zip
C:Arduino1.6.5r5libraries
ปรับแก้ไฟล์ Adafruit_SSD1306.h
ยกเลิก Comment บรรทัด 69 Comment 70 แทน
จากนั้นบันทึกไฟล์
ฟังก์ชั่นใช้งาน OLED
OLED.begin(MODE,ADDR) กาหนดค่าเตรียมความพร้อม
MODE ชิปที่ใช้เลือกเป็น SSD1306_SWITCHCAPVCC
ADDR แอดเดรสของโมดูล OLED ตัวนี้คือ 0x3C
clearDisplay() เคลียร์หน้าจอ
setCursor(x,y)
ระบุตาแหน่งพิกัด X,Y ที่จะแสดง
X พิกัดแนวนอน 0-127
Y พิกัดแนวตั้ง 0-63
ฟังก์ชั่นใช้งาน OLED
setTextSize(s) กาหนดขนาดตัวอักษร
S ขนาดตัวอักษรเป็นจานวนเท่า 1,2,3
กาหนดขนาด 1 ใช้พื้นที่ 6x8 พิกเซล
display() เริ่มแสดงข้อความที่กาหนดไว้ก่อนหน้า
drawBitmap ( x,y,*bitmap,w,h,color)
แสดงจุดภาพที่เก็บอยู่ในรูปแบบอาเรย์ *bitmap
X พิกัดแนวนอน 0-127
Y พิกัดแนวตั้ง 0-63
w ความกว้างภาพ
h ความสูงภาพ
color สีของภาพ
ฟังก์ชั่นใช้งาน OLED
println() สั่งพิมพ์ข้อความตัวอักษรขึ้นบรรทัดใหม่
setTextColor(color)
แสดงสีของตัวอักษร และแสดงพื้นหลัง
color สีของตัวอักษรเป็นได้แค่ WHITE หรือ BLACK
สั่งพิมพ์ข้อความตัวอักษรprint()
โดยข้อความแสดงได้ทั้งตัวเลขและตัวอักษร
setTextColor(color,background)
background สีของพื้นหลังตัวอักษรเป็นได้แค่ WHITE หรือ BLACK
ลักษณะการเชื่อมต่อ
ตัวอย่างการแสดงผลหน้าจอ
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//initialize
}
void loop(){
OLED.clearDisplay();
OLED.setTextColor(WHITE);
OLED.setCursor(0, 0);
OLED.setTextSize(1);
OLED.println("Innovative");
OLED.setCursor(0, 10);
OLED.setTextSize(2);
OLED.println("Experiment");
OLED.display(); //
}
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 OLED(-1);
int x=0;
void setup() {
OLED.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize
}
void loop(){
OLED.clearDisplay();
OLED.setTextColor(WHITE);
OLED.setCursor(0, 0);
OLED.setTextSize(3);
OLED.println("COUNT");
OLED.setCursor(0,27);
OLED.println(x,DEC);
OLED.display(); //
delay(300);
x++;
}
ตัวอย่างการแสดงผลตัวเลข
#include <ESP8266WiFi.h>
void setup() {
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
//WiFi.mode(WIFI_AP);
//WiFi.mode(WIFI_AP_STA);
WiFi.printDiag(Serial);
}
void loop() {}
กฤษดา ใจเย็น
บริษัท อินโนเวตีฟ เอ็กเพอริเมนต์ จากัด
108 ซอยสุขุมวิท 101/2 ถ.สุขุมวิท
แขวงบางนา เขตบางนา กรุงเทพฯ 10260
โทรศัพท์ 027477001-4 โทรสำร 02-7477005
Email : kritsada@inex.co.th
www.inex.co.th
facebook.com/innovativeexperiment
KRITSADA JAIYEN

การใช้งาน NodeMCU เบื้องต้น