Open nicolasdb opened 5 years ago
2 Files:
+ 2 optionnels keywords.txt et un folder examples
Class = module composé de
class ledBlinker
{
//constructer
ledBlinker(int pin, int delayTime);
//fonctions
blinkMe();
fadeMe();
}
cette vidéo était en fait plus claire. Et correspond mieux à ce que je cherche comme exemple concret. https://www.youtube.com/watch?v=HvGJlIKOLoI
Ensuite
ok, donc dans mon cas, si je veux déclencher une suite logique d'évènements/fonction, je pourrais lister mes actions avec enum
comme dans
enum {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche} jour;
void setup() {
Serial.begin(115200);
jour = jeudi;
Serial.println(jour);
}
void loop() {}
En fait, celui ci en français est parfait.
un bouton, pour controler l'état de 4 leds. 3 excercices pour bien comprendre
A-Level Comp Sci: Finite State Machine https://www.youtube.com/watch?v=4rNYAvsSkwk
OK, ça marche.
2 fonctions différentes.
const byte reedSwitch = 2; const byte buttonPin = 4; // on définit un nom pour la pin associée au bouton OneButton buttonh(buttonPin, true); // true pour dire qu'on est en INPUT_PULLUP, // donc actif LOW, connecté à GND
// les pins utilisées pour les LEDs const byte pinPump = 12; const byte pinLedRouge = 8; const byte pinLedBleue = 9; const byte pinLedJaune = 10; const byte pinLedBlanche = 11;
// la liste des états possible de notre système // ainsi qu'une variable etatCourant prenant une de ces valeurs enum {REPOS, ETAT_Bl, ETAT_BlJ, ETAT_BlJB, ETAT_BlJBR} etatCourant; int reedStat;
// ------------------------------------------------------ // Cette fonction installe l'état initial // ------------------------------------------------------ void pumpOff() { digitalWrite(pinPump, LOW); etatPump = OFF; } void mettreAuRepos() { digitalWrite(pinLedRouge, LOW); digitalWrite(pinLedBleue, LOW); digitalWrite(pinLedJaune, LOW); digitalWrite(pinLedBlanche, LOW); etatCourant = REPOS; }
// ------------------------------------------------------ // La fonction de call back, appellée automatiquement quand on clique // ------------------------------------------------------ void level() { switch (etatPump) { case OFF: digitalWrite(pinPump, HIGH); etatPump = ON; break;
case ON:
digitalWrite(pinPump, LOW);
etatPump = OFF;
break;
} }
void simpleclick() { switch (etatCourant) { case REPOS: // on était au repos et on a un appui, on allume la verte digitalWrite(pinLedBlanche, HIGH); // LED verte alimentée etatCourant = ETAT_Bl; // on note le nouvel état de notre système break;
case ETAT_Bl: // on était led verte allumée et on a un appui, on allume la jaune
digitalWrite(pinLedJaune, HIGH); // LED jaune alimentée
etatCourant = ETAT_BlJ;// on note le nouvel état de notre système
break;
case ETAT_BlJ: // vert et jaune allumées, on a un appui, on allume la orange
digitalWrite(pinLedBleue, HIGH); // LED orange alimentée
etatCourant = ETAT_BlJB;// on note le nouvel état de notre système
break;
case ETAT_BlJB:// vert, orange et jaune allumées, on a un appui, on allume la rouge
digitalWrite(pinLedRouge, HIGH); // LED rouge alimentée
etatCourant = ETAT_BlJBR;// on note le nouvel état de notre système
break;
case ETAT_BlJBR: // tout était allumé, on a un appui, on retourne au repos
mettreAuRepos(); // on retourne à l'état initial
break;
} }
// ------------------------------------------------------ // On initialise notre système dans le setup // ------------------------------------------------------ void setup() { Serial.begin(9600);
pinMode (reedSwitch, INPUT); pinMode (pinLedRouge, OUTPUT); pinMode (pinLedBleue, OUTPUT); pinMode (pinLedJaune, OUTPUT); pinMode (pinLedBlanche, OUTPUT); pinMode (pinPump, OUTPUT);
//conditions Initiales mettreAuRepos(); pumpOff();
// On attache la fonction simpleClick() comme callBack buttonh.attachClick(simpleclick);
}
void loop() { // On vérifie l'état des boutons, ce qui déclenche l'appel de la fonction callBack si nécessaire buttonh.tick();
reedStat = digitalRead(reedSwitch); if (reedStat == 1) etatPump = ON; else etatPump = OFF; Serial.print(reedStat); level(); delay(100); // ici on peut faire autre chose du moment que ça ne prend pas trop longtemps
}
sensor reed IN, loop IF reed = 0; then turn on Pump.
LED! case allX = all OFF, case allO = ready for entry, waiting for action, case push = turn off other button, buton scénario blink, no action till return to allO,
end scénario = stop blink, switch to allO
bouton 1 IF PUSH; start sceno = 1 sceno 1= valve A ON, wait, OFF, wait; valve C ON, wait, OFF, wait; valve E ON, wait, OFF, wait; valve F ON, wait, OFF, wait;
So, j'ai déjà une base d'arduino. Je sais comment installer les drivers, comment on le structure, comment uploader du code, le blink, collecter des data via le serial,
Aujourd'hui, j'aimerai et j'ai besoin d'aller plus loin parce que j'ai un job qui va faire appel à du code simple, mais bcp de fois.
Il s'agit de 3 grandes catégories:
J'ai donc besoin de mieux comprendre le code modulaire et les librairies. Pour faire appel à l'un ou l'autre sans devoir refaire ce qui est fait. https://youtu.be/fE3Dw0slhIc