#include "Arduino.h" #include "controller.h" /* shutterStates[n] = 0 => le volet est fermer (position basse) shutterStates[n] = 100 => le volet est ouvert (position haute) */ Controller::Controller() { } void Controller::initController() { for (unsigned short i = 0; i < 5; i++) { // créer le volet unsigned short pinDown = 9 - (2 * i); unsigned short pinUp = 8 - (2 * i); shutters[i] = new Shutter(pinUp, pinDown, i); pinMode(i, OUTPUT); } // Permet de correctement initaliser tout les volets openExactePercentAllShutter(100); openExactePercentAllShutter(0); } void Controller::openExactePercentSpecificShutter(unsigned short shutter, float percent) { if (percent < 0) percent = 0; else if (percent > 100) percent = 100; if (shutter < 0 || shutter >= 5) return; float percentOpen = shutters[shutter]->percentOpen; // si le volet est deja ouvert a son pourcentage, ne rien faire if (percent == percentOpen) return; float deltaPercent = percentOpen - percent; if (deltaPercent < 0) // on doit fermet digitalWrite(shutters[shutter]->pinDown, 1); else // on doit ouvrir digitalWrite(shutters[shutter]->pinUp, 1); // Arreter le volet au bon moment delay((percent * 1000) / shutters[shutter]->TIMETOOPEN); digitalWrite(shutters[shutter]->pinUp, 0); digitalWrite(shutters[shutter]->pinDown, 0); } void Controller::openExactePercentAllShutter(float percent) { for (int i = 0; i < 5; i++) { openExactePercentSpecificShutter(i, percent); } } void Controller::manualOpen() { // ouvre tous les volets du salon if (analogRead(A7) > 512) { openExactePercentSpecificShutter(0, 100); openExactePercentSpecificShutter(1, 100); openExactePercentSpecificShutter(2, 100); } // Ferme tous les volets du salon if (analogRead(A6) > 512) { openExactePercentSpecificShutter(0, 0); openExactePercentSpecificShutter(1, 0); openExactePercentSpecificShutter(2, 0); } // Ouvre tous les volets de la cuisine if (analogRead(A3) > 512) { openExactePercentSpecificShutter(3, 100); openExactePercentSpecificShutter(4, 100); } // Ferme tous les volets du salon if (analogRead(A2) > 512) { openExactePercentSpecificShutter(3, 0); openExactePercentSpecificShutter(4, 0); } if (analogRead(A1) > 512) openExactePercentAllShutter(100); if (analogRead(A0) > 512) openExactePercentAllShutter(0); }