Le but étant qu'avec 1 bouton 3 positions fixes je sélectionne le type de mouvement et qu'avec 2 boutons à rappel au centre je commande le mouvement (monté/descente - droite/gauche)
J'ai réussi à faire le code de l'arduino qui servira de télécommande mais pour le moment je lui fais allumer des led correspondant au mouvement demandé soit 8 mouvements :
- monté vérin gauche
- descente vérin gauche
- monté vérin droite
- descente vérin droite
- monté treuil gauche
- descente treuil gauche
- monté treuil droite
- descente treuil droite
- Code: Tout sélectionner
const int L1H = 2; // Levier 1 haut connecté à la broche 2
const int L1B = 3; // Levier 1 bas connecté à la broche 3
const int L2H = 4; // Levier 2 haut connecté à la broche 4
const int L2B = 5; // Levier 2 bas connecté à la broche 5
const int C3G = A0; // Commutateur 3 gauche connecté à la broche A0
const int C3D = A1; // Commutateur 3 droite connecté à la broche A1
const int led1 = 6; // LED connectée à la broche n°6
const int led2 = 7; // LED connectée à la broche n°7
const int led3 = 8; // LED connectée à la broche n°8
const int led4 = 9; // LED connectée à la broche n°9
const int led5 = 10; // LED connectée à la broche n°10
const int led6 = 11; // LED connectée à la broche n°11
const int led7 = 12; // LED connectée à la broche n°12
const int led8 = 13; // LED connectée à la broche n°13
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0; // variable pour mémoriser la valeur lue
int val5 = 0;
int val6 = 0;
int val0;
void setup()
{
Serial.begin(9600);
pinMode(L1H, INPUT_PULLUP); // configure la broche 2 en ENTREE
pinMode(L1B, INPUT_PULLUP); // configure la broche 3 en ENTREE
pinMode(L2H, INPUT_PULLUP); // configure la broche 4 en ENTREE
pinMode(L2B, INPUT_PULLUP); // configure la broche 5 en ENTREE
pinMode(C3G, INPUT_PULLUP); // configure la broche A0 en ENTREE
pinMode(C3D, INPUT_PULLUP); // configure la broche A1 en ENTREE
pinMode(led1, OUTPUT); // configure la broche 6 en SORTIE
pinMode(led2, OUTPUT); // configure la broche 7 en SORTIE
pinMode(led3, OUTPUT); // configure la broche 8 en SORTIE
pinMode(led4, OUTPUT); // configure la broche 9 en SORTIE
pinMode(led5, OUTPUT); // configure la broche 10 en SORTIE
pinMode(led6, OUTPUT); // configure la broche 11 en SORTIE
pinMode(led7, OUTPUT); // configure la broche 12 en SORTIE
pinMode(led8, OUTPUT); // configure la broche 13 en SORTIE
}
void loop()
{
val1 = digitalRead(L1H); // lit l'état de la broche en entrée
val2 = digitalRead(L1B); // et met le résultat dans la variable
val3 = digitalRead(L2H);
val4 = digitalRead(L2B);
val5 = digitalRead(C3G);
val6 = digitalRead(C3D);
// codage fonction
{
{if(val5 == LOW && val6 == HIGH ) // bouton à gauche
val0 = 1;
}
{if(val5 == HIGH && val6 == HIGH ) // bouton au milieu
val0 = 2;
}
{if(val5 == HIGH && val6 == LOW ) // bouton au milieu
val0 = 3;
}
}
// Fonction Verin
{ if (val0 == 1)
{ digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
// allongement Verin gauche
if(val1 == 1)
{digitalWrite(led1,LOW);}
else
{digitalWrite(led1,HIGH);
Serial.println("1");}
// retraction Verin gauche
if(val2 == 1)
{digitalWrite(led2,LOW);}
else
{digitalWrite(led2,HIGH);}
// allongement Verin droite
if(val3 == 1)
{digitalWrite(led3,LOW);}
else
{digitalWrite(led3,HIGH);
Serial.println("3");}
// retraction Verin droite
if(val4 == 1)
{digitalWrite(led4,LOW);}
else
{digitalWrite(led4,HIGH);}
}
}
// Fonction treuil
{ if(val0 != 1)
{ digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
// fonction Treuil endroit
if(val0 == 2)
{
// enroulement treuil gauche
if(val1 == 1)
{digitalWrite(led5,LOW);}
else
{digitalWrite(led5,HIGH);}
// déroulement treuil gauche
if(val2 == 1)
{digitalWrite(led6,LOW);}
else
{digitalWrite(led6,HIGH);}
// enroulement treuil droite
if(val3 == 1)
{digitalWrite(led7,LOW);}
else
{digitalWrite(led7,HIGH);}
// déroulement treuil droite
if(val4 == 1)
{digitalWrite(led8,LOW);}
else
{digitalWrite(led8,HIGH);}
}
// fonction Treuil envers
else if(val0 == 3)
{
// enroulement treuil gauche
if(val1 == 1)
{digitalWrite(led7,LOW);}
else
{digitalWrite(led7,HIGH);}
// déroulement treuil gauche
if(val2 == 1)
{digitalWrite(led8,LOW);}
else
{digitalWrite(led8,HIGH);}
// enroulement treuil droite
if(val3 == 1)
{digitalWrite(led5,LOW);}
else
{digitalWrite(led5,HIGH);}
// déroulement treuil droite
if(val4 == 1)
{digitalWrite(led6,LOW);}
else
{digitalWrite(led6,HIGH);}
}}}}
Le but est d'envoyer les informations sur un deuxième arduino qui commanderait des relais
Mon problème est que je ne comprends pas comment transmettre ces informations et si cela est réalisable.
Mes contraintes sont :
- porté environ 20m
- réactivité environ 1/2 seconde
- la possibilité de commander 2 relais à la fois (droite et gauche)
- que le récepteur réalise que les fonction de ma télécommande
Je dispose de
- 2 arduino uno http://www.ebay.fr/itm/131336753696
- 1 couple émetteur - récepteur 433mhz http://www.ebay.fr/itm/281755480114)
- 2 plaques de prototype http://www.ebay.fr/itm/381374637344
- 1 poignée de câble d'essai http://www.ebay.fr/itm/281486905863
- 6 led et 4 BP http://www.ebay.fr/itm/181563923440
Ce type d'émetteur/récepteur convient il? ceux ci sont ils mieux ? http://www.ebay.fr/itm/170819064718
Les tuto parlent de librairie VirtualWire mais là je suis dépassé, si quelqu'un pouvait faire juste un morceau de programme genre :
- 1 appuis sur bp arduino 1 allume led arduino 2
ce serait vraimant cool!
Dernière petite question :
les broches 0 et 1 de l'arduino (RX et TX) sont elles celles à utiliser avec les émetteur/récepteur?
Merci de vos réponses.