nodemcu esp8266 analogRead analogWrite
VIDEO d in: Technology
1. Start the Internet of Things (IoT) with NodeMCU goo.gl/qgwn6y
2. ไมโครอคอนโทรลเลอร์ทั่วๆไป
3. อินพุต เอาต์พุตประมวลผล หลักการระบบควบคุม ป้อนกลับ
4. อินพุต เอาต์พุตประมวลผล หลักการระบบควบคุม IoT ป้อนกลับ เชื่อมต่อ Internet
5. ความหมายของ IoT : Internet of Thing หมายถึง เทคโนโลยีที่ก่อให้เกิดการเชื่อมโยงกันของ สิ่งของ ผู้คน ข้อมูลและการบริการเข้ากับเครือข่ายอินเทอร์เน็ต สิ่งของ ผู้คน ข้อมูล การบริการ Cloud Internet
6. 1. สิ่ งของ (Thing) 2. ตัวควบคุม, ตัวตรวจจับและอุปกรณ์ขับโหลด 3. ระบบเชื่อมต่ออินเทอร์เน็ต (แบบมีสายหรือไร้สาย) 4. ข้อมูล 5. ระบบจัดการฐานข้อมูล Cloud server ส่วนประกอบของ IoT
7. แผนภาพเพื่อใช้งาน NodeMCU
8. NodeMCU-12E ESP8266-12E (ESP8266EX) MCU 32 BIT หน่วยความจา 4 MByte (12E) RAM ประมาณ 112 kByte WIFI ในตัว USB 2 Serial สาหรับดาวน์โหลด ใช้ไฟเลี้ยงผ่านพอร์ต USB ได้ ดาวน์โหลดผ่าน USB GPIO 16 ขา ANALOG 1 ช่อง
9. GPIO กระแสสูงสุด 15mA Analog รับแรงดัน 0-3.3V (มีวงจรแบ่งแรงดัน) NODE MCU Pinout
10. 2. AX-NodeMCU
11. วงจรของ AX-NodeMCU
12. ZX-LEDSWITCH ZX-LED3C Piezo HC-SR04 DHT11 BH1750 Solid State Relay
13. NodeMCU V2 กับ Arduino จุดเปลี่ยนของ ESP8266 คือมีคนทาให้เขียนโปรแกรมด้วย Arduino ได้ Arduino1.6.5
14. ต้นกาเนิด Arduino www.arduino.cc • คู่มืออ้างอิงการใช้งาน • ตัวอย่างฮาร์ดแวร์ • จุดกาเนิด IDEA • ที่ดาวน์โหลดโปรแกรม • ที่ซักถามปัญหา
15. ข้อมูลอ้างอิงสาหรับเขียนโปรแกรม • ชุดคาสั่ง • ไลบรารี่ • ตัวแปร • คาสงวน
16. โครงการ Opensource จาก Arduino Arduino UNO ยอดฮิต iDuino จาก inex iDuino R3B จาก inex
17. Edit + Compile + Download คอมไพเลอร์ Opensource SOFTWARE คอมไพเลอร์ OpenSource
18. ติดตั้งโปรแกรม ประกอบด้วย • ซอฟต์แวร์ Arduino 1.6.5 • ไลบรารี่ สาหรับอุปกรณ์พิเศษ • ไดรเวอร์ USB • Add on สาหรับ ESP8266 Arduino1.6.5r5_Setup151116.exe
19. ขั้นตอนการติดตั้ง ติดตั้งโปรแกรมหลัก
20. ขั้นตอนการติดตั้ง ติดตั้งไดรเวอร์ USB to Serial
21. ขั้นตอนการติดตั้ง ติดตั้ง ESP8266 Addon
22. เชื่อมต่อ NodeMCU กับ PC ใช้ไฟเลี้ยงจาก PC LED ติดสว่าง ไฟเลี้ยงจากภายนอก
23. ตรวจสอบการเชื่อมต่อ
24. เปิ ดโปรแกรม Arduino 1.6.5
25. เปิ ดโปรแกรม Arduino 1.6.5 LED ตาแหน่ง D0/16 void setup() { pinMode(D0,OUTPUT); } void loop() { digitalWrite(D0,1); delay(500); digitalWrite(D0,0); delay(500); }
26. ตรวจสอบไวยกรณ์ อัปโหลดโปรแกรม Compile / Upload
27. Compile / Upload
28. void setup() { } void loop() { } สาหรับกาหนดค่า เกิดขึ้นครั้งเดียว โปรแกรมหลักทางานต่อเนื่อง START ทางานใน Setup ทางานใน Loop รูปแบบ Arduino
29. กาหนดขาพอร์ตเป็นอินพุตหรือเอาต์พุต pinMode(pin,Direction); pinMode(D0,1); // กำหนดขำเป็นเอำต์พุต pin = ตาแหน่งขา D0-D10 Direction = OUTPUT , 1 กาหนดขาเป็นเอาต์พุต Direction = INPUT ,0 กาหนดขาเป็นอินพุต Direction = INPUT_PULLUP , 2 กาหนดขาเป็น อินพุต มีตัวต้านทานพูลอัพในตัว
30. รูปแบบ คาสั่ง digitalWrite digitalWrite(pin,Logic); pin = ตาแหน่งขา Logic = HIGH , 1 เอาต์พุตลอจิก "1" Logic = LOW , 0 เอาต์พุตลอจิก "0" digitalWrite(D0,HIGH); ตัวอย่าง
31. รูปแบบ คาสั่ง delay delay(DelayTime); DelayTime ค่าเวลาหน่วงหน่วยเป็นมิลลิวินาที คาสั่งหน่วงเวลาค้างที่บรรทัดนี้นานเท่าค่า DelayTime delay(2000); ตัวอย่าง ค้างที่นี่นาน 2 วินาที
32. ZX-LED
33. ZX-LED3CS
34. ต่อเป็นวงจรเพื่อ LED 4 ดวง
35. ไฟวิ่ง 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); }
36. คาสั่งตรวจสอบเงื่อนไข for รูปแบบ for (ค่าเริ่มต้น; เงื่อนไข ;ส่วนเพิ่มค่า) { ทาคาสั่ง จนครบเงื่อนไข; }
37. 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 ดวง แบบปรับปรุง
38. 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 ดวง แบบแถบ
39. ลาโพงเปียโซ • ใช้ลาโพงเปียโซ มีอิมพีแดนซ์ 32W • มีค่าความถี่ย่าน 300Hz ถึง 3000 Hz
40. void setup() { pinMode(D7,OUTPUT); } void loop() { digitalWrite(D7,1); delayMicroseconds(300); digitalWrite(D7,0); delayMicroseconds(300); } ทดสอบสร้างเสียงอย่างง่าย
41. ส่งค่าออกเอาต์พุตแบบ อะนาลอก analogWrite(pin,PWM); pin = ตาแหน่งขา D0-D10 PWM = ค่า DutyCycle 0-1023 แทน 0-100 % ความถี่ PWM ประมาณ 1kHz analogWriteFreq(Freq); ปรับค่าความถี่ Freq = 18-60,000 Hz
42. PWM : Pulse Width Modulator analogWrite(pin,DutyCycle); ความถี่ Fix 1kHz NodeMCU PWM ทุกขา
43. ต่อสาหรับ Test คาสั่ง analogWrite
44. 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); } } ทดสอบเปลี่ยนความถี่
45. 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); } } ทดสอบเปลี่ยนดิวตี้ไซเกิล
46. 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
47. สวิตช์ ZX-Switch01
48. กาหนดขาพอร์ตเป็นอินพุตหรือเอาต์พุต pinMode(pin,Direction); pinMode(D0,1); // กำหนดขำเป็นเอำต์พุต pin = ตาแหน่งขา D0-D10 Direction = OUTPUT , 1 กาหนดขาเป็นเอาต์พุต Direction = INPUT ,0 กาหนดขาเป็นอินพุต Direction = INPUT_PULLUP , 2 กาหนดขาเป็น อินพุต มีตัวต้านทานพูลอัพในตัว
49. x=digitalRead(pin); x = ตัวแปร Boolean ที่นามารับค่า pin = ขาอินพุตดิจิตอล รูปแบบ คาสั่ง digitalRead x=digitalRead(D4); if (x==0){ digitalWrite(D0,HIGH) } ตัวอย่าง
50. เชื่อมต่อ LED และ Switch
51. void setup(){ pinMode(D4,INPUT); pinMode(D1,OUTPUT); } void loop(){ if(digitalRead(D4)){ digitalWrite(D5,HIGH); } else{ digitalWrite(D5,LOW); } } ตัวอย่าง digitalRead()
52. คาสั่งตรวจสอบเงื่อนไข if-else รูปแบบ if (เงื่อนไข) { คาสั่ง1 ทาเมื่อเงื่อนไขเป็นจริง; } else { คาสั่ง2 ทาเมื่อเงื่อนไขเป็นเท็จ; }
53. สวิตช์ กดติด/กดดับ (ใช้ 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; } } }
54. คาสั่งตรวจสอบเงื่อนไข while รูปแบบ while(เงื่อนไข) { ทาคาสั่งจนเงื่อนไขเป็นเท็จ; }
55. while(1); // โปรแกรมค้างที่บันทัดคาสั่งนี้ตลอดกาล while(1) { คาสั่งที่ 1; คาสั่งที่ 2; if(เงื่อนไขเป้าหมาย) { break; } } ปกติโปรแกรมจะวนทาคาสั่ง1 และ 2 รวมถึงตรวจสอบเงื่อนไข if อย่าง ต่อเนื่อง จนกระทั่งพบว่า เงี่อนไข เป้าหมายเป็นจริง จึงจะหลุดออก จากลูป while ด้วยคาสั่ง break การใช้งาน While หลุดออกด้วย break
56. 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
57. สวิตช์ กดติด/กดดับ (ใช้ 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; } } }
58. การรับส่งข้อมูล 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) ส่งข้อความพร้อมพารามิเตอร์ต่างๆ และขึ้นบรรทัดใหม่
59. สวิตช์ กดติด/กดดับ (ใช้ 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; } } }
60. ฟังก์ชั่น millis() millis จะเพิ่มค่าขึ้นทีละ 1 ทุก ๆ 1 มิลลิวินาที millis จะทางานอยู่เบื้องหลังด้วย Interrupt Timer millis ใช้ตัวแปร Long ในการเก็บค่า (4 ไบต์) 4,294,967,296 มิลลิวินาที ก่อนเคลียร์เป็น 0
61. 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()
62. I2C-LCD16x2
63. PCF8574 = 0x27 PCF8574A = 0x3F ไอซี PCF8574 และ PCF8574A
64. เชื่อมต่อเข้ากับบอร์ด AX-NodeMCU ขาพอร์ต D1/GPIO5 เป็นขาสัญญาณ SCL ขาพอร์ต D2/GPIO4 เป็นขาสัญญาณ SDA
65. ติดตั้งไลบรารี่ https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library/archive/master.zip ดาวน์โหลดไลบรารี่จาก ติดตั้งที่
66. //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
67. สรุปชุดคาสั่ง 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);
68. x=analogRead(pin); x = ตัวแปร int เพื่อนามารับค่า pin = ขาอินพุตอะนาลอก A0 เท่านั้น การอ่านค่าอะนาลอก
69. ตัวอย่างอ่านค่า 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); }
70. การใช้งานคาสั่ง map map(value, fromLow, fromHigh, toLow, toHigh) y = map(x, 1, 50, 50, 1); ตัวอย่าง y = map(x, 1, 50, 50, -100); ตัวอย่าง
71. ตัวอย่างอ่านค่าพร้อมใช้คาสั่ง 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); }
72. โซลิดสเตตรีเลย์
73. การเชื่อมต่อโซลิดสเตตรีเลย์
74. บอร์ด ZX-SSR01
75. การขับโหลด 220V ด้วย ZX-SSR01
76. ZX-SSR01 กับ AX-NodeMCU
77. ระยะทาง (เซนติเมตร) = (ระยะเวลาในหน่วยไมโครวินาที / 29) / 2 วัดระยะทางด้วย HC-SR04
78. ต่อวงจรแบ่งแรงดัน จาก 5 V ลดเหลือ 3.3V การเชื่อมต่อโมดูล HC-SR04 D6/12 D5/14
79. การเชื่อมต่อวงจรกับ NodeMCU ระยะทาง (เซนติเมตร) = (ระยะเวลาในหน่วยไมโครวินาที / 29) / 2 ระยะทาง (นิ้ ว) = (ระยะเวลาในหน่วยไมโครวินาที / 74) / 2
80. ZX-DHT11 วัดความชื้นและอุณหภูมิ วัดความชื้นสัมพัทธ์ 20 ถึง 80%RH ควำมผิดพลำด 5%RH ควำมละเอียด 1 % ขนำดข้อมูล 8 บิต วัดอุณหภูมิ 0 ถึ ง 50 องศำเซลเซียส ควำมผิดพลำด 2 องศำเซลเซียส ควำมละเอียด 1 องศำเซลเซียส ขนำดของข้อมูล 8 บิต
81. การเชื่อมต่อ DHT-11 กับ AX-NodeMCU
82. BH1750 บอร์ดวัดความเข้มแสงติดต่อผ่านบัส I2C ย่านวัดความเข้มแสง 1 ถึ ง 65,535 ลักซ์ มีค่าความผิดพลาด 20% ทนต่อการรบกวนจากแสงอินฟราเรด ต่อพร้อมกันได้ 2 ตัวกาหนดผ่านขา ADDR
83. BH1750 บอร์ดวัดความเข้มแสงติดต่อผ่านบัส I2C
84. การเชื่อมต่อ BH1750 กับ AX-NodeMCU
85. รูปแบบการอ่านค่า attachInterrupt(pin, ISR, mode) pin ตาแหน่งขาที่รับอินเตอร์รัปต์ ISR ตาแหน่งฟังก์ชั่นที่เรียกบริการ Interrupt mode รูปแบบการกระตุ้น Interrupt LOW กระตุ้นเมื่อขาเป็น 0 CHANGE กระตุ้นเมื่อมีการเปลี่ยนค่า RISING กระตุ้นที่ขอบขาขึ้น FALLING กระตุ้นที่ขอบขาลง
86. 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
87. จอแสดงผล OLED 128x64 จุด • จอแสดงผล 0.96 นิ้ว • ใช้ชิปเบอร์ SSD1306 • ความละเอียด 128 x 64 จุด • ให้แสงสีขาวหรือฟ้า • ติดต่อผ่านระบบบัส I2C • ไฟเลี้ยง +3.3V 20mA • มีวงจรทวีแรงดัน +4.5V เพื่อขับ LED
88. ผนวกไลบรารี่เพื่อติดต่อ GLCD เชื่อมต่อ Internet แล้วเข้าที่ Manage Libraries... Adafruit_GFX.h
89. Library Manager ค้นหา Adafruit_GFX.h พิมพ์ค้นหา Arduino GFX เจอแล้วกด Install
90. ดาวน์โหลดไฟล์ไลบรารี่ จาก github Adafruit_SSD1306 https://github.com/adafruit/Adafruit_SSD1306/archive/master.zip C:Arduino1.6.5r5libraries
91. ปรับแก้ไฟล์ Adafruit_SSD1306.h ยกเลิก Comment บรรทัด 69 Comment 70 แทน จากนั้นบันทึกไฟล์
92. ฟังก์ชั่นใช้งาน OLED OLED.begin(MODE,ADDR) กาหนดค่าเตรียมความพร้อม MODE ชิปที่ใช้เลือกเป็น SSD1306_SWITCHCAPVCC ADDR แอดเดรสของโมดูล OLED ตัวนี้คือ 0x3C clearDisplay() เคลียร์หน้าจอ setCursor(x,y) ระบุตาแหน่งพิกัด X,Y ที่จะแสดง X พิกัดแนวนอน 0-127 Y พิกัดแนวตั้ง 0-63
93. ฟังก์ชั่นใช้งาน 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 สีของภาพ
94. ฟังก์ชั่นใช้งาน OLED println() สั่งพิมพ์ข้อความตัวอักษรขึ้นบรรทัดใหม่ setTextColor(color) แสดงสีของตัวอักษร และแสดงพื้นหลัง color สีของตัวอักษรเป็นได้แค่ WHITE หรือ BLACK สั่งพิมพ์ข้อความตัวอักษรprint() โดยข้อความแสดงได้ทั้งตัวเลขและตัวอักษร setTextColor(color,background) background สีของพื้นหลังตัวอักษรเป็นได้แค่ WHITE หรือ BLACK
95. ลักษณะการเชื่อมต่อ
96. ตัวอย่างการแสดงผลหน้าจอ #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(); // }
97. #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.se
ไม่มีความคิดเห็น:
แสดงความคิดเห็น