ServeurOsmoseur.ino 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #include <ESP8266WiFi.h>
  2. #include "MCP23017.h"
  3. #define OUVERT 1
  4. #define FERME 2
  5. // Pin pour l'interruption
  6. const int interruptPin = 12;
  7. //Pin Actionneur
  8. const int OUT3 = 0+8;
  9. const int PompeRemonter = 1+8;
  10. const int OUT4 = 2+8;
  11. const int Reducteur = 3+8;
  12. const int PompeBooster = 4+8;
  13. const int OUT1 = 5+8;
  14. const int OUT2 = 6+8;
  15. const int EntreeEau = 7+8;
  16. const int IN2 = 4;
  17. const int IN1 = 5;
  18. const int NiveauHaut = 6;
  19. const int INPistolet = 7;
  20. #define MCP23017_ADDR 0x20
  21. MCP23017 mcp = MCP23017(MCP23017_ADDR);
  22. // Fonction appelée lors de l'interruption
  23. void ICACHE_RAM_ATTR handleInterrupt() {
  24. uint8_t portA;
  25. uint8_t portB;
  26. interruptedBy(uint8_t& portA, uint8_t& portB);
  27. // Pistolet
  28. if ((portA & (1 << 7)) == 0) {
  29. Pistolet();
  30. }
  31. // Niveau Haut
  32. if ((portA & (1 << 6)) == 0) {
  33. Eteint();
  34. }
  35. // Niveau Bas
  36. if ((portA & (1 << 5)) == 0) {
  37. Alume();
  38. }
  39. // Vérifier si le bit 4 est à 0
  40. if ((portA & (1 << 4)) == 0) {
  41. ;
  42. }
  43. }
  44. void closeVanne(){
  45. mcp.digitalWrite(Reducteur,FERME);
  46. }
  47. void Alume(){
  48. Serial.println("start");
  49. timer.setTimeout(60000L, closeVanne);
  50. mcp.digitalWrite(EntreeEau,OUVERT);
  51. mcp.digitalWrite(Reducteur,OUVERT);
  52. mcp.digitalWrite(PompeBooster,OUVERT);
  53. }
  54. void Eteint(){
  55. Serial.println("Stop");
  56. mcp.digitalWrite(EntreeEau,FERME);
  57. mcp.digitalWrite(PompeBooster,FERME);
  58. }
  59. void Pistolet(){
  60. if(mcp.digitalRead(INPistolet)==0
  61. mcp.digitalWrite(PompeRemonter,OUVERT);
  62. else
  63. mcp.digitalWrite(PompeRemonter,FERME);
  64. }
  65. void setup() {
  66. // Initialiser la communication série pour le débogage
  67. Serial.begin(115200);
  68. mcp.init();
  69. mcp.portMode(MCP23017Port::B, 0);
  70. mcp.portMode(MCP23017Port::A, 0b11110000);
  71. mcp.digitalWrite(OUT3,FERME);
  72. mcp.digitalWrite(PompeRemonter,FERME);
  73. mcp.digitalWrite(OUT4,FERME);
  74. mcp.digitalWrite(Reducteur,FERME);
  75. mcp.digitalWrite(PompeBooster,FERME);
  76. mcp.digitalWrite(OUT1,FERME);
  77. mcp.digitalWrite(OUT2,FERME);
  78. mcp.digitalWrite(EntreeEau,FERME);
  79. mcp.digitalWrite(,FERME);
  80. mcp.interruptMode(MCP23017InterruptMode::Separated);
  81. mcp.interrupt(MCP23017Port::A, Change);
  82. mcp.writeRegister(MCP23017Register::IPOL_A, 0x00);
  83. mcp.clearInterrupts();
  84. // Initialiser Blynk
  85. Blynk.begin(auth, ssid, pass);
  86. pinMode(interruptPin, INPUT);
  87. attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, FALLING);
  88. }
  89. void loop() {
  90. }