Étape 6: Le CODE
Le codage a été un défi, puisque le DTMF peut générer du code pour obtenir un seul chiffre à la fois.
Le problème était codant pour le mode manuel où je devais définir une clé pour passer en mode manuel. Je vais vous expliquer avec un exemple:-
void loop()
{
int z = digitalRead(d0) ;
int y = digitalRead(d1) ;
int x = digitalRead(d2) ;
int w = digitalRead(d3) ;
Si ((w == LOW) & &(x == LOW) & &(y == LOW) & &(z == HIGH)) c'est-à-dire le chiffre 1
Si ((w == LOW) & &(x == LOW) & &(y == HIGH) & &(z == LOW)) c'est-à-dire le chiffre 2
Le code devrait fonctionner comme ceci:-Si vous appuyez sur 1, le robot se met en mode manuel et en appuyant sur 2 sur le clavier le robot se déplace vers l’avant. Mais ce qui se passe réellement, c’est que comme je presse 2 le robot n’est plus en mode manuel. POURQUOI???
La réponse est que, l’État sur les broches de l’Arduino connecté à la DTMF ont changé maintenant, c'est-à-dire qu’ils ne sont plus 1, car les informations d’État ne sont pas stockées n’importe où (parce que l’Etat doit changer lorsque le robot est en mode autonome et la DTMF aussi peut générer uniquement le code pour la dernière touche enfoncée et ne peut pas stocker le code lui-même).
LA SOLUTION:-la solution était simple, au lieu de placer une condition pour un certain nombre, pour changer le mode, je l’avais placé un chiffre:-
Exemple:-
if(w == Low)
{
Si ((w == LOW) & &(x == LOW) & &(y == HIGH) & &(z == LOW))
{
digitalWrite (motorL1, HIGH) ;
digitalWrite (motorL2, basse) ;
digitalWrite (motorR1, HIGH) ;
digitalWrite (motorR2, basse) ;
}
Si ((w == LOW) & &(x == HIGH) & &(y == LOW) & &(z == HIGH))
{
digitalWrite (motorL1, basse) ;
digitalWrite (motorL2, HIGH) ;
digitalWrite (motorR1, basse) ;
digitalWrite (motorR2, HIGH) ;
}
Si ((w == LOW) & &(x == HIGH) & &(y == LOW) & &(z == LOW))
{
digitalWrite (motorL1, basse) ;
digitalWrite (motorL2, HIGH) ;
digitalWrite (motorR1, HIGH) ;
digitalWrite (motorR2, basse) ;
}
Si ((w == LOW) & &(x == HIGH) & &(y == HIGH) & &(z == LOW))
{
digitalWrite (motorL1, HIGH) ;
digitalWrite (motorL2, basse) ;
digitalWrite (motorR1, basse) ;
digitalWrite (motorR2, HIGH) ;
}
Si ((w == LOW) & &(x == HIGH) & &(y == HIGH) & &(z == HIGH))
{
digitalWrite (motorL1, basse) ;
digitalWrite (motorL2, basse) ;
digitalWrite (motorR1, basse) ;
digitalWrite (motorR2, basse) ;
}
}
« W » RESTERA TOUJOURS FAIBLE POUR LES CHIFFRES CI-DESSUS, LE W = 0 CONDITION SERA VRAIE TOUT AU LONG.