Mon programme est créer et fonctionne sauf que, pendant que je soudais j'ai abîmé mon ancienne carte.
Programme en question:
#include <Servo.h>
// crée l’objet pour contrôler le servomoteur
Servo monservo;
// constantes ne change pas. Elles sont utilisées pour donner les pins:
const int BoutonD = 12; //le numéro de la pin du bouton départ
const int BoutonR = 10; //le numéro de la pin du bouton RAZ
const int LedF = 2; //le numéro de la pin de la Led fin de cycle
const int LedV = 6;//le numéro de la pin de la Led verte
const int LedJ = 7;//le numéro de la pin de la Led jaune
const int LedR = 3;//le numéro de la pin de la Led rouge
const int ReedV = 4;//le numéro de la pin du capteur REED vert
const int ReedJ = 5;//le numéro de la pin du capteur REED jaune
// les variables vont changées :
int etatBoutonD = 0;//état du bouton de départ
int etatBoutonR = 0;//état du bouton de RAZ
int etatReedV = 0;//état du capteur reed vert
int etatReedJ = 0;//état du capteur reed jaune
int pos = 0;//variable pour stocker la position du servomoteur
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
// initiliser les LEDs en tant que sortie :
pinMode(LedF, OUTPUT);
pinMode(LedV, OUTPUT);
pinMode(LedJ, OUTPUT);
pinMode(LedR, OUTPUT);
//initiliser les boutons en tant que entrer :
pinMode(BoutonD, INPUT);
pinMode(BoutonR, INPUT);
//capteur Reed en tant qu'entrer :
pinMode(ReedV, INPUT_PULLUP);
pinMode(ReedJ, INPUT_PULLUP);
//initialisation du servomoteur
monservo.attach(9); // utilise la broche 13 pour le contrôle du servomoteur
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
//Contrôle du reed jaune avant cycle (détection capteur bloqué fermé)
{etatReedJ = digitalRead(ReedJ);
if (etatReedJ == LOW){
digitalWrite(LedR, HIGH);
}
}
//Contrôle du reed vert avant cycle (détection capteur bloqué fermé)
{etatReedV = digitalRead(ReedV);
if (etatReedV == LOW){
digitalWrite(LedR, HIGH);
}
}
//Lit la broche d'entrée du bouton départ
etatBoutonD = digitalRead(BoutonD);
//Si le bouton est HIGH alors...
if (etatBoutonD == HIGH){
//Demande au servo de se déplacer à ... puis attendre ...
for(pos = 0; pos < 135; pos+= 1);
{
monservo.write(pos);
delay(500);
}
//Contrôle du capteur reed vert, on lit la broche puis si elle est LOW alors on allume la Led verte sinon on éteind
{etatReedV = digitalRead(ReedV);
if (etatReedV == LOW){
digitalWrite(LedV, HIGH);
}else{
digitalWrite(LedR,HIGH);
}
}
//Demande au servo de se déplacer à ... puis attendre ...
for(pos = 135; pos >=5; pos -=1)
{monservo.write(pos);
delay(20);
}
//Contrôle du capteur reed jaune, on lis la broche puis si elle est LOW alors on allume la Led verte sinon on éteind
{etatReedJ = digitalRead(ReedJ);
if (etatReedJ == LOW){
digitalWrite(LedJ, HIGH);
}else{
digitalWrite(LedR, HIGH);
}
}
//Demande au servo de se déplacer à ... puis attendre ...
delay(500);
monservo.write(80); // demande au servo de se déplacer à cette position
delay(200); // attend 1000 ms entre changement de position
//Allumer la led de fin de cycle
digitalWrite(LedF, HIGH); //Allumer la Led en fin de cycle
}
// lire l'état du bouton RAZ
{etatBoutonR = digitalRead(BoutonR);
//Si le bouton RAZ est HIGH alors éteind les leds
if (etatBoutonR == HIGH){
digitalWrite(LedF, LOW);
digitalWrite(LedV, LOW);
digitalWrite(LedJ,LOW);
digitalWrite(LedR,LOW);
}
}
}
Une fois ma nouvelle carte reçu, je téléverse mon programme, il fonctionne
Quelques temps plus tard, j'ai voulu la refaire marcher mais impossible (je rappelle l’Arduino est neuve) la LED ON s'allume mais pas la LED L .
J'ai essayé de débrancher tous mes fils qui venait sur l’Arduino, rien ne change,
J'ai essayé de mettre à jour toutes mes bibliothèques, mes cartes et le PC, mais rien ne change,
Pour finir j'ai essayé de mettre un programme exemple "Blink", et là, la LED ON s'allume et la LED L clignote.
Est-ce que c'est déjà arriver à quelqu'un ? Quelles peuvent être les solutions pour m'aider ?
(alimenter un UNO avec 12V c'est faire chauffer la carte pour rien - elle a besoin de 5V donc les autres 7V multipliés par la consommation de la carte, c'est de la puissance dissipée par le régulateur sous forme de chaleur)
vos boutons peuvent être connectés sans soucis au 5V de votre Arduino, ce n'est pas ça qui va faire chauffer la carte. vous n'avez pas besoin de les câbler comme ils le sont d'ailleurs, vous pourriez faire comme pour les Reed, utiliser le pullup interne de votre arduino
si vous connectez les boutons à une alim séparée (celle du servo) il faudra quand même que le GND des boutons soit le même que celui de l'arduino
si vous aviez une bonne alim stabilisée 5V, elle pourrait servir à la fois pour l'arduino et à la fois pour le servo (avec un petit étage de découplage peut être)
Tout est branché, si je branche l'alimentation Usb sur le PC ou en 12V, la LED de la carte ON s'allume, si j’appuie sur le bouton départ cycle la LED L s'allume mais rien ne se passe
#include <Servo.h>
// crée l’objet pour contrôler le servomoteur
Servo monservo;
// constantes ne change pas. Elles sont utilisées pour donner les pins:
const int BoutonD = 12; //le numéro de la pin du bouton départ
const int BoutonR = 10; //le numéro de la pin du bouton RAZ
const int LedF = 2; //le numéro de la pin de la Led fin de cycle
const int LedV = 6;//le numéro de la pin de la Led verte
const int LedJ = 7;//le numéro de la pin de la Led jaune
const int LedR = 3;//le numéro de la pin de la Led rouge
const int ReedV = 4;//le numéro de la pin du capteur REED vert
const int ReedJ = 5;//le numéro de la pin du capteur REED jaune
// les variables vont changées :
int etatBoutonD = 0;//état du bouton de départ
int etatBoutonR = 0;//état du bouton de RAZ
int etatReedV = 0;//état du capteur reed vert
int etatReedJ = 0;//état du capteur reed jaune
int pos = 0;//variable pour stocker la position du servomoteur
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
// initiliser les LEDs en tant que sortie :
pinMode(LedF, OUTPUT);
pinMode(LedV, OUTPUT);
pinMode(LedJ, OUTPUT);
pinMode(LedR, OUTPUT);
//initiliser les boutons en tant que entrer :
pinMode(BoutonD, INPUT);
pinMode(BoutonR, INPUT);
//capteur Reed en tant qu'entrer :
pinMode(ReedV, INPUT_PULLUP);
pinMode(ReedJ, INPUT_PULLUP);
//initialisation du servomoteur
// monservo.attach(9); // utilise la broche 9 pour le contrôle du servomoteur
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
//Contrôle du reed jaune avant cycle (détection capteur bloqué fermé)
{etatReedJ = digitalRead(ReedJ);
if (etatReedJ == LOW){
digitalWrite(LedR, HIGH);
}
}
//Contrôle du reed vert avant cycle (détection capteur bloqué fermé)
{etatReedV = digitalRead(ReedV);
if (etatReedV == LOW){
digitalWrite(LedR, HIGH);
}
}
//Lit la broche d'entrée du bouton départ
etatBoutonD = digitalRead(BoutonD);
//Si le bouton est HIGH alors...
if (etatBoutonD == HIGH){
//Demande au servo de se déplacer à ... puis attendre ...
for(pos = 0; pos < 135; pos+= 1);
{
monservo.write(pos);
delay(500);
}
//Contrôle du capteur reed vert, on lit la broche puis si elle est LOW alors on allume la Led verte sinon on éteind
{etatReedV = digitalRead(ReedV);
if (etatReedV == LOW){
digitalWrite(LedV, HIGH);
}else{
digitalWrite(LedR,HIGH);
}
}
//Demande au servo de se déplacer à ... puis attendre ...
for(pos = 135; pos >=5; pos -=1)
{monservo.write(pos);
delay(20);
}
//Contrôle du capteur reed jaune, on lis la broche puis si elle est LOW alors on allume la Led verte sinon on éteind
{etatReedJ = digitalRead(ReedJ);
if (etatReedJ == LOW){
digitalWrite(LedJ, HIGH);
}else{
digitalWrite(LedR, HIGH);
}
}
//Demande au servo de se déplacer à ... puis attendre ...
delay(500);
monservo.write(80); // demande au servo de se déplacer à cette position
delay(200); // attend 1000 ms entre changement de position
//Allumer la led de fin de cycle
digitalWrite(LedF, HIGH); //Allumer la Led en fin de cycle
}
// lire l'état du bouton RAZ
{etatBoutonR = digitalRead(BoutonR);
//Si le bouton RAZ est HIGH alors éteind les leds
if (etatBoutonR == HIGH){
digitalWrite(LedF, LOW);
digitalWrite(LedV, LOW);
digitalWrite(LedJ,LOW);
digitalWrite(LedR,LOW);
}
}
}
Voici le programme avec les corrections dans les annotations,
Les deux Delay (500) c'est le moment ou les aimants sont en face du capteur électromagnétique donc je laisse du temps pour être sur que cela fonction et 500ms vaut 0.5s et non 1 minute