Bonjour !
Débutant dans le langage arduino, j'essaye en ce moment de faire un programme visant à faire tourner un servomoteur grâce à un code tapé sur un clavier matriciel.
Hélas, le programme que j'ai créé - en m'inspirant de divers tutos sur le net - semble avoir un problème puisque lorsque j'effectue une simulation avec ISIS le servomoteur ne tourne pas.
Est-ce que vous pouvez y jeter un œil et me dire si, en admettant que le problème ne vienne pas du montage, quelque chose cloche ?
// On ajoute 3 librairies à notre code :
#include <Password.h>
#include <Keypad.h>
#include <Servo.h>
// On définit les PINs pour les 3 couleurs de notre led RGB :
#define rouge 12
#define vert 11
#define bleu 10
// On crée une variable associée à notre servomoteur :
Servo servo;
// On définit le mot de passe qui déverrouillera la valise :
Password password = Password( "1234" );
// On définit un second mot de passe qui servira à la verrouiller :
Password fermeture = Password( "0" );
const byte ROWS = 4; // Il y a 4 Lignes sur notre clavier
const byte COLS = 3; // ... et 3 Colonnes.
// On définit les touches du clavier :
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
// On associe les lignes et les colonnes du clavier à leurs PINs respectifs :
byte rowPins[ROWS] = { 5, 4, 3, 2 };
byte colPins[COLS] = { 8, 7, 6 };
// On initialise le clavier :
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
// On initialise les 3 couleurs de la led RGB en sorties :
pinMode(rouge,OUTPUT);
pinMode(vert,OUTPUT);
pinMode(bleu,OUTPUT);
// On associe le Pin 9 à notre servomoteur :
servo.attach(9);
// On ajoute une fonction qui permet d'analyser les saisies du clavier :
keypad.addEventListener(keypadEvent);
}
void loop(){
// Création de la variable eKey, qui prendra pour valeur la touche apppuyée :
char eKey = keypad.getKey();
}
void keypadEvent(KeypadEvent eKey){
// On définit les différentes options de saisie du clavier :
switch (eKey){ case '*': guessPassword(); break; // En cas d'appui sur la touche "*", on lance le void guessPassword.
case '#': password.reset(); break; // On appuie sur "#" pour réinitialiser sa saisie.
default: password.append(eKey);} // Si on appuie sur un chiffre, il s'ajoute à la saisie.
}
void guessPassword(){
// Si le mot de passe est juste, on allume la led en vert durant 2.5 secondes
// et on effectue une rotation du servomoteur de 180° :
if (password.evaluate()){
digitalWrite(vert,HIGH);
delay(2500);
pinMode(vert,LOW);
for (int position = 0; position <= 180; position++)
{
servo.write(position);
}
}
// Si on utilise le mot de passe de fermeture, on allume la led en bleu
// durant 2.5 secondes et on effectue une rotation du servomoteur de -180° :
if (fermeture.evaluate()){
digitalWrite(bleu,HIGH);
delay(2500);
pinMode(bleu,LOW);
for (int position = 0; position <= -180; position++)
{
servo.write(position);
}
}
// Sinon, on allume simplement la led en rouge durant 2.5 secondes :
else {
pinMode(rouge,HIGH);
delay(2500);
pinMode(rouge,LOW);
}
}
Merci ! (en espérant ne pas m'être trompé de section)