Go Down

Topic: CHR6DM.h non riesco ad usarla (Read 705 times) previous topic - next topic

ace_gigi

Ciao a tutti!
sono alle prime esperienze con un arduinoMega.
Stò cercando di creare una sorta di telemetria.
Dispositivi collegati:
EM406 GPS
2 ADXL335 Accelerometro
sd-card per salvare i dati
il tutto funziona.

Ora stò cercando di collegare un CHR6-DM della CHrobotics, riesco a leggere ma faccio fatica a decodificare i pacchetti.
Siccome qualcuno(Honk) si è già sbattuto non poco, pensavo di utilizzare il suo codice.
ha creato CHR6DM.h

Ho aggiunto questo file al mio progetto però quando compilo mi dà più di un errore, mi dice per es. che la funzione millis() non è dichiarata per questo scopo.
A parte inserire #include CHR6DM.H cosa diavolo devo scrivere nel prg principale per evitare questo errore di compilazione???

Grazie

lesto

secondo me è un errore della CHR6DM.h, magari è un po' vecchiotta e c'è da aggiornarla. puoi mettere un link alla libreria, grazie?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ace_gigi

Ciao,
ecco il link:
https://github.com/lokling/AeroQuad/blob/master/CHR6DM.h

in pratica ho creato un nuovo progetto, ho inserito il file CHR6DM.h

poi ho scritto nel principale

   #include "CHR6DM.h"
   CHR6DM chr6dm;

void setup(){
       Serial.begin(115200);
       Serial1.begin(115200);
       initCHR6DM();
       readCHR6DM();
}

void loop(){
       readCHR6DM();
}

    void initCHR6DM(){
        Serial1.begin(115200); //is this needed here? it's already done in Setup, APM TX1 is closest to board edge, RX1 is one step in (green TX wire from CHR goes into APM RX1)
        chr6dm.resetToFactory();
        chr6dm.setListenMode();
        chr6dm.setActiveChannels(CHANNEL_ALL_MASK);
        chr6dm.requestPacket();
    }

    void readCHR6DM(){
        chr6dm.waitForAndReadPacket();
        chr6dm.requestPacket();
    }

mentre se scarichi da questo link
http://aeroquad.com/showthread.php?3404-AeroQuad-Flight-Software-v2.4.2
il progetto completo, quando vai a compilarlo non dà nessun errore... quindi direi che sono nà pippa io..

lesto

ok, se fa parte di aeroquad dubito che il codice sia "vecchio", se poi gli esempi funzionano... allora, che errore ti da? specifica la riga, il secondo serial nell'init non serve, e la variabile "CHANNEL_ALL_MASK" non è dichiarata da nessuna parte
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ace_gigi

Ciao,
la variabile è dichiarata all'inizio nella sezione
// Board status and data packets
const int  CHANNEL_ALL_MASK           = 65535;

subito prima della dichiarazione
// Scale factors

quando compilo mi dà errore nella funzione
int blockingRead(){
        int read=-1;
        long starttime = millis();
        while(read==-1 && (millis()-starttime)<100){
        read = Serial1.read();
         }
         return read;
    }

e precisamente
        long starttime = millis();

mi dice che millis() non è dichiarata per questo scopo (not declared in this scope)

lesto

scope non è "scopo" ma "visibilità", vuol dire che non trova la funzione millis().
prova a importare nella libreria WProgram.h

ps. bruttissima cosa fare una chiamata loccante per leggere un sensore... ma son scelte
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

astrobeed


scope non è "scopo" ma "visibilità", vuol dire che non trova la funzione millis().


La traduzione corretta di "scope" all'interno di quella frase è "ambito".

ace_gigi

Ciao,
funziona...
Grazie!

P.s. potrei sapere perchè importando WProgram.h funzia? la funzione millis() è dentro questa libreria?


lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up