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