IoT Study Kit 2のLEDは、FirebaseのLEDデータに従って表示。
プログラム1
単純に文字、パタンの表示。
3連ベースで、ESP8266, LED Matrix, SHT30を装着する。
Features
- 8×8 dot matrix LED
- 8 step adjustable intensity
Pins
D1 mini | GPIO | Shield |
D5 | 14 | CLK |
D7 | 13 | DIN |
ライブラリから、WEMOS_Matrix_Adafruit_GFXを追加してください。
つぎは、ライブラリ付属のLED Matrix表示サンプルの修正版。
# コンパイルエラー発生した。
MLED matrix(7); から
MLED matrix(7, D7, D5); に変更した。
#include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> MLED matrix(7, D7, D5); //set intensity=7 (maximum) void setup() { Serial.begin(9600); Serial.println("8x8 LED Matrix Test"); } static const uint8_t PROGMEM smile_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100 }, neutral_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10111101, B10000001, B01000010, B00111100 }, frown_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10011001, B10100101, B01000010, B00111100 }; void loop() { matrix.clear(); matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); // clear display matrix.drawPixel(0, 0, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawLine(0,0, 7,7, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawRect(0,0, 8,8, LED_ON); matrix.fillRect(2,2, 4,4, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawCircle(3,3, 3, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.setTextSize(1); matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely matrix.setTextColor(LED_ON); for (int8_t x=0; x>=-36; x--) { matrix.clear(); matrix.setCursor(x,0); matrix.print("Hello"); matrix.writeDisplay(); delay(100); } matrix.setRotation(3); for (int8_t x=7; x>=-36; x--) { matrix.clear(); matrix.setCursor(x,0); matrix.print("World"); matrix.writeDisplay(); delay(100); } matrix.setRotation(0); }
プログラム2
Firebaseのデータ(/Speech) をLEDに表示する
Firebaseへのコンタクトは、MobizTのライブラリを利用することで成功した。
https://github.com/mobizt/Firebase-ESP8266
#include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> #include "FirebaseESP8266.h" #include <ESP8266WiFi.h> MLED matrix(7, D7, D5); //set intensity=7 (maximum) #define PIN D1 #define NUM_LEDS 8 const char* ssid = "ssid003"; const char* password = "12345"; FirebaseData firebaseData; // Current color values int redValue = 0; int greenValue = 0; int blueValue = 0; void setup() { Serial.begin(115200); Serial.println("8x8 LED Matrix Test"); connectWifi(); Firebase.begin("https://test2.firebaseio.com/", "********4WxzwiCI"); } void loop() { String target; if (Firebase.getString(firebaseData, "/Speech")) { target = firebaseData.stringData(); Serial.println(target); Serial.println(firebaseData.dataType()); matrix.setTextSize(1); matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely matrix.setTextColor(LED_ON); for (int8_t x=0; x>=-56; x--) { matrix.clear(); matrix.setCursor(x,0); matrix.print(target); matrix.writeDisplay(); delay(100); } } else { Serial.println("FAILED"); Serial.println("REASON: " + firebaseData.errorReason()); Serial.println("------------------------------------"); Serial.println(); } delay(500); } void connectWifi() { // Let us connect to WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("......."); Serial.println("WiFi Connected....IP Address:"); Serial.println(WiFi.localIP()); }