Bonjour.
J'aimerais mètre un peu de graphisme dans le programme suivant.Des rectangles avec à l'intérieures le nombres de pas ,le sens de rotations, le moteur,mais rien n’apparaît à l’écran,les éléments n'apparaissent q'en fin de programme et pas avant ;par contre avec la fonction print() je vois se qui se passe ;mais si je remplace print()par text()pour faire apparaître les éléments dans la fenêtre plus rien ne fonctionne ,je ne comprends par pourquoi.
merci.
import processing.serial.*; import cc.arduino.*; Arduino arduino; int nb_trous=11;//entrer nombre de trous; int[]tab_x={10,10,10,10,20,10,20,10,20,10,-130}; int IN1=8; int IN2=10; int IN3=9; int IN4=11; int vitesse=2; int pas_moteur=4; void setup() { size(500,200); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 57600); arduino.pinMode(IN1,Arduino.OUTPUT); arduino. pinMode(IN2,Arduino.OUTPUT); arduino. pinMode(IN3,Arduino.OUTPUT); arduino. pinMode(IN4,Arduino.OUTPUT); } void draw(){ moteurX(); } void moteurX(){ for(int i=0;i<nb_trous;i++){ int a=tab_x[i]; if(a>=0){ marche_avant(tab_x[i]); } else{ marche_arriere(tab_x[i]); } } noLoop(); } void marche_avant(int x){ float pas=x*pas_moteur; println(); print ("avant"); for(int i=0;i<pas;i++){ print(i); arduino.digitalWrite(IN1,Arduino.LOW); arduino. digitalWrite(IN2,Arduino.HIGH); arduino. digitalWrite(IN3,Arduino.HIGH); arduino. digitalWrite(IN4,Arduino.LOW); delay(vitesse); arduino. digitalWrite(IN1,Arduino.LOW); arduino. digitalWrite(IN2,Arduino.HIGH); arduino. digitalWrite(IN3,Arduino.LOW); arduino. digitalWrite(IN4,Arduino.HIGH); delay(vitesse); arduino. digitalWrite(IN1,Arduino.HIGH); arduino. digitalWrite(IN2,Arduino.LOW); arduino. digitalWrite(IN3,Arduino.LOW); arduino. digitalWrite(IN4,Arduino.HIGH); delay(vitesse); arduino.digitalWrite(IN1,Arduino.HIGH); arduino.digitalWrite(IN2,Arduino.LOW); arduino. digitalWrite(IN3,Arduino.HIGH); arduino. digitalWrite(IN4,Arduino.LOW); delay(vitesse); } delay(1000); } void marche_arriere(int x){ float pas=(x*pas_moteur)*-1; println(); print("arriere"); for(int i=0;i<pas;i++){ print(i," "); arduino.digitalWrite(IN1,Arduino.HIGH); arduino.digitalWrite(IN2,Arduino.LOW); arduino.digitalWrite(IN3,Arduino.HIGH); arduino.digitalWrite(IN4,Arduino.LOW); delay(vitesse); arduino.digitalWrite(IN1,Arduino.HIGH); arduino.digitalWrite(IN2,Arduino.LOW); arduino.digitalWrite(IN3,Arduino.LOW); arduino.digitalWrite(IN4,Arduino.HIGH); delay(vitesse); arduino.digitalWrite(IN1,Arduino.LOW); arduino.digitalWrite(IN2,Arduino.HIGH); arduino.digitalWrite(IN3,Arduino.LOW); arduino.digitalWrite(IN4,Arduino.HIGH); delay(vitesse); arduino.digitalWrite(IN1,Arduino.LOW); arduino.digitalWrite(IN2,Arduino.HIGH); arduino.digitalWrite(IN3,Arduino.HIGH); arduino.digitalWrite(IN4,Arduino.LOW); delay(vitesse); } delay(1000); }
Hors ligne
Tel que tu as écrit ton script, tu fais exécuter les mouvement de tes moteurs pendant le calcul de la première image puis tu envoies un noLoop().
Pas très étonnant qu'il ne s'affiche pas grand chose...
Il faudrait que ton moteurX() soit fonction de frameCount, par exemple, et, surtout, qu'il n'y ai pas de noLoop().
Essaye un truc du genre (non testé mais c'est le principe) :
void draw(){ moteurX(frameCount%nb_trous); } void moteurX(count) { int a=tab_x[count]; if (a>=0) { marche_avant(tab_x[count]); } else { marche_arriere(tab_x[count]); } }
Hors ligne
Bonjour.
Merci pour le tuyau;effectivement maintenant je peut mettre des éléments dans la fenêtre;mais petit problème si je supprime noLoop() le programme ne s’arrête plus;et normalement il dois s’arrêter quant tous les trous sont percés.
Hors ligne
Merci problème résolu pour cette partie;
Hors ligne