Bonjour.
Je voudrais faire varier la vitesse du moteur avec la souris dans le programme qui suit;mais je me demande; comme le port est occupé avec le changement de sens du moteur ,si il peut voir le déplacement de la souris?.
Y a t'il un moyen de faire varier la vitesse pendant que le moteur tourne?
Merci.
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
int sens_moteur=2;
int vitesse=3;
int val_vitesse=0;
void setup() {
size(500,200);
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(sens_moteur, Arduino.OUTPUT);
}
void draw() {
background(255);
//sens marche moteur sur M1;
// vitesse moteur sur E1;
fill(0);
rect(20,40,255-20,20);
arduino.digitalWrite(sens_moteur, Arduino.HIGH);
delay(5000);
arduino.digitalWrite(sens_moteur, Arduino.LOW);
delay(5000);
val_vitesse = constrain(mouseX, 20,255);
fill(0,255,0);
rect(20, 40, val_vitesse-20, 20);
arduino.analogWrite(vitesse,val_vitesse);
}Hors ligne
Bonjour,
Un delay est bloquant. Donc si tu souhaites interagir malgré tout il faut mettre un compteur :
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
int sens_moteur=2;
int vitesse=3;
int val_vitesse=0;
int temps, tempsPrecedent;
boolean etat;
void setup() {
size(500, 200);
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(sens_moteur, Arduino.OUTPUT);
tempsPrecedent = millis();
etat = true;
arduino.digitalWrite(sens_moteur, Arduino.HIGH);
}
void draw() {
background(255);
//sens marche moteur sur M1;
// vitesse moteur sur E1;
fill(0);
rect(20, 40, 255-20, 20);
temps = millis();
if ((temps > tempsPrecedent + 5000) && !etat) {
arduino.digitalWrite(sens_moteur, Arduino.HIGH);
etat = true;
tempsPrecedent = temps;
}
if ((temps > tempsPrecedent + 5000) && etat) {
arduino.digitalWrite(sens_moteur, Arduino.LOW);
etat = false;
tempsPrecedent = temps;
}
val_vitesse = constrain(mouseX, 20, 255);
fill(0, 255, 0);
rect(20, 40, val_vitesse-20, 20);
arduino.analogWrite(vitesse, val_vitesse);
}Hors ligne
Je te remercie pour ton programme il marche super bien;je ne sais pas si tu es tombé sur ce cas, mais je me suis aperçu que le moteur tourne toujours;si firmata est chargé dans la carte arduino ;mais il execute les fonctions du programme processing.Pour l’arrêter quant je veux dois-je utiliser une autre patte de la carte aduino qui commande un relais pour couper les fils moteur ou existe t'il une autre solution?.Car en réalité je voudrais commander 5 moteurs ce qui fais 15 pattes de la UNO c'est trop .
Hors ligne