| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #include <ESP8266WiFi.h>
- #include "MCP23017.h"
- #define OUVERT 1
- #define FERME 2
- // Pin pour l'interruption
- const int interruptPin = 12;
- //Pin Actionneur
- const int OUT3 = 0+8;
- const int PompeRemonter = 1+8;
- const int OUT4 = 2+8;
- const int Reducteur = 3+8;
- const int PompeBooster = 4+8;
- const int OUT1 = 5+8;
- const int OUT2 = 6+8;
- const int EntreeEau = 7+8;
- const int IN2 = 4;
- const int IN1 = 5;
- const int NiveauHaut = 6;
- const int INPistolet = 7;
- #define MCP23017_ADDR 0x20
- MCP23017 mcp = MCP23017(MCP23017_ADDR);
- // Fonction appelée lors de l'interruption
- void ICACHE_RAM_ATTR handleInterrupt() {
- uint8_t portA;
- uint8_t portB;
- interruptedBy(uint8_t& portA, uint8_t& portB);
-
- // Pistolet
- if ((portA & (1 << 7)) == 0) {
- Pistolet();
- }
-
- // Niveau Haut
- if ((portA & (1 << 6)) == 0) {
- Eteint();
- }
-
- // Niveau Bas
- if ((portA & (1 << 5)) == 0) {
- Alume();
- }
-
- // Vérifier si le bit 4 est à 0
- if ((portA & (1 << 4)) == 0) {
- ;
- }
- }
- void closeVanne(){
- mcp.digitalWrite(Reducteur,FERME);
- }
- void Alume(){
- Serial.println("start");
- timer.setTimeout(60000L, closeVanne);
- mcp.digitalWrite(EntreeEau,OUVERT);
- mcp.digitalWrite(Reducteur,OUVERT);
- mcp.digitalWrite(PompeBooster,OUVERT);
- }
- void Eteint(){
- Serial.println("Stop");
- mcp.digitalWrite(EntreeEau,FERME);
- mcp.digitalWrite(PompeBooster,FERME);
- }
- void Pistolet(){
- if(mcp.digitalRead(INPistolet)==0
- mcp.digitalWrite(PompeRemonter,OUVERT);
- else
- mcp.digitalWrite(PompeRemonter,FERME);
- }
- void setup() {
- // Initialiser la communication série pour le débogage
- Serial.begin(115200);
-
- mcp.init();
- mcp.portMode(MCP23017Port::B, 0);
- mcp.portMode(MCP23017Port::A, 0b11110000);
-
- mcp.digitalWrite(OUT3,FERME);
- mcp.digitalWrite(PompeRemonter,FERME);
- mcp.digitalWrite(OUT4,FERME);
- mcp.digitalWrite(Reducteur,FERME);
- mcp.digitalWrite(PompeBooster,FERME);
- mcp.digitalWrite(OUT1,FERME);
- mcp.digitalWrite(OUT2,FERME);
- mcp.digitalWrite(EntreeEau,FERME);
- mcp.digitalWrite(,FERME);
-
- mcp.interruptMode(MCP23017InterruptMode::Separated);
- mcp.interrupt(MCP23017Port::A, Change);
- mcp.writeRegister(MCP23017Register::IPOL_A, 0x00);
-
- mcp.clearInterrupts();
-
- // Initialiser Blynk
- Blynk.begin(auth, ssid, pass);
-
- pinMode(interruptPin, INPUT);
- attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, FALLING);
- }
- void loop() {
- }
|