Pages: [1]   Go Down
Author Topic: Lecture rapide deux entrées analogiques  (Read 634 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis débutant avec arduino et programmation C++. 
J’essaie de lire le plus rapidement possible deux entrées analogiques (3 et 4).
Cependant, les résultats m’indiquent qu’il lit seulement l’entrée 3 et inscrit la quasi même valeur pour l’entrée 4.
Les résultats sont corrects si j’utilise une entrée seulement.
Quel est le problème ???

Voici le code :
#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
  int start ;
  int i ;
  int n=1 ;
  int sampleSize ;
  int y ;
   
  #if FASTADC
  // set prescale to 16
  sbi(ADCSRA,ADPS2) ;
  cbi(ADCSRA,ADPS1) ;
  cbi(ADCSRA,ADPS0) ;
#endif
 
   sampleSize = 600 / n;
   int aval[sampleSize] [n];
 
   Serial.begin(9600) ;
   Serial.print("ADCTEST: ") ;
  start = millis() ;
 
for (int i=0; i<sampleSize; i++)
    {
      for (int y=3; y<5; y++)
          aval[y] = analogRead(y);
    }
// print samples
      Serial.print(millis() - start) ;
      Serial.println(" msec (600 calls)") ;   
for (int i=0; i<sampleSize; i++)
{
   for (int y=3; y<5; y++)
      {  Serial.print(aval[y]);
        Serial.print(' '); }

   Serial.println();
}
   
    Serial.println("> end");

void loop() {
}
Logged

Chulak
Offline Offline
Full Member
***
Karma: 2
Posts: 234
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut, je comprend pas tout dans ton code ... (j'suis  plus programmeur Java)..
Perso je mettrais un code du style la
Code:
int valAnalog3 = 0;
int valAnalog4 = 0;
for (int i=0; i<sampleSize; i++)
    {
     valAnalog3 = analogRead(3);
     valAnalog4 = analogRead(4);
     Serial.print(valAnalog3);
      Serial.print(' ');
     Serial.print(valAnalog4);
      Serial.print(' ');
}
      Serial.print(millis() - start) ;
      Serial.println(" msec (600 calls)") ; 
      Serial.println("> end");


sinon par rapport a ton code ya une erreur .. tu enregistre toujours dans la même casse de ton tableau
Code:
for (int i=0; i<sampleSize; i++)
    {
      for (int y=3; y<5; y++)
          aval[y] = analogRead(y);
    }

tu devrais mettre
Code:
aval[i] = analogRead(y);
sinon sa ne serre a rien de faire le tableau aval[sampleSize] [n] faire un tableau de 600 pour 2 variable fais plutot aval[2][n] quoi que le n dans ton cas tu t'en serre jamais ...

voilà un début.. ma version du code .. tu ne garde rien en mémoire donc une fois fini le setup si tu n'a pas mis les variable en global ben tu rentre dans le loop sans valeur..

Tealcoune.. (dur dur de ce remettre au C++)
« Last Edit: February 14, 2011, 01:32:21 pm by Tealcoune » Logged

Aimez la Vie, mais preferez la Mort, car seulement celle-ci vous liberera des tenebres de la Vie.

Pages: [1]   Go Up
Jump to: