Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-08-13 06:33:27 graphique dans le programme.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

graphique dans le programme.



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.

Code (P5) :

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

 

#2 2014-08-13 09:46:32 Re : graphique dans le programme.

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: graphique dans le programme.



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... wink

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) :

Code (P5) :

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]);
  }
  
}

L'Amour au Peuple !

Hors ligne

 

#3 2014-08-13 15:31:07 Re : graphique dans le programme.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: graphique dans le programme.



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

 

#4 2014-08-13 18:43:10 Re : graphique dans le programme.

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: graphique dans le programme.



Un simple if avec un boolean comme condition devrait résoudre ton problème...

Bon courage... smile


L'Amour au Peuple !

Hors ligne

 

#5 2014-08-14 16:30:11 Re : graphique dans le programme.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: graphique dans le programme.



Merci problème résolu pour cette partie;

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024