Annonce

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


#1 2014-08-15 05:49:36 fonction draw(){

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

fonction draw(){



Bonjour.

Je M'aperçois d'un problème avec la fonction draw() dans le programme suivant tout est OK car la fonction draw est vide mais le programme ne fontionne pas sans cette fontion:ex.Dans le deuxième programme je veux implanter le premier programme mais il y à des éléments dans la fonction draw et le programme ne fonctionne pas sans ces éléments d'ou le problème.

Merci.

Code (P5) :

void setup(){
  print("entrz un choix e ou r");
}

void draw(){
 
}
void keyPressed(){
  if(key=='e'){
    s_pg1();
  }
  if(key=='r'){
    s_pg2();
  }
}
  void s_pg1(){
    print("ss_pg1");
  }
  void s_pg2(){
    print("s_pg2");
  }

Code (P5) :

import processing.serial.*;      
import cc.arduino.*;     
Arduino arduino;   
int nb_trous=12;//entrer nombre de trous;
int[]tab_x={0,10,20,30,40,50,60,70,80,90,100,-550};
int IN1=8;
int IN2=10; 
int IN3=9; 
int IN4=11; 
int vitesse=2;
int pas_moteur=1;

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(){
  background(125,47,0);
   textSize(20);
     moteurX(frameCount%nb_trous);   
   
   if(frameCount%nb_trous==11){
    
      text("Passe fini",100,100);
    noLoop();
      } 
 }
 void moteurX(int y){

   int a=tab_x[y];
  
   if(a>=0){
  marche_avant(tab_x[y]);
   }
   else{
 marche_arriere(tab_x[y]);
}

 }
void marche_avant(int x){
   text("Pas avant moteurX",40,40);
  float pas=x*pas_moteur;
  text(pas,245,40);
  for(int i=0;i<pas;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){
   text("Pas arriere moteurX",10,40);
  float pas=(x*pas_moteur)*-1;
text(pas,245,40);
   for(int i=0;i<pas;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-15 13:17:24 Re : fonction draw(){

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

Re: fonction draw(){



Fabrice,

Si tu persistes à utiliser la fonction noLoop() alors que tu as besoin de l’exécution de la fonction draw(), ça ne peut pas marcher.
Comme suggéré dans le post précédent, un "if boolean" devrait résoudre ton pb...

Code (P5) :

boolean toto = True;

if toto {
    maFonction();
    toto = False;
}

Surtout que je pense que c'est de ce même boolean dont tu as besoin pour ton keyPressed()...

Bon courage...


L'Amour au Peuple !

Hors ligne

 

#3 2014-08-16 15:44:08 Re : fonction draw(){

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

Re: fonction draw(){



Merci, pour les conseils;en fin de compte je me suis aperçus que je pouvais utiliser key sans passer par void KeyPressed ;maintenant je comprend mieux ce qui se passe dans le programme car la fonction draw était très perturbante elle boucle systématiquement sans que l'on lui demande ce qui posais problème.

Hors ligne

 

#4 2014-08-16 17:36:01 Re : fonction draw(){

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

Re: fonction draw(){



citation :

elle boucle systématiquement sans que l'on lui demande

Il y a rien d’exceptionnelle à ce que la draw() tourne en boucle par défaut... elle est conçue pour cela... tongue
Mais, je te l'accorde, faut-il encore le savoir...

Bon courage... smile


L'Amour au Peuple !

Hors ligne

 

#5 2014-08-17 08:09:55 Re : fonction draw(){

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

Re: fonction draw(){



Je savais que draw bouclais mais je pensais que l'on pouvais l'éviter,mais je suppose que c'est elle qui fait la différence entre le mode statique et le mode dynamique ;car j'avais remarqué qu'avec les fonctions mousePressed keyPressed si l'on n'utilise pas la fonction draw l'utilisation de ces fonctions n'est pas possible et sans doute avec d'autres fonctions que je ne connais pas.

Hors ligne

 

#6 2014-08-17 11:36:12 Re : fonction draw(){

top
membre
Date d'inscription: 2012-04-12
Messages: 43

Re: fonction draw(){



Le mode actif de Processing utilise un mécanisme présent dans beaucoup d’environnements graphiques : la boucle
infinie de rafraichissement. Les fonctions setup() et draw() permettent donc d’animer un sketch.
- La fonction setup() est invoquée une seule fois par Processing au lancement du programme.
- La fonction draw() dessine une image qui va être affichée. La fonction draw() est ré-invoquée en boucle dès
qu’elle se termine, provoquant une suite d’images perçues comme une animation ! Par défaut la fréquence des
images est de 60 Hz.

la fonction draw() permet également la gestion des actionListener, elle met sur écoute différentes actions utilisateur comme
l'utilisation du clavier et de la souris par exemple.

Dernière modification par top (2014-08-17 11:37:48)

Hors ligne

 

#7 2014-08-18 05:36:53 Re : fonction draw(){

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

Re: fonction draw(){



Merci pour les explications;il serais donc possible d'écrire un programme juste dans le setup à condition de ne pas utiliser des actionListener,et de faire se répéter juste les parties qui m intéresses .

Hors ligne

 

#8 2014-08-18 09:18:28 Re : fonction draw(){

top
membre
Date d'inscription: 2012-04-12
Messages: 43

Re: fonction draw(){



Si tu implémentes uniquement la fonction setup() alors pas possible de modifier le contenu de la fenêtre graphique sous la forme d'une animation...

Hors ligne

 

#9 2014-08-18 12:40:10 Re : fonction draw(){

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

Re: fonction draw(){



C'est dommage;mais pour mon programme je vais devoir me passer des graphiques;ce seras moins beau. C'étais pour commander des moteurs pas à pas pour une petite machine.

Merci pour les conseils.

Hors ligne

 

#10 2014-08-18 12:40:48 Re : fonction draw(){

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

Re: fonction draw(){



citation :

il serais donc possible d'écrire un programme juste dans le setup

Tout à fait, je le fais fréquemment.
Si tu n'as qu'une seule image à calculer/afficher, par exemple, tu n'as pas besoin d'un draw().

Mais ce n'est pas le cas de ton sketch.

citation :

et de faire se répéter juste les parties qui m intéresses

Quel que soit le nombre de répétition, une seule image sera calculée pour être affichée au terme de l’exécution du setup().
Si tu places une boucle infinie dans le setup(), tu ne verras jamais la fenêtre de la scène s'afficher.

Bon courage...


L'Amour au Peuple !

Hors ligne

 

#11 2014-08-18 14:54:06 Re : fonction draw(){

top
membre
Date d'inscription: 2012-04-12
Messages: 43

Re: fonction draw(){



fabrice54 a écrit:

C'est dommage;mais pour mon programme je vais devoir me passer des graphiques;ce seras moins beau. C'étais pour commander des moteurs pas à pas pour une petite machine.

Merci pour les conseils.

Pourquoi devrais-tu renoncer à une partie graphique ? Tout est possible, il faut juste s'y prendre comme il faut !

Hors ligne

 

#12 2014-08-19 05:45:16 Re : fonction draw(){

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

Re: fonction draw(){



Bonjour.

Dans un premier temps Je vais déjà essayer de faire une classe Moteur ,et pour les graphiques je verrais avec control IP5 si cela est possible pour moi .Sinon je me contenterais des prints.Tant pis pour moi.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024