Go Down

Topic: [Résolu]pb de programmation... (Read 473 times) previous topic - next topic

vohu

May 17, 2011, 04:17 pm Last Edit: May 21, 2011, 11:40 am by vohu Reason: 1
Bonjour ;)

Je viens de recevoir mon arduino uno, c'est génial ce truc :p

Par contre j'ai un petit problème...
Voici mon code :

Quote
/*

lit la tension analogique sur la broche analogique 0
et affiche le résultat dans le moniteur série.

cet exemple est dans le domaine public
traduction française par X. HINAULT - www.mon-club-elec.fr

*/
const int MOTEUR=3; //declaration constante de broche
const int LED=5; //declaration constante de broche
const int INTERUPT = 2;
int adVal ; // valeur qu'on ajoute à chaque clic de l'interrupteur

void setup() {

 pinMode(MOTEUR, OUTPUT);   // configure le MOTEUR sur pin 3 en sortie
 pinMode(LED, OUTPUT);  //configure la led sur le pin 5
 pinMode(INTERUPT, INPUT); //configure le port 2 en entrée pour l'interupteur
 
 Serial.begin(9600); // initialise la communication série
 // vérifier que le débit utiliser est le même dans le Terminal Série
}

void loop() {
 int potVal = analogRead(A0); // lit la valeur analogique sur la broche A0 et met le résultat dans la variable
 
 
 if(digitalRead(INTERUPT)==HIGH){
   //action a faire par exemple activer une sortie
   Serial.println("INTERUPT"); // affiche la variable dans le Terminal Serie
   adVal =++ adVal;
   potVal = potVal + adVal;
   delay(1000);
 }
 
 String str1 = "Valeur de potVal : " + potVal;
 String str2 = "Valeur de adVal : "  + adVal;
 String strT = str1 + "\t" + str2;
 Serial.println(strT); // affiche la variable dans le Terminal Serie
 delay(100);
 
 analogWrite(MOTEUR, potVal / 4); // fait tourner le moteur à la vitesse lue
 analogWrite(LED, potVal / 4); // allume la led à la puissance lue

 

}


Le problème, c'est que le moniteur me renvoie ça
Quote
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :
Valeur de potVal :    Valeur de adVal :


Comment se fait-il que les valeurs ne soient pas affichée, alors que ma led change bien d'intensité selon le réglage du potentiomètre ?

Merci :)

semageek

#1
May 17, 2011, 04:22 pm Last Edit: May 17, 2011, 04:30 pm by semageek Reason: 1
C'est la ligne suivante qui pose problème potVal n'est pas une chaîne de caractère
String str1 = "Valeur de potVal : " + potVal;

Perso, je préfère utiliser les char
sprintf(str1,"Valeur de potVal : %d\0",potVal);

avec str1 déclaré comme char *
char str1[32];

Si tu veut rester avec la classe String essaye
String str1 = "Valeur de potVal : " + String(potVal,DEC);


Retrouvez les kits Arduino dans notre boutique http://boutique.semageek.com/

vohu

ok ok :) merci

Ta solution char correspond à ce qu'on ferai dans le vrai langage C ? Parce que dans ce cas, je me forcerais à utiliser cette solution

Go Up