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());
}