#include <WiFi.h>
WiFiServer server(80);
String header;
unsigned long currentTime = millis();
unsigned long previousTime = 0;
const long timeoutTime = 2000;
byte firstState = HIGH;
int num = 1;
#define redPin 32
#define greenPin 33
#define bluePin 25
#define button 26
void setup() {
Serial.begin(9600);
WiFi.begin("Moja WIFI", "Bohtamiluje");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
Serial.print(".");
}
Serial.println("WiFi úspešne pripojené!");
Serial.print("IP adresa: ");
Serial.println(WiFi.localIP());
server.begin();
pinMode(redPin, OUTPUT); // Nastavte LED pin ako výstup
pinMode(greenPin, OUTPUT); // Nastavte LED pin ako výstup
pinMode(bluePin, OUTPUT); // Nastavte LED pin ako výstup
pinMode(button, INPUT_PULLUP);
}
void loop() {
WiFiClient client = server.available(); // aktualizovanie prijatých dát
byte state = digitalRead(button);
if (firstState == HIGH && state == LOW) {
num++;
if (num > 4) {
num = 1;
}
// Odoslanie HTTP odpovede na obnovenie stránky
if (client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println("");
client.println("<!DOCTYPE html><html>");
client.println("<head>");
client.println("<meta http-equiv='refresh' content='0' />");
client.println("</head><body>");
client.println("</body></html>");
client.stop(); // Uzavretie spojenia s klientom
}
header = ""; // Vyčistenie HTTP hlavičky
}
firstState = state;
if (client) // ak sa pripojil klient
{
currentTime = millis();
previousTime = currentTime;
Serial.println("Nový klient");
String currentLine = ""; // premená pre prijaté dáta
while (client.connected() && currentTime - previousTime <= timeoutTime) {
currentTime = millis();
if (client.available()) // test, či sú prijaté dáke dáta
{
char c = client.read(); // načítanie bajtu z buffera
Serial.write(c);
header += c;
if (c == '\n') // po ENTER je request
{
if (currentLine.length() == 0) // ak sa načítal prázdny riadok, odošli potvrdenie o pripojení
{
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println("");
if (header.indexOf("GET /red") >= 0) {
digitalWrite(redPin, HIGH); // Rozsvietiť červenú LED
digitalWrite(bluePin, LOW); // Vypnúť modrú
digitalWrite(greenPin, LOW); // Vypnúť zelenú
}
if (header.indexOf("GET /green") >= 0) {
digitalWrite(greenPin, HIGH); // Rozsvietiť zelenú LED
digitalWrite(bluePin, LOW); // Vypnúť modrú
digitalWrite(redPin, LOW); // Vypnúť červenú
}
if (header.indexOf("GET /blue") >= 0) {
digitalWrite(bluePin, HIGH); // Rozsvietiť modrú LED
digitalWrite(redPin, LOW); // Vypnúť červenú
digitalWrite(greenPin, LOW); // Vypnúť zelenú
}
if (header.indexOf("GET /off") >= 0) {
digitalWrite(bluePin, LOW); // Rozsvietiť modrú LED
digitalWrite(redPin, LOW); // Vypnúť červenú
digitalWrite(greenPin, LOW); // Vypnúť zelenú
}
client.println("<!DOCTYPE html><html>");
client.println("<head>");
client.println("<style>");
client.println("body { font-family: Arial, sans-serif; display: grid; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f4f4f9; }");
client.println("p { text-align: center; }");
client.println(".button { font-size: 7vh; padding: 5vh 12vh; cursor: pointer; border: none; border-radius: 20px; color: #fff; }");
client.println(".red { background-color: #f44336; }");
client.println(".green { background-color: #4CAF50; }");
client.println(".blue { background-color: #2196F3; }");
client.println(".off { background-color: #000000; }");
client.println("</style>");
client.println("</head><body>");
if(num == 1){
client.println("<p><a href=\"/red\"><button class=\"button red\">Red</button></a></p>");
}
else if(num == 2){
client.println("<p><a href=\"/green\"><button class=\"button green\">Green</button></a></p>");
}
else if(num == 3){
client.println("<p><a href=\"/blue\"><button class=\"button blue\">Blue</button></a></p>");
}
else if(num == 4){
client.println("<p><a href=\"/off\"><button class=\"button off\">Off</button></a></p>");
}
client.println("</body></html>");
client.println("");
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c; // add it to the end of the currentLine
}
}
}
header = "";
client.stop();
Serial.println("Klient je odpojený.");
Serial.println("");
}
}