Added timer pause/resume button and updated README

This commit is contained in:
Djuri Baars 2023-08-30 00:18:18 +02:00
parent 05e459a64c
commit a1c5d8a579
4 changed files with 78 additions and 6 deletions

View file

@ -5,6 +5,15 @@
Improved code for BTClock with many features.
Don't forget to copy `config.h.example` to `config.h`. Not necessary to adapt it, since everything should be configurable through the WebUI.
### Button actions
(Top = 1 to bottom = 4)
1. Start/stop timer (confirmed with LEDs)
2. Next screen
3. Previous screen
4. Show IP address
## Software
- [PlatformIO](https://platformio.org/platformio-ide).

View file

@ -37,9 +37,9 @@ void setupSoftAP()
{
byte mac[6];
WiFi.macAddress(mac);
softAP_SSID = String("BTClock" + String(mac[3], 16) + String(mac[1], 16));
softAP_SSID = String("BTClock" + String(mac[5], 16) + String(mac[6], 16));
WiFi.setHostname(softAP_SSID.c_str());
softAP_password = base64::encode(String(mac[2], 16) + String(mac[4], 16) + String(mac[5], 16) + String(mac[6], 16)).substring(2, 12);
softAP_password = base64::encode(String(mac[2], 16) + String(mac[4], 16) + String(mac[5], 16) + String(mac[6], 16)).substring(2, 10);
}
void setupComponents()
@ -132,7 +132,7 @@ void setupWifi()
ESP.restart();
}
return;
return;
}
#endif
@ -237,6 +237,67 @@ void handleScreenTasks(uint screen)
}
}
void toggleScreenTimer()
{
timerRunning = !timerRunning;
if (!timerRunning)
{
Serial.println("Stopping screen timer...");
for (int i = NEOPIXEL_COUNT; i >= 0; i--)
{
for (int j = NEOPIXEL_COUNT; j >= 0; j--)
{
uint32_t c = pixels.Color(0, 0, 0);
if (i == j)
c = pixels.Color(0, 255, 0);
pixels.setPixelColor(j, c);
}
pixels.show();
delay(100);
}
delay(900);
pixels.clear();
pixels.show();
}
else
{
Serial.println("Starting screen timer...");
pixels.setPixelColor(3, pixels.Color(0, 255, 0));
pixels.setPixelColor(2, pixels.Color(0, 0, 0));
pixels.setPixelColor(1, pixels.Color(0, 0, 0));
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(1000);
for (int i = NEOPIXEL_COUNT; i--; i > 0)
{
for (int j = NEOPIXEL_COUNT; j--; j > 0)
{
uint32_t c = pixels.Color(0, 0, 0);
if (i == j)
c = pixels.Color(0, 255, 0);
pixels.setPixelColor(j, c);
}
pixels.show();
delay(100);
}
pixels.clear();
pixels.show();
}
}
int getBgColor()
{
return bgColor;

View file

@ -25,6 +25,7 @@ uint getCurrentScreen();
void setCurrentScreen(uint screen);
void handleScreenTasks(uint screen);
void showNetworkSettings();
void toggleScreenTimer();
void timebasedChangeTask(void *parameter);

View file

@ -20,15 +20,16 @@ void buttonTask(void *parameter)
{
uint pin = mcp.getLastInterruptPin();
if (pin == 3) {
xTaskCreate(fullRefresh, "FullRefresh", 2048, NULL, 1, NULL);
// xTaskCreate(fullRefresh, "FullRefresh", 2048, NULL, 1, NULL);
toggleScreenTimer();
}
else if (pin == 1)
{
nextScreen();
previousScreen();
}
else if (pin == 2)
{
previousScreen();
nextScreen();
}
else if (pin == 0)
{