Aggiornamento
************************************************************
per allungare la durata della batteria. Al primo avvio viene solo mostrato
la grafica al video...i boot seguenti fatti a seguito di wake up da deep sleep
viene avviata la tastiera BLE
L'aspetto piu' critico e' stato quello di inserire un delay al riavvio perche' sono necessari
4 secondi per riavviare la riconnessione al Bluetooth e 4 secondi per l'invio del messaggio
(tempi piu' brevi portano a connessioni non affidabili)
#include <M5StickC.h>
RTC_DATA_ATTR int bootCount = 0;
BleKeyboard bleKeyboard;
String player = "1"; // set player 1 or player2
void setup() {
++bootCount;
if (bootCount >1 )
{
delay(4000);
bleKeyboard.begin();111
delay(4000);
if(bleKeyboard.isConnected()) {
bleKeyboard.print("1");1
}
pinMode(10, OUTPUT);
digitalWrite(10, LOW); // accende il led
delay(100);
digitalWrite(10, HIGH);
}
else
{
M5.begin();
pinMode(10, OUTPUT); // red led
digitalWrite(10, HIGH);
M5.Lcd.setRotation(3);
pinMode(37, INPUT);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(5, 18);
M5.Lcd.print("Player "+player);
delay(1000);
M5.Axp.SetLDO2(false); // spenge lo schermo
}
esp_sleep_enable_ext0_wakeup(GPIO_NUM_37,0);//Configure GPIO37 as ext0 wake up source for low logic level
esp_deep_sleep_start();
}
void loop() {
}
************************************************************
M5Stack Stickc e' un indossabile (piu' o meno) con a bordo un Esp 32 Pico programmabile
Ha una batteria da soli 80 mAh ed in condizioni normali resta acceso meno di 10 minuti...volevo trasformarlo in un pulsante remoto come tastiera BLE HID per comandare un PC
#include <M5StickC.h> | |
#include <BleKeyboard.h> | |
BleKeyboard bleKeyboard; | |
int last_value = 0; | |
int cur_value = 0; | |
String player = "1"; // set player 1 or player2 | |
void setup() { | |
bleKeyboard.begin(); | |
setCpuFrequencyMhz(80); // downscale la frequenza da 240 a 80 Mhz | |
M5.begin(); | |
pinMode(10, OUTPUT); // red led | |
digitalWrite(10, HIGH); | |
M5.Lcd.setRotation(3); | |
pinMode(37, INPUT); | |
M5.Lcd.setTextSize(3); | |
M5.Lcd.setCursor(5, 18); | |
M5.Lcd.print("Player "+player); | |
delay(1000); | |
M5.Axp.SetLDO2(false); // spenge lo schermo | |
} | |
void loop() { | |
M5.update(); | |
delay(300); // per evitare la doppia pressione | |
cur_value = digitalRead(37); | |
if(cur_value != last_value){ | |
if(cur_value==0){ | |
if(bleKeyboard.isConnected()) { | |
bleKeyboard.print(player); | |
/*M5.Axp.SetLDO2(true); | |
M5.Lcd.fillScreen(RED); | |
delay(100); | |
M5.Lcd.fillScreen(BLACK); | |
M5.Axp.SetLDO2(false);*/ | |
digitalWrite(10, LOW); // accende il led | |
delay(100); | |
digitalWrite(10, HIGH); | |
} | |
} | |
else{ | |
} | |
last_value = cur_value; | |
} | |
} |