
Mais pour mon clavier , quand j'utiliserais if else , case et des fonctions switch , comment le programme saura que j'appuie sur mon clavier d'ordinateur ?
Posté 21 mai 2012 - 04:34
Posté 21 mai 2012 - 11:23
int EN1 = 6; int EN2 = 5; int IN1 = 7; int IN2 = 4; void Motor1(int pwm, boolean reverse) { analogWrite(EN1,pwm); //définir le contrôle PWM, 0 pour l'arrêt, et 255 pour une vitesse maximale if(reverse) { digitalWrite(IN1,HIGH);//(HAUT) } else { digitalWrite(IN1,LOW); //(BAS) } } void Motor2(int pwm, boolean reverse) { analogWrite(EN2,pwm); if(reverse) { digitalWrite(IN2,HIGH);//(HAUT) } else { digitalWrite(IN2,LOW);//(BAS) } } void setup()// fonction setup - début de l'exécution du programme { int i; for(i=4;i<=7;i++) //Pour Arduino Shield moteur pinMode(i, OUTPUT); //régler les broche 4,5,6,7 au mode de sortie Serial.begin(9600); // ouvre le port série et fixe le debit de communication à 9600 bauds } void loop()// fonction loop - est exécutée en boucle , une fois que la fonction setup a été exécutée { int x,delay_en; char val; // déclare une variable char while(1) // tant que l'expression est vraie { val = Serial.read();// lit l'octet entrant if(val!=-1) { switch(val)// debut de la structure { case 'w'://Aller de l'avant //Vous pouvez changer la vitesse, comme moteur (50, true) Motor1(100,true); //true (=VRAI) Motor2(100,true);//true (=VRAI) break;// sortie de la boucle case 'x'://reculer Motor1(100,false); //false (= FAUX) Motor2(100,false);//false (= FAUX) break;// sortie de la boucle case 'a'://tourner à gauche Motor1(100,false);//false (= FAUX) Motor2(100,true);//true (=VRAI) break; // sortie de la boucle case 'd'://tourner à droite Motor1(100,true); //true (=VRAI) Motor2(100,false);//false (= FAUX) break; // sortie de la boucle case 's'://stop Motor1(0,false); //false (= FAUX) Motor2(0,false);//false (= FAUX) break;// sortie de la boucle } } } }
Posté 21 mai 2012 - 12:52
val = Serial.read();// lit l'octet entrant if(val!=-1) { switch(val)// debut de la structure { case 'w'://Aller de l'avant //Vous pouvez changer la vitesse, comme moteur (50, true) Motor1(100,true); //true (=VRAI) Motor2(100,true);//true (=VRAI) break;// sortie de la boucle
Posté 21 mai 2012 - 01:26
alors le debut j'ai pas compris quelque chose ... qu'est ce que IN(moteur?) et qu'est ce que EN(le en du l293d ? ) ??
int EN1 = 6; int EN2 = 5; int IN1 = 7; int IN2 = 4;
int moteur1 = 6; int moteur2 = 5; int vitesse1 = 7; int vitesse2 = 4;
Posté 22 mai 2012 - 05:41
/* controls each motor in an Edge Robotic Arm using data sent from a Processing Sketch */ // set the output pins // 14-18 are actually analog pins 0-4 int baseMoteurEnablePin = 2; int baseMoteurPin1 = 3; int baseMoteurPin2 = 4; int epauleMoteurEnablePin = 14; int epauleMoteurPin1 = 15; int epauleMoteurPin2 = 16; int coudeMoteurEnablePin = 8; int coudeMoteurPin1 = 9; int coudeMoteurPin2 = 10; int poigneeMotorEnablePin = 5; int poigneeMotorPin1 = 6; int poigneeMotorPin2 = 7; int pinceMotorEnablePin = 11; int pinceMotorPin1 = 17; int pinceMotorPin2 = 18; // set a variable to store the byte sent from the serial port int incomingByte; void setup() { // set the L293D pins as outputs: pinMode(baseMoteurPin1, OUTPUT); pinMode(baseMoteurPin2, OUTPUT); pinMode(baseMoteurEnablePin, OUTPUT); digitalWrite(baseMoteurEnablePin, HIGH); pinMode(epauleMoteurPin1, OUTPUT); pinMode(epauleMoteurPin2, OUTPUT); pinMode(epauleMoteurEnablePin, OUTPUT); digitalWrite(epauleMoteurEnablePin, HIGH); pinMode(coudeMoteurPin1, OUTPUT); pinMode(coudeMoteurPin2, OUTPUT); pinMode(coudeMoteurEnablePin, OUTPUT); digitalWrite(coudeMoteurEnablePin, HIGH); pinMode(poigneeMoteurPin1, OUTPUT); pinMode(poigneeMoteurPin2, OUTPUT); pinMode(poigneeMoteurEnablePin, OUTPUT); digitalWrite(poigneeMoteurEnablePin, HIGH); pinMode(pinceMoteurPin1, OUTPUT); pinMode(pinceMoteurPin2, OUTPUT); pinMode(pinceMoteurEnablePin, OUTPUT); digitalWrite(pinceMoteurEnablePin, HIGH); // start sending data at 9600 baud rate Serial.begin(9600); } void loop() { // check that there's something in the serial buffer if (Serial.available() > 0) { // read the byte and store it in our variable // the byte sent is actually an ascii value incomingByte = Serial.read(); // note the upper casing of each letter! // diferrent lettre pour les directions. if (incomingByte == 'Q') { digitalWrite(baseMotorPin1, LOW); digitalWrite(baseMotorPin2, HIGH); } if (incomingByte == 'W') { digitalWrite(baseMotorPin1, HIGH); digitalWrite(baseMotorPin2, LOW); } if (incomingByte == 'E') { digitalWrite(epauleMoteurPin1, LOW); digitalWrite(epauleMoteurPin2, HIGH); } if (incomingByte == 'R') { digitalWrite(epauleMoteurPin1, HIGH); digitalWrite(epauleMoteurPin2, LOW); } if (incomingByte == 'A') { digitalWrite(coudeMoteurPin1, LOW); digitalWrite(coudeMoteurPin2, HIGH); } if (incomingByte == 'S') { digitalWrite(coudeMoteurPin1, HIGH); digitalWrite(coudeMoteurPin2, LOW); } if (incomingByte == 'D') { digitalWrite(poigneeMoteurPin1, LOW); digitalWrite(poigneeMoteurPin2, HIGH); } if (incomingByte == 'F') { digitalWrite(poigneeMoteurPin1, HIGH); digitalWrite(poigneeMoteurPin2, LOW); } if (incomingByte == 'Z') { digitalWrite(pinceMoteurPin1, LOW); digitalWrite(pinceMoteurPin2, HIGH); } if (incomingByte == 'X') { digitalWrite(pinceMoteurPin1, HIGH); digitalWrite(pinceMoteurPin2, LOW); } // si O est envoyer les moteurs ne s'allumeront pas (OFF) if (incomingByte == 'O') { digitalWrite(baseMotorPin1, LOW); digitalWrite(baseMotorPin2, LOW); digitalWrite(epauleMoteurPin1, LOW); digitalWrite(epauleMoteurPin2, LOW); digitalWrite(coudeMoteurPin1, LOW); digitalWrite(coudeMoteurPin2, LOW); digitalWrite(poigneeMoteurPin1, LOW); digitalWrite(poigneeMoteurPin2, LOW); digitalWrite(pinceMoteurPin1, LOW); digitalWrite(pinceMoteurPin2, LOW); } } }
Posté 22 mai 2012 - 11:49
int baseMoteurEnablePin = 2; int baseMoteurPin1 = 3; int baseMoteurPin2 = 4; int epauleMoteurEnablePin = 14; int epauleMoteurPin1 = 15; int epauleMoteurPin2 = 16; int coudeMoteurEnablePin = 8; int coudeMoteurPin1 = 9; int coudeMoteurPin2 = 10; int poigneeMotorEnablePin = 5; int poigneeMotorPin1 = 6; int poigneeMotorPin2 = 7; int pinceMotorEnablePin = 11; int pinceMotorPin1 = 17; int pinceMotorPin2 = 18; // set a variable to store the byte sent from the serial port int incomingByte; void setup() { // set the L293D pins as outputs: pinMode(baseMoteurPin1, OUTPUT); pinMode(baseMoteurPin2, OUTPUT); pinMode(baseMoteurEnablePin, OUTPUT); digitalWrite(baseMoteurEnablePin, HIGH); pinMode(epauleMoteurPin1, OUTPUT); pinMode(epauleMoteurPin2, OUTPUT); pinMode(epauleMoteurEnablePin, OUTPUT); digitalWrite(epauleMoteurEnablePin, HIGH); pinMode(coudeMoteurPin1, OUTPUT); pinMode(coudeMoteurPin2, OUTPUT); pinMode(coudeMoteurEnablePin, OUTPUT); digitalWrite(coudeMoteurEnablePin, HIGH); pinMode(poigneeMotorPin1, OUTPUT); pinMode(poigneeMotorPin2, OUTPUT); pinMode(poigneeMotorEnablePin, HIGH); pinMode(pinceMotorPin1, OUTPUT); pinMode(pinceMotorPin2, OUTPUT); pinMode(pinceMotorEnablePin, OUTPUT); digitalWrite(pinceMotorEnablePin, HIGH); // start sending data at 9600 baud rate Serial.begin(9600); } void loop() { // check that there's something in the serial buffer if (Serial.available() > 0) { // read the byte and store it in our variable // the byte sent is actually an ascii value incomingByte = Serial.read(); // note the upper casing of each letter! // diferrent lettre pour les directions. if (incomingByte == 'Q') { digitalWrite(baseMoteurPin1, LOW); digitalWrite(baseMoteurPin2, HIGH); } if (incomingByte == 'W') { digitalWrite(baseMoteurPin1, HIGH); digitalWrite(baseMoteurPin2, LOW); } if (incomingByte == 'E') { digitalWrite(epauleMoteurPin1, LOW); digitalWrite(epauleMoteurPin2, HIGH); } if (incomingByte == 'R') { digitalWrite(epauleMoteurPin1, HIGH); digitalWrite(epauleMoteurPin2, LOW); } if (incomingByte == 'A') { digitalWrite(coudeMoteurPin1, LOW); digitalWrite(coudeMoteurPin2, HIGH); } if (incomingByte == 'S') { digitalWrite(coudeMoteurPin1, HIGH); digitalWrite(coudeMoteurPin2, LOW); } if (incomingByte == 'D') { digitalWrite(poigneeMotorPin1, LOW); digitalWrite(poigneeMotorPin2, HIGH); } if (incomingByte == 'F') { digitalWrite(poigneeMotorPin1, HIGH); digitalWrite(poigneeMotorPin2, LOW); } if (incomingByte == 'Z') { digitalWrite(pinceMotorPin1, LOW); digitalWrite(pinceMotorPin2, HIGH); } if (incomingByte == 'X') { digitalWrite(pinceMotorPin1, HIGH); digitalWrite(pinceMotorPin2, LOW); } // si O est envoyer les moteurs ne s'allumeront pas (OFF) if (incomingByte == 'O') { digitalWrite(baseMoteurPin1, LOW); digitalWrite(baseMoteurPin2, LOW); digitalWrite(epauleMoteurPin1, LOW); digitalWrite(epauleMoteurPin2, LOW); digitalWrite(coudeMoteurPin1, LOW); digitalWrite(coudeMoteurPin2, LOW); digitalWrite(poigneeMotorPin1, LOW); digitalWrite(poigneeMotorPin2, LOW); digitalWrite(pinceMotorPin1, LOW); digitalWrite(pinceMotorPin2, LOW); } } }
Posté 22 mai 2012 - 12:13
Posté 22 mai 2012 - 12:17
Posté 22 mai 2012 - 12:26
et après rajouter un bout de code pour contrôler avec bluetooth ?
Posté 22 mai 2012 - 12:51
Posté 22 mai 2012 - 01:14
Posté 22 mai 2012 - 05:38
Posté 23 mai 2012 - 09:53
Le code que tu m'as corrige , sais tu comment les moteurs fonctionnent quand j'appuie sur une touche . Je m'explique plus clairement . Si j'appuie sur W pour avancer , si j'appuie un bref coup sur la touche le robot avancera un tout petit peu , ou avancera t-il quelques dizaines de cm ? si tu n'as pas compris , fais moi signe , j'essaierais d'être plus clair
int EN1 = 6; int EN2 = 5; int IN1 = 7; int IN2 = 4; void Motor1(int pwm, boolean reverse) { analogWrite(EN1,pwm); //définir le contrôle PWM, 0 pour l'arrêt, et 255 pour une vitesse maximale if(reverse) { digitalWrite(IN1,HIGH);//(HAUT) } else { digitalWrite(IN1,LOW); //(BAS) } } void Motor2(int pwm, boolean reverse) { analogWrite(EN2,pwm); if(reverse) { digitalWrite(IN2,HIGH);//(HAUT) } else { digitalWrite(IN2,LOW);//(BAS) } } void setup()// fonction setup - début de l'exécution du programme { int i; for(i=4;i<=7;i++) //Pour Arduino Shield moteur pinMode(i, OUTPUT); //régler les broche 4,5,6,7 au mode de sortie Serial.begin(9600); // ouvre le port série et fixe le debit de communication à 9600 bauds } void loop()// fonction loop - est exécutée en boucle , une fois que la fonction setup a été exécutée { int x,delay_en; char val; // déclare une variable char while(1) // tant que l'expression est vraie { val = Serial.read();// lit l'octet entrant if(val!=-1) { switch(val)// debut de la structure { case 'w'://Aller de l'avant //Vous pouvez changer la vitesse, comme moteur (50, true) Motor1(100,true); //true (=VRAI) Motor2(100,true);//true (=VRAI) break;// sortie de la boucle case 'x'://reculer Motor1(100,false); //false (= FAUX) Motor2(100,false);//false (= FAUX) break;// sortie de la boucle case 'a'://tourner à gauche Motor1(100,false);//false (= FAUX) Motor2(100,true);//true (=VRAI) break; // sortie de la boucle case 'd'://tourner à droite Motor1(100,true); //true (=VRAI) Motor2(100,false);//false (= FAUX) break; // sortie de la boucle case 's'://stop Motor1(0,false); //false (= FAUX) Motor2(0,false);//false (= FAUX) break;// sortie de la boucle } } } }
Posté 23 mai 2012 - 01:40
Posté 24 mai 2012 - 08:31
Posté 24 mai 2012 - 11:02
Posté 24 mai 2012 - 01:05
Posté 24 mai 2012 - 06:46
#include <Servo.h> // librairie pour servomoteur const int SERVO1=11; const int SERVO2=12; int ReceptionOctet=0; // variable de stockage des octets reçus par port série int ReceptionNombre=0; // variable de calcul du nombre reçu par port série int impulsion=1500; // variable pour impulsion - valeur médiane initiale Servo servo_1; Servo servo_2; void setup() { servo_1.attach(SERVO1); servo_2.attach(SERVO1); Serial.begin(115200); pinMode(SERVO1, OUTPUT); pinMode(SERVO2, OUTPUT); } void loop(){ if (Serial.available()>0) { while (Serial.available()>0) { ReceptionOctet= Serial.read(); ReceptionOctet=ReceptionOctet-48; if ((ReceptionOctet>=0)&&(ReceptionOctet<=9)) ReceptionNombre = (ReceptionNombre*10)+ReceptionOctet; delay(1); } Serial.print ("Nombre recu= "); Serial.println(ReceptionNombre); impulsion=ReceptionNombre; if (impulsion>2600)impulsion=2500; if (impulsion<300)impulsion=500; servo_1.writeMicroseconds(impulsion); servo_2.writeMicroseconds(impulsion); Serial.print ("Impulsion servomoteur = "); Serial.print(impulsion); Serial.println (" microsecondes "); delay (1000); ReceptionNombre=0; } }
Posté 24 mai 2012 - 08:52
0 members, 2 guests, 0 anonymous users