Je suis en Terminale S, en spécialité ISN mais je ne connais que très peu de choses en informatique, (pour ne pas dire rien...).
Pour le Bac, avec trois camarades de classes nous avons eu comme idée de projet d'organiser un concours de robots suiveurs de lignes dans l'enceinte de notre établissement. (plus précisément nous voulions programmer des robots et notre professeur nous a informés qu'il souhaitait réaliser cette idée depuis quelques années). Nous avons donc comme sous-projet de réaliser un site internet, tenir une communication avec un adresse mail, faire un manuel de codes vulgarisés ou très basiques et de tester des codes sur un robot.
Notre professeur nous as confié un robot diduino avec une carte arduino duemilanove. Je joins des photos car n'y connaissant vraiment pas grand chose mes mots ne sauraient décrire bien précisément ce que nous avons en matériel :
Notre robot : X
Fils : X
Accessoires : X(diodes et résistances)
Une Dell : X
Depuis un certain moment nous arrivons à faire avancer, reculer et tourner le robot. Donc je suppose que nous avons intégré comment les moteurs des roues marchent.
On a recensé les choses suivantes :
LED verte : avance
LED rouge : recule
delay : temps durant lequel on effectue ce qui est indiqué
0 : puissance max
255 : puissance min
M1 E1 = droit
M2 E2 = gauche
//1er Programme, avance par à-coups: // Moteur droit int M1 = 5; int E1 = 4; //Moteur gauche int E2 = 7; int M2 = 6; byte pwm_val = 0; void setup() { pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(E1, OUTPUT); pinMode(E2, OUTPUT); } void loop() { // Moteur droit en mode avance puissance moyenne digitalWrite(M1, HIGH); analogWrite(E1, 125); //Moteur Gauche en mode recul puissance nulle, inutile donc(?) mais je préfère garder le squelette en l'état digitalWrite(M2, LOW); analogWrite(E2, 255); // Temps d'agissement 1 sec delay(1000); // Moteur droit en mode recul puissance nulle, inutile donc(?) mais je préfère garder le squelette en l'état digitalWrite(M1, LOW); analogWrite(E1, 255); //Moteur Gauche en mode avance puissance moyenne digitalWrite(M2, HIGH); analogWrite(E2, 125); // Temps d'agissement 1 sec delay(1000); }Pages d'aides utilisées pour ce code :
http://www.apprendre-en-ligne.net/info/robotique/DdR.pdf
On a aussi testé le code qui utilise les moustaches c'est très drôle ! ^^
Par contre pour ce qui concerne les dell j'ai bidouillé quelque chose avec ce que j'ai trouvé, et ça fonctionne ! />/>
//Avancer dans la lumière : int photocellPin = 0; // the cell and 10K pulldown are connected to a0 int photocellReading; // the analog reading from the analog resistor divider int M1 = 5; int E1 = 4; // Moteur gauche int E2 = 7; int M2 = 6; byte pwm_val = 0; void setup() { pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(E1, OUTPUT); pinMode(E2, OUTPUT); // We'll send debugging information via the Serial monitor Serial.begin(9600); } void loop(void) { photocellReading = analogRead(photocellPin); Serial.print("Analog reading = "); Serial.print(photocellReading); // the raw analog reading // We'll have a few threshholds, qualitatively determined if (photocellReading > 550) { digitalWrite(M1, HIGH); //tout droit analogWrite(E1, 0); // 0: puissance max (en mode avance) digitalWrite(M2, HIGH); // analogWrite(E2, 0); // 255 : puissance min (en mode avance) delay(100); } else { digitalWrite(M1, HIGH); analogWrite(E1, 125); digitalWrite(M2, LOW); analogWrite(E2, 255); delay(10); } delay(1000); }
Auriez-vous des conseils pour rendre ce code plus performant, ou je ne sais quoi ? />/>
Merci d'être passé ! ^^