Et sinon, est-ce que ce code (du fil pour vinvin69) est utilisable avec le materiel que j'ai (la liste que j'ai faite au début de ce fil, en sachant que je peux y ajouter des transistors et un joystick) :
// These constants won't change:
const int sensorPinx = A0; // pin du pot x
const int sensorPiny = A1; // pin du pot y
const int ledPin = 13; // pin that the LED is attached to
const int relaisDPin = 2; // pin that controls the right relay
const int relaisGPin = 4; // pin that controls the left relay
const int moteurDPin = 3; // pin that controls the right motor
const int moteurGPin = 5; // pin that controls the left motor
const int blanc = 10; // zone morte de part et d'autre du neutre
// variables:
int x = 0; // the x value
int xmed = 0; // valeur de x au neutre
int xmin = 1023; // minimum x value
int xmax = 0; // maximum x value
int y = 0; // the y value
int ymed = 0; // valeur de y au neutre
int ymin = 1023; // minimum y value
int ymax = 0; // maximum y value
void setup() {
// turn on LED to signal the start of the calibration period:
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
// calibrate during the first five seconds
while (millis() < 5000) {
x = analogRead(sensorPinx);
y = analogRead(sensorPiny);
// record the maximum sensor value
if (x > xmax) {
xmax = x;
}
if (y > ymax) {
ymax = y;
}
// record the minimum sensor value
if (x < xmin) {
xmin = x;
}
if (y < ymin) {
ymin = y;
}
}
// signal the end of the calibration period
digitalWrite(13, LOW);
// initialize the relay pin as an output:
pinMode(relaisDPin, OUTPUT);
pinMode(relaisGPin, OUTPUT);
}
void loop() {
// read the sensor:
x = analogRead(sensorPinx);
y = analogRead(sensorPiny);
// apply the calibration to the sensor reading
x = map(x, xmin, xmax, -64 - blanc, 64 + blanc);
y = map(y, ymin, ymax, -64 - blanc, 64 + blanc);
// if x+y is >0, turn right motor relay on :
if (x+y > 0) {
digitalWrite(relaisDPin, HIGH);
}
else {
digitalWrite(relaisDPin,LOW);
}
delay(1); // delay in between reads for stability
// if y-x is >0, turn left motor relay on :
if (y-x > 0) {
digitalWrite(relaisGPin, HIGH);
}
else {
digitalWrite(relaisGPin,LOW);
}
delay(1); // delay in between reads for stability
//définition de la zone morte centrale
if (x > blanc)
{
x=(x-blanc);
}
else if (x < -blanc)
{
x=(x+blanc) ;
}
else {
x=0;
} //dans la zone neutre
if (y > blanc)
{
y=(y-blanc);
}
else if (y < -blanc)
{
y=(y+blanc) ;
}
else {
y=0;
} //dans la zone neutre
// calculer le signal PWM pour les moteurs
int moteurdroit = y - x ;
int moteurgauche = y + x ;
// on sature à 128 le cas échéant
moteurdroit = constrain(moteurdroit, -128, 128);
moteurgauche = constrain(moteurgauche, -128, 128);
// on calcule la valeur absolue
moteurdroit = abs(moteurdroit);
moteurgauche = abs(moteurgauche);
// on transpose les valeurs, car les agrs de analogwrite doivent être entre 0 et 255
moteurdroit = map(moteurdroit,0,128,0,255);
moteurgauche = map(moteurgauche,0,128,0,255);
// send PWM to the motors
analogWrite(moteurDPin, moteurdroit);
analogWrite(moteurGPin, moteurgauche);
}
-----