Voiture commandée avec Arduino et Processing
Sèb3426
Messages postés
69
Statut
Membre
-
Sèb3426 Messages postés 69 Statut Membre -
Sèb3426 Messages postés 69 Statut Membre -
Bonjour,
J'essaye de faire une voiture commandée par ordinateur. En attendant d'avoir la carte Arduino, j'ai fait un plan du montage.
Voici le code du fichier Arduino :
et le code du fichier Processing :
Est-ce que tout cela est correct ?
Merci d'avance
Sèb
J'essaye de faire une voiture commandée par ordinateur. En attendant d'avoir la carte Arduino, j'ai fait un plan du montage.
Voici le code du fichier Arduino :
int ComuD1 = 1;
int ComuD2 = 2;
int ComuG1 = 3;
int ComuG2 = 4;
int key = 0;
void setup()
{
pinMode(ComuD1, OUTPUT);
pinMode(ComuD2, OUTPUT);
pinMode(ComuG1, OUTPUT);
pinMode(ComuG2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{
key = Serial.read();
switch (key)
{
case 113:
digitalWrite(ComuD1, LOW);
digitalWrite(ComuG1, HIGH);
digitalWrite(ComuD2, LOW);
digitalWrite(ComuG2, LOW);
break;
case 100:
digitalWrite(ComuG1, LOW);
digitalWrite(ComuD1, HIGH);
digitalWrite(ComuD2, LOW);
digitalWrite(ComuG2, LOW);
break;
case 97:
digitalWrite(ComuD1, LOW);
digitalWrite(ComuG1, HIGH);
digitalWrite(ComuD2, HIGH);
digitalWrite(ComuG2, LOW);
break;
case 101:
digitalWrite(ComuD1, HIGH);
digitalWrite(ComuG1, LOW);
digitalWrite(ComuD2, LOW);
digitalWrite(ComuG2, HIGH);
break;
case 115:
digitalWrite(ComuD1, LOW);
digitalWrite(ComuG1, LOW);
digitalWrite(ComuD2, LOW);
digitalWrite(ComuG2, LOW);
break;
case 122:
digitalWrite(ComuD1, HIGH);
digitalWrite(ComuG1, HIGH);
digitalWrite(ComuD2, LOW);
digitalWrite(ComuG2, LOW);
break;
default:
Serial.print("commande ");
Serial.print(key);
Serial.println(" non reconnue.");
break;
}
}
}
et le code du fichier Processing :
import processing.serial.*;
int SendValue=0;
Serial MySerialPort;
void setup(){
size(250,500);
println(Serial.list());
MySerialPort = new Serial(this, Serial.list()[1], 9600);
delay (100);
background (255,255,255);
stroke(255,0,0);
MySerialPort.write(0);
delay (100);
PFont font;
textFont(loadFont("comicbd.ttf"));
text("appuyer sur z pour avancer", 15, 30);
text("appuyer sur s pour arrêter", 15, 60);
text("appuyer sur q pour tourner brusquement à gauche", 15, 90);
text("appuyer sur d pour tourner brusquement à droite", 15, 120);
text("appuyer sur a pour tourner lentement à gauche", 15, 150);
text("appuyer sur e pour tourner lentement à droite", 15, 180);
}
void draw() {
if (keyPressed) {
if (key == 'z' || key == 'Z') {
SendValue = 122;
}
else if (key == 's' || key == 'S') {
SendValue = 115;
}
else if (key == 'q' || key == 'Q') {
SendValue = 113;
}
else if (key == 'd' || key == 'D') {
SendValue = 100;
}
else if (key == 'a' || key == 'A') {
SendValue = 97;
}
else if (key == 'e' || key == 'E') {
SendValue = 115;
}
}
MySerialPort.write(SendValue);
}
Est-ce que tout cela est correct ?
Merci d'avance
Sèb
A voir également:
- Voiture commandée avec Arduino et Processing
- Waptrick jeux voiture - Télécharger - Jeux vidéo
- Symbole poisson voiture - Accueil - Maison
- Gps voiture gratuit sans internet - Guide
- Jeux de moto et de voiture - Télécharger - Course
- Lecteur cd externe voiture norauto - Forum Autoradio
2 réponses
Bonjour,
Tout d'abord, je ne pense pas que brancher les moteurs directement sur les sorties soit une bonne idée, en tout cas il faut faire attention à ce que le courant de sortie ne dépasse pas le maximum admissible (à voire le site en fonction de la carte que tu aura, arduino uno et mega: 40mA).
Une petite erreur dans le code processing:
les touches 's' et 'e' ont la même "SendValue", je ne crois pas que ça corresponde à ce que tu veux faire.
Là je me trompe peut-être, mais je ne crois pas que activer deux sorties pour un moteur le fasse tourner plus vite...
Tout d'abord, je ne pense pas que brancher les moteurs directement sur les sorties soit une bonne idée, en tout cas il faut faire attention à ce que le courant de sortie ne dépasse pas le maximum admissible (à voire le site en fonction de la carte que tu aura, arduino uno et mega: 40mA).
Une petite erreur dans le code processing:
les touches 's' et 'e' ont la même "SendValue", je ne crois pas que ça corresponde à ce que tu veux faire.
Là je me trompe peut-être, mais je ne crois pas que activer deux sorties pour un moteur le fasse tourner plus vite...
p3t3r42
Messages postés
89
Statut
Membre
28
Par contre je n'ai pas compris ce qu'était exactement le code processing. Il s'execute sur l'ordinateur ? Il est compiler par quoi ? Il utilise quel interface (console/graphique/autre) ?
Sèb3426
Messages postés
69
Statut
Membre
8
Il y a bien une erreur dans le code processing. Par contre, si tu regardes bien, jamais 2 sorties du même moteur ne sont activées en même temps. En fait, cela permet de faire, soit un virage brusque (en arrêtant un des moteurs) soit un virage plus "souple" (en ne faisant que ralentir un des moteurs à l'aide d'une résistance). Quant à l'alimentation des moteurs, actuellement, c'est du 3V (2 piles LR06).
Sèb3426
Messages postés
69
Statut
Membre
8
Le code processing s'exécute bien sur l'ordinateur et utilise une fenêtre comme interface.