diff --git a/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/btn.h b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/btn.h new file mode 100644 index 0000000..abf38de --- /dev/null +++ b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/btn.h @@ -0,0 +1,14 @@ +bool lastButtonState = HIGH; +unsigned long lastDebounceTime = 0; +const unsigned long debounceDelay = 50; + +bool readButton() { + bool buttonState = digitalRead(BUTTON_PIN); + if (buttonState == LOW && lastButtonState == HIGH && (millis() - lastDebounceTime) > debounceDelay) { + lastDebounceTime = millis(); + lastButtonState = buttonState; + return true; + } + lastButtonState = buttonState; + return false; +} diff --git a/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/indexHtml.h b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/indexHtml.h new file mode 100644 index 0000000..eff942d --- /dev/null +++ b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/indexHtml.h @@ -0,0 +1,56 @@ +const char webPage[] PROGMEM = R"rawliteral( + + + + + + LED Control + + + +
+

ESP8266 LED Control

+ +
+ + + + + )rawliteral"; + \ No newline at end of file diff --git a/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/mc-lab1.ino b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/mc-lab1.ino new file mode 100644 index 0000000..c18fe10 --- /dev/null +++ b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/mc-lab1.ino @@ -0,0 +1,67 @@ +#include +#include +#include "wifi.h" +#define BUTTON_PIN 14 // Визначаємо кнопку перед підключенням btn.h +#include "btn.h" +#include "indexHtml.h" + +#define LED_PINS {0, 2, 12} + +ESP8266WebServer server(80); +int leds[] = LED_PINS; +int numLeds = sizeof(leds) / sizeof(leds[0]); +bool direction = true; +int ledIndex = 0; + +int ledPatterns[3][2] = {{2, 12}, {2, 0}, {0, 12}}; +int patternIndex = 0; + +void handleButtonClick() { + direction = !direction; // Зміна напрямку + server.send(200, "text/plain", "Button Clicked"); +} + +void setup() { + Serial.begin(115200); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println("WiFi connected!"); + Serial.println(WiFi.localIP()); + + pinMode(BUTTON_PIN, INPUT_PULLUP); + for (int i = 0; i < numLeds; i++) { + pinMode(leds[i], OUTPUT); + digitalWrite(leds[i], LOW); + } + + server.on("/", []() { server.send(200, "text/html", webPage); }); + server.on("/toggle", handleButtonClick); + server.begin(); +} + +void loop() { + server.handleClient(); + + if (readButton()) { + direction = !direction; + } + + // Вимикаємо всі світлодіоди + for (int i = 0; i < numLeds; i++) { + digitalWrite(leds[i], LOW); + } + + digitalWrite(ledPatterns[patternIndex][0], HIGH); + digitalWrite(ledPatterns[patternIndex][1], HIGH); + + if (direction) { + patternIndex = (patternIndex + 1) % 3; + } else { + patternIndex = (patternIndex - 1 + 3) % 3; + } + + delay(300); +} diff --git a/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/wifi.h b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/wifi.h new file mode 100644 index 0000000..e072959 --- /dev/null +++ b/mc_labs/mc_lab_01/Kudyba_Diana_Lab_01/mc-lab1/wifi.h @@ -0,0 +1,2 @@ +const char* ssid = "Готель Шкло"; +const char* password = "11111111";