Go Down

Topic: [Résolu]pb de programmation... (Read 500 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy