Aller au contenu


Galariel

Inscrit(e) (le) 02 mars 2014
Déconnecté Dernière activité mars 22 2014 02:09
-----

Sujets que j'ai initiés

Robot Suiveur de Ligne [Arduino]

13 mars 2014 - 07:04

Bonjour!

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 ! :D/>/>
//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 ? :D/>/>

Merci d'être passé ! ^^

Présentation

02 mars 2014 - 02:55

Bonjour à tous!

Je suis en Terminale S, en spécialité ISN.

J'ai intégré cette spécialité presque uniquement pour la culture générale. Je ne connais que très peu de choses en informatique, (pour ne pas dire rien...) et je ne souhaite pas en faire ma carrière professionnelle. Cependant je m'y intéresse et j'aimerai connaître quelques bases.

Je me suis inscrite sur ce forum parce que "mon" (avec 3 autres personnes) projet de l'année, donc pour le bac, est de créer un concours de robots suiveur de lignes dans mon lycée. Nous devons donc tout d'abord apprendre à faire des programmes nous permettant de faire suivre des lignes à des robots. Néanmoins comme dis précédemment je ne sais pas coder (et mes camarades ont le même niveau que moi)

Notre professeur nous as confié un robot diduino avec une carte arduino duemilanove.

Pour l'instant nous arrivons à faire avancer, reculer et tourner le robot. Donc je suppose que nous avons intégré comment les moteurs des roues marchent. Toutefois pour ce qui est de la dell c'est une autre histoire ^^'

Voila :D