BLE、BlynkでM5の電圧のモニタ つくってみた。
ラジコンやってると電圧、表示はさせてるけど実際見えない。
突然電池切れでこける。
そいえばBlynk、当然受信する方も使えるんだった。。。
//Blynk M5Sick_test
#include <BlynkSimpleEsp32_BLE.h>
#include "M5StickCPlus.h"
#define M5_LED 10
char auth[] = "******";
unsigned long ms100;
char LED_sw,BLE_data,buff[50];
float batt,time_data;
void setup() {
M5.begin();
pinMode(M5_LED, OUTPUT);
M5.Axp.ScreenBreath(8); //0-12 明るさ 6以下は見えない
M5.Lcd.setTextFont(4);
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(1);
M5.Lcd.setRotation( 2 );
M5.Lcd.fillScreen(BLACK);
Blynk.setDeviceName("Blynk_M5stick");
Blynk.begin(auth);
digitalWrite(M5_LED, HIGH); // LED OFF
M5.Lcd.printf("Blynk_test\n");
ms100 = millis();
}
BLYNK_WRITE(V0) { int v0 = param.asInt(); LED_sw = v0;}
BLYNK_WRITE(V1) { int v1 = param.asInt(); BLE_data = v1;}
BLYNK_READ(V8) { dtostrf(time_data, 7, 0, buff); Blynk.virtualWrite(V8, buff);}
BLYNK_READ(V9) { dtostrf(batt, 4, 2, buff); Blynk.virtualWrite(V9, buff);}
void loop() {
Blynk.run();
if (millis() > ms100){ // 100ms毎
M5.Lcd.setCursor(0, 0);
M5.Lcd.printf("Blynk_test \n\n");
digitalWrite(M5_LED, LED_sw);
M5.Lcd.printf("V0:LED\n");
M5.Lcd.printf("%3d \n\n",LED_sw); //0:LED ON, 1以上でOFF
M5.Lcd.printf("V1:data\n");
M5.Lcd.printf("%3d \n\n",BLE_data);
// バッテリー電圧取得
batt = M5.Axp.GetVbatData() * 1.1 / 1000; // 3.3-4.1V
M5.Lcd.printf("Batt: %4.2fv", batt);
time_data += 0.1;
ms100+=100;
}
}