#include /* ---------------------- OUTPUT & INPUT Pin table --------------------- * +---------------+-------------------------+-------------------------+ * | Board | INPUT Pin | OUTPUT Pin | * | | Zero-Cross | | * +---------------+-------------------------+-------------------------+ * | Lenardo | D7 (NOT CHANGABLE) | D0-D6, D8-D13 | * +---------------+-------------------------+-------------------------+ * | Mega | D2 (NOT CHANGABLE) | D0-D1, D3-D70 | * +---------------+-------------------------+-------------------------+ * | Uno | D2 (NOT CHANGABLE) | D0-D1, D3-D20 | * +---------------+-------------------------+-------------------------+ * | ESP8266 | D1(IO5), D2(IO4), | D0(IO16), D1(IO5), | * | | D5(IO14), D6(IO12), | D2(IO4), D5(IO14), | * | | D7(IO13), D8(IO15), | D6(IO12), D7(IO13), | * | | | D8(IO15) | * +---------------+-------------------------+-------------------------+ * | ESP32 | 4(GPI36), 6(GPI34), | 8(GPO32), 9(GP033), | * | | 5(GPI39), 7(GPI35), | 10(GPIO25), 11(GPIO26), | * | | 8(GPO32), 9(GP033), | 12(GPIO27), 13(GPIO14), | * | | 10(GPI025), 11(GPIO26), | 14(GPIO12), 16(GPIO13), | * | | 12(GPIO27), 13(GPIO14), | 23(GPIO15), 24(GPIO2), | * | | 14(GPIO12), 16(GPIO13), | 25(GPIO0), 26(GPIO4), | * | | 21(GPIO7), 23(GPIO15), | 27(GPIO16), 28(GPIO17), | * | | 24(GPIO2), 25(GPIO0), | 29(GPIO5), 30(GPIO18), | * | | 26(GPIO4), 27(GPIO16), | 31(GPIO19), 33(GPIO21), | * | | 28(GPIO17), 29(GPIO5), | 34(GPIO3), 35(GPIO1), | * | | 30(GPIO18), 31(GPIO19), | 36(GPIO22), 37(GPIO23), | * | | 33(GPIO21), 35(GPIO1), | | * | | 36(GPIO22), 37(GPIO23), | | * +---------------+-------------------------+-------------------------+ * | Arduino M0 | D7 (NOT CHANGABLE) | D0-D6, D8-D13 | * | Arduino Zero | | | * +---------------+-------------------------+-------------------------+ * | Arduino Due | D0-D53 | D0-D53 | * +---------------+-------------------------+-------------------------+ * | STM32 | PA0-PA15,PB0-PB15 | PA0-PA15,PB0-PB15 | * | Black Pill | PC13-PC15 | PC13-PC15 | * | BluePill | | | * | Etc... | | | * +---------------+-------------------------+-------------------------+ */ //Define name of the Wifi & password for creating an access point const char* ssid = "Livebox-37cc"; const char* pass = "8A6060920A8A86896F770F2C47"; ESP8266WebServer server(80); void ICACHE_RAM_ATTR handleInterrupt(); // Dimmer #include // #define LEDn 15 #define outputPin 13 #define zerocross 12 // for boards with CHANGEBLE input pins #define pas 5 dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards //dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero int outVal = 0; String webpage = R"=(

ON

PWM plus

PWM minus

PWM stop

PWM exact

@@pwmCount@@

)="; bool led; int pwm; int pwmCount; void ledON(){ led=1; digitalWrite(LEDn, led); handleRoot(); } void ledOFF(){ led=0; digitalWrite(LEDn, led); handleRoot(); } //pwm functions - if pwm is set to 1/-1 it will in-/decrease pwmCounter in loop() void exact(){ int value_to_set = getValueFromParam(); pwm=value_to_set; pwmCount = pwm; if (pwmCount>100) pwmCount = 100; if (pwmCount < 0) { pwmCount = 0; ledOFF(); } else { ledON(); } Serial.println(pwmCount); dimmer.setPower(pwmCount); handleRoot(); } void plus(){ int value_to_set = getValueFromParam(); pwm=value_to_set; setPwm(pwm); handleRoot(); } void minus(){ int value_to_set = getValueFromParam(); pwm=-value_to_set; setPwm(pwm); handleRoot(); } void stopPWM(){ pwm=-pwmCount; setPwm(pwm); ledOFF(); handleRoot(); } void setPwm(int pwm) { pwmCount += pwm; if (pwmCount>100) pwmCount = 100; if (pwmCount < 0) { pwmCount = 0; ledOFF(); } else { ledON(); } Serial.println(pwmCount); dimmer.setPower(pwmCount); } //---------------------------------------------------------------------------------- void handleRoot(void){ String page = webpage; page.replace("@@pwmCount@@", String(pwmCount)); //Serial.println(page); server.send(200, "text/html", page); } int getValueFromParam() { String message = "Number of args received:"; message += server.args(); for (int i = 0; i < server.args(); i++) { message = message + ("Arg nº" + String(i) + " –> "); message = message + (server.argName(i) + ": "); message = message + (server.arg(i) + "\n"); if (server.argName(i) == "value") { return String(server.arg(i)).toInt(); } } Serial.println(message); return pas; } void setup() { Serial.begin(9600); pinMode(LEDn,OUTPUT); IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 0, 0); IPAddress DNS(192, 168, 1, 1); Serial.begin(9600); // Conversion d'objet en pointeur String macId = generateKey(); IPAddress ip = getIP(macId); initWifiStatic(ip, gateway, subnet, DNS); //Server________________________________ server.begin(); server.on("/", handleRoot); server.on("/LEDon", ledON); server.on("/LEDoff", ledOFF); server.on("/minus", minus); server.on("/plus", plus); server.on("/exact", exact); server.on("/stop", stopPWM); //initialize variables__________________ pwm = 0; pwmCount= 0; led = 0; Serial.print("Module IP: "); Serial.println(WiFi.softAPIP()); // Dimmer Serial.println("Dimmer Program is starting..."); delay(1000); dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE) Serial.println("Set value"); dimmer.setPower(pwmCount); // setPower(0-100%); } void loop() { server.handleClient(); } String generateKey() { // WiFi.mode(WIFI_AP); // Do a little work to get a unique-ish name. Append the // last two bytes of the MAC (HEX'd) to "Thing-": uint8_t mac[WL_MAC_ADDR_LENGTH]; WiFi.softAPmacAddress(mac); String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) + String(mac[WL_MAC_ADDR_LENGTH - 1], HEX); macID.toUpperCase(); String AP_NameString = "ESP8266 Thing " + macID; char AP_NameChar[AP_NameString.length() + 1]; memset(AP_NameChar, 0, AP_NameString.length() + 1); for (int i = 0; i < AP_NameString.length(); i++) { AP_NameChar[i] = AP_NameString.charAt(i); } // WiFi.softAP(AP_NameChar, WiFiAPPSK); Serial.println("macID=" + macID); return macID; } IPAddress getIP(String macId) { IPAddress ip; //(192, 168, 1, 222); String fst = macId.substring(0, 2); String sec = macId.substring(2); char fstc[fst.length() + 1]; fst.toCharArray(fstc, fst.length() + 1); char secc[sec.length() + 1]; sec.toCharArray(secc, fst.length() + 1); return IPAddress(192, 168, strtol(fstc, 0, 16), strtol(secc, 0, 16)); } void initWifiStatic( IPAddress ip, IPAddress gateway, IPAddress subnet, IPAddress DNS) { WiFi.config(ip, gateway, subnet, DNS); delay(100); WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(200); } while (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println(); Serial.println("Fail connecting"); delay(5000); ESP.restart(); } Serial.print(" static OK "); Serial.print("Module IP: "); Serial.println(WiFi.localIP()); }