Pages: [1]   Go Down
Author Topic: faire un tableau  (Read 1545 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour

je souhaiterais faire un tableau de ce type à l'aide d'un terminal :

Vitesse                    | Courant
consigne: 10              | consigne: 20
mesure:  20               | mesure: 60
...
 et les valeurs sont bien sur variables
merci d'avance!
« Last Edit: June 05, 2010, 04:39:25 am by freeman32 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 39
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Essayes un truc comme ça

Code:
char ascii[32];
 sprintf(ascii,"consigne: %d \t| consigne: %d",consigneV,consigneC);
 Serial.print(ascii);
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en langage arduino sa donnerai quoi??
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3190
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La même chose ...
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hein mais comment il est possible de faire un sprintf avec arduino??
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bon j'ai essayer en utilisant la biblio stdio sa marche mais seulement une fois sur 10... quelqu'un aura pas une autre solution ?
Logged

Celtic Kingdom
Offline Offline
Sr. Member
****
Karma: 2
Posts: 455
hard oui no!!!
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A priori les valeurs type float ne passent pas dans le sprintf avec stdio (?).
Une solution serait de faire passer les valeur de float en ascii avec sprintf(ascii,...
J'ai lu cela quelque part sur le forum UK, je ne sais plus où..
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour ma part j'utilise ce code pour afficher des nombres décimaux sur mon lcd. (ce n'est pas de moi)

Voila ce que ça donne pour une écriture sur le port série :
Code:

char buf[12];
double var=1.11;

void setup() {
  Serial.begin(9600);
}

void loop() {
  PrintDouble(var,2);
}


void PrintDouble( double val, byte precision){

  if(val < 0.0){
    Serial.println('-');
    val = -val;
  }

  Serial.print(itoa(val,buf,10));  //prints the int part
  if( precision > 0) {
    Serial.print("."); // print the decimal point
    unsigned long frac;
    unsigned long mult = 1;
    byte padding = precision -1;
    while(precision--)
      mult *=10;

    if(val >= 0)
      frac = (val - int(val)) * mult;
    else
      frac = (int(val)- val ) * mult;
    unsigned long frac1 = frac;
    while( frac1 /= 10 )
      padding--;
    while(  padding--)
      Serial.print("0");
    Serial.println(itoa(frac,buf,10)) ;
  }
}

Si tu as des questions , n'hésite pas


Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 39
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bein chez moi ça marche directement sans include ni rien
Code:
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int val = 18 ;
  
  char buffer[54];
  
  sprintf( buffer , "Je veux afficher %04d" , val );
  
  Serial.println( buffer );
  
  delay( 1000 );
  
}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 20
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perso j'ai pas tester ta maniere, je devrais peut etre le faire avec la routine pour l'affichage de float pour mon lcd  smiley-grin
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

le probleme c'est que sa bug souvent quand je fais appel au sprintf je ne sais vraiment pas pourquoi smiley-sad
« Last Edit: June 11, 2010, 03:10:19 am by freeman32 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

voici un de mes programme de test
Code:
#define HOME 1

char ascii[32];
char ascii1[32];
int consigneV,consigneC,consigneV2,consigneC2;

void setup() {
Serial.begin(9600);
consigneV=20;
consigneC=30;
consigneV2=60;
consigneC2=70;
}

void loop() {
 Serial.print(HOME,BYTE);
 sprintf(ascii,"consigne: %d \t| consigne: %d \n",consigneV,consigneC);
 sprintf(ascii1,"consigne2: %d \t| consigne2: %d",consigneV2,consigneC2);
 Serial.print(ascii);
}

« Last Edit: June 11, 2010, 03:21:48 am by freeman32 » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

autrement voici mon tableau fait a l'arrache :
Code:
Serial.print(HOME,BYTE);
  Serial.print("vitesse");Serial.print("                         | ");Serial.println("courant");
  Serial.print("consigne(cv): ");Serial.print(ConsigneVitesse, DEC);Serial.print("\t| ");Serial.print("consigne(cc): ");Serial.println(ConsigneCourant, DEC);
  Serial.print("Mesure(en V): ");Serial.print(MesureVitesse, DEC);Serial.print("\t| ");Serial.print("Mesure(en A): ");Serial.println(MesureCourant, DEC);
  Serial.print("Kp(kpv): ");Serial.print(chiffreKpv, DEC);Serial.print("\t                | ");Serial.print("Kp(kpc): ");Serial.println(chiffreKpc, DEC);
  Serial.print("Ki(kiv): "); Serial.print(chiffreKiv, DEC);Serial.print("\t                | "); Serial.print("Ki(kic): "); Serial.println(chiffreKic, DEC);
  Serial.print("Kd(kdv): "); Serial.print(chiffreKdv, DEC);Serial.print("\t                | ");Serial.print("Kd(kdc): "); Serial.println(chiffreKdc, DEC);
  Serial.print("AUTO/MANUAL(1/0)(amv): ");Serial.print(chiffreAmv);Serial.print("\t| ");Serial.print("AUTO/MANUAL(1/0)(amc): ");Serial.println(chiffreAmc);
  
il marche mais j'ai souvent des bugs :-[
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


La fonction dtostrf() permet de passer un float dans un tableau de char.

Code:
char tableau[8];
dtostrf(valFloat, 7, 5, tableau);
Serial.print(tableau)
« Last Edit: January 09, 2011, 04:47:41 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: [1]   Go Up
Jump to: