Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <WiFiClient.h>
- #include <ESP8266WebServer.h>
- #include <EEPROM.h>
- const char* ssid = "nazwasieciwifi";
- const char* password = "haslo";
- ESP8266WebServer server(80);
- const int ledPIN = 0;
- const int counterPIN = 2;
- unsigned long counter = 0;
- unsigned long actTime = 0;
- unsigned long delayTime = 0;
- unsigned long ledTime = 0;
- const int EEPROM_COUNTER = 0;
- void f_counter(void)
- {
- actTime = millis();
- if (actTime > delayTime)
- {
- delayTime = actTime + 95;
- counter++;
- EEPROMWritelong(EEPROM_COUNTER, counter);
- digitalWrite(ledPIN, HIGH);
- ledTime = actTime;
- }
- }
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Start programu...");
- EEPROM.begin(4);
- counter = EEPROMReadlong(EEPROM_COUNTER);
- pinMode(ledPIN, OUTPUT);
- digitalWrite(ledPIN, LOW);
- attachInterrupt(counterPIN, f_counter, FALLING);
- WiFi.begin(ssid, password);
- server.on("/", []()
- {
- server.send(200, "text/plain", "Stan licznika: " + String(counter, DEC) + " Wh");
- });
- server.on("/getcounter", []()
- {
- server.send(200, "text/plain", String(counter, DEC));
- });
- server.on("/set", []()
- {
- String str = server.arg("counter");
- counter = str.toInt();
- EEPROMWritelong(EEPROM_COUNTER, counter);
- server.send(200, "text/plain", String(counter, DEC));
- });
- server.begin();
- }
- void loop()
- {
- server.handleClient();
- if(ledTime)
- {
- actTime = millis();
- if(actTime > (ledTime + 1000))
- {
- digitalWrite(ledPIN, LOW);
- ledTime = 0;
- }
- }
- }
- void EEPROMWritelong(int address, unsigned long value)
- {
- //Decomposition from a long to 4 bytes by using bitshift.
- //One = Most significant -> Four = Least significant byte
- byte four = (value & 0xFF);
- byte three = ((value >> 8) & 0xFF);
- byte two = ((value >> 16) & 0xFF);
- byte one = ((value >> 24) & 0xFF);
- //Write the 4 bytes into the eeprom memory.
- EEPROM.write(address, four);
- EEPROM.write(address + 1, three);
- EEPROM.write(address + 2, two);
- EEPROM.write(address + 3, one);
- EEPROM.commit();
- }
- unsigned long EEPROMReadlong(int address)
- {
- //Read the 4 bytes from the eeprom memory.
- long four = EEPROM.read(address);
- long three = EEPROM.read(address + 1);
- long two = EEPROM.read(address + 2);
- long one = EEPROM.read(address + 3);
- //Return the recomposed long by using bitshift.
- return ((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF);
- }
Advertisement
Add Comment
Please, Sign In to add comment