Go Down

Topic: int to char ? (Read 224 times) previous topic - next topic

Xylitol

Salut la communauté,
Je cherche a joué un son wav avec mon arduino a partir d'un nombre en random.
Mais apparement j'ai un problème de conversion, j'ai regardé dans mon arduino cookbook et google mais j'ai pas réussi a fixé le problème.
Voici mon code:
Code: [Select]

long randNumber;

[...]

void loop(){ 
buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {   
    // nothing here
  }
  else {
       randNumber = random(16, 20); // fonction random
       tmrpcm.play(randNumber, ".wav"); { lcd.clear(); lcd.setCursor(1, 0); lcd.print('Random sound');} break;
  }

Ce que j'essaye de faire, c'est d'obtenir par exemple: tmrpcm.play("18.wav");
En erreur j'ai: invalid conversion from 'long int' to 'char*'
Ligne surlignée: tmrpcm.play(randNumber, ".wav");...
J'ai essayé plusieurs tentative du genre
String myNumber = String(randNumber, ".wav");
mais ça passe pas non plus.

Cdlt

B@tto

#1
Mar 24, 2014, 01:26 pm Last Edit: Mar 24, 2014, 02:42 pm by B@tto Reason: 1
Salut,

il faut utiliser itoa() et strcat()
http://www.cplusplus.com/reference/cstdlib/itoa/
http://www.cplusplus.com/reference/cstring/strcat/ :

Code: [Select]
char Buffer[10];
itoa(randNumber,Buffer,10);
strcat(Buffer,".wav");
tmrpcm.play(Buffer);


Sinon je pige pas la fin, en particulier :

Code: [Select]
lcd.print('Random sound');} break;

Rôle du break ? et les apostrophe sont pour les caractères seuls, il faut des guillements pour des chaînes.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Xylitol

#2
Mar 24, 2014, 01:56 pm Last Edit: Mar 24, 2014, 01:58 pm by Xylitol Reason: 1
Salut, bien vu pour le break et les guillmets.
J'avais essayé  un peu n'importe quoi en étant désespéré au niveau des guillmets.
Pour le break, oui il sert a rien je l'avais pas vu celui la, j'ai c/c une ligne de mon code ou la il servais a quelque chose et j'ai oublier de le viré ici..
Sinon, concerant itoa() j'ai vu aussi ça sur google mais j'ai pas réussi a l'implémenté.
pour tmrpcm.play(randNumber); c'est pas plutôt 'Buffer' qu'il faut mettre entre paranthése du coup pour tmrpcm ? ça a l'air de passé dans le moniteur serial.
Merci

B@tto


pour tmrpcm.play(randNumber); c'est pas plutôt 'Buffer' qu'il faut mettre entre paranthése du coup pour tmrpcm ? ça a l'air de passé dans le moniteur serial.


Exact, copier/coller trop vite ^^' j'ai corrigé mon précédent post
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Go Up