Étape 2: logiciel
J’espère que les commentaires sont exhaustifs :
continus :
const int sm = 2 ; capteur de mouvement
const int buttonPin_t3 = 5 ; bouton vers le haut
const int buttonPin_t2 = 4 ; bouton vers le bas
const int ledPin = 13 ; LED pour les boutons de contrôle
const int d1 = 11 ; moteur vers le haut
const int d0 = 12 ; moteur vers le bas
variables
int ContatoreSensoreMovimento = 0 ; capteur de déplacement de compteur
int Contatore_t3_t2 = 0 ;
int RegistroOutputd1 = 0 ;
int RegistroOutputd0 = 0 ;
sm de variables :
int State_sm = 0 ; État
int lastState_sm = 0 ; dernier État
ordine t3 :
int buttonState_t3 = 0 ; État
int lastButtonState_t3 = 0 ; dernier État
ordine t2 :
int buttonState_t2 = 0 ; État
int lastButtonState_t2 = 0 ; dernier État
void setup() {}
broche d’entrée d’initialisation :
pinMode (sm, entrée) ;
pinMode (buttonPin_t2, entrée) ;
pinMode (buttonPin_t3, entrée) ;
broche de sortie d’initialisation :
pinMode (d1, sortie) ;
pinMode (d0, sortie) ;
pinMode (ledPin, sortie) ;
déconnectée des communications série à 9600 bits/s :
Serial.Begin(9600) ;
}
void loop() {}
SM
lire le code pin :
State_sm = digitalRead(sm) ;
comparer le buttonState à son état antérieur
Si (State_sm! = lastState_sm) {}
Si l’État a changé, incrémenter le compteur
Si (State_sm == faible) {}
Si l’état actuel est faible alors
Wend d’off à on :
Si (RegistroOutputd1 == 1) {}
ContatoreSensoreMovimento ++ ;
}
Si (RegistroOutputd0 == 1) {}
ContatoreSensoreMovimento--;
}
Serial.println("on_sm") ;
Serial.Print ("ContatoreSensoreMovimento:") ;
Serial.println (ContatoreSensoreMovimento, DEC) ;
}
else {}
Wend d’off à on :
Serial.println("off_sm") ;
}
}
enregistrer l’état actuel comme le dernier État
pour la prochaine fois dans la boucle
lastState_sm = State_sm ;
Si (ContatoreSensoreMovimento % 4 == 0) {}
digitalWrite (ledPin, HIGH) ;
}
else {}
digitalWrite (ledPin, basse) ;
}
T3
lire le code pin :
buttonState_t3 = digitalRead(buttonPin_t3) ;
comparer le buttonState à son état antérieur
Si (buttonState_t3! = lastButtonState_t3) {}
Si l’état actuel est haute, alors :
Si (buttonState_t3 == HIGH) {}
Si le compteur est < 1 :
Si (Contatore_t3_t2 < 1) {}
incrémenter le compteur
Wend d’off à on :
Contatore_t3_t2 ++ ;
Serial.println("on_t3") ;
Serial.Print ("Contatore_t3_t2:") ;
Serial.println (Contatore_t3_t2, DEC) ;
}
}
else {}
Si l’état actuel est faible alors
Wend de sur à off
Serial.println("off_t3") ;
}
}
enregistrer l’état actuel comme le dernier État
pour la prochaine fois dans la boucle
lastButtonState_t3 = buttonState_t3 ;
Valore massimo contatore 1
T2
Lettura del pin :
buttonState_t2 = digitalRead(buttonPin_t2) ;
comparer le buttonState à son état antérieur
Si (buttonState_t2! = lastButtonState_t2) {}
Si l’état actuel est haute, alors :
Si (buttonState_t2 == HIGH) {}
Si le compteur est > -1 :
Si (Contatore_t3_t2 > -1) {}
incrémenter le compteur
Wend d’off à on :
Contatore_t3_t2--;
Serial.println("on_t2") ;
Serial.Print ("Contatore_t3_t2:") ;
Serial.println (Contatore_t3_t2, DEC) ;
}
}
else {}
Si l’état actuel est faible alors
Wend de sur à :
Serial.println("off_t2") ;
}
}
enregistrer l’état actuel comme le dernier État
pour la prochaine fois dans la boucle
lastButtonState_t2 = buttonState_t2 ;
Si (ContatoreSensoreMovimento < 35 & & Contatore_t3_t2 == 1) {}
digitalWrite (d1, HIGH) ;
RegistroOutputd1 = 1 ;
}
else {}
digitalWrite (d1, faible) ;
RegistroOutputd1 = 0 ;
Si (ContatoreSensoreMovimento == 35 & & Contatore_t3_t2 == 1) {}
Contatore_t3_t2 = 0 ;
}
}
Si (ContatoreSensoreMovimento > 0 & & Contatore_t3_t2 == -1) {}
digitalWrite (d0, HIGH) ;
RegistroOutputd0 = 1 ;
}
else {}
digitalWrite (d0, faible) ;
RegistroOutputd0 = 0 ;
Si (ContatoreSensoreMovimento == 0 & & Contatore_t3_t2 == -1) {}
Contatore_t3_t2 = 0 ;
}
}
}