View Full Version : Principiante - dubbio array e funzioni
Alarikka
23-02-2015, 11:53
Non sono sicura dell'esattezza del mio codice...
Ho creato un array di Pin :
Pin pinArray[13];
for (i = 0, i < 13, i++)
pinArray[i] = new Pin(1, 0);
La classe Pin ha una funzione chiamata run().
Ora il mio dubbio è questo, devo fare un run di tutti i pin e quindi ho scritto questo pezzo di codice:
for (i = 0, i < 13, i++){
pinArray[i]->run();
};
E' giusta come sintassi? Perchè questa forma con la freccetta l'ho trovata su un sito ma mi sembra strano che sia così
Scusate ma sono davvero nuova in queste cose e faccio fatica ad orientarmi
Alarikka
23-02-2015, 14:28
Pin *pinArray[13];
for (i = 0, i < 13, i++)
pinArray[i] = new Pin(1, 0);
Quindi così risolverei il problema?
Non sto provando codici a caso :D sto cercando di farlo funzionare :)
Alarikka
23-02-2015, 14:35
Ok grazie :) haha ma non è a caso ;) volevo solo essere sicura che fosse giusto dato che mi dà qualche errore ma probabilmente allora sbaglio qualcos'altro ;)
Alarikka
23-02-2015, 14:43
il problema è che tutto questo gira su Arduino, quando avrò un problema specifico posterò volentieri :D Per ora sono ancora tante cose da sistemare.
Grazie mille ancora
Alarikka
25-02-2015, 10:27
Mi dà errore :'(
Il codice ora è questo :
Pin *pinArray[13];
for (i = 0, i < 13, i++)
pinArray[i] = new Pin(1, 0);
for (i = 0, i < 13, i++){
pinArray[i]->run();
};
Mi dà errore alla riga "pinArray[i] -> run(); con il seguente messaggio:
Sketch_Tesi:151: error: 'pinArray' was not declared in this scope
Alarikka
25-02-2015, 10:31
ah quindi secondo te devo creare l'array di pin nel loop?
Io l'ho creato nel setup...
Alarikka
25-02-2015, 12:59
Ti copio un pezzo che avevo scritto su un altro sito per farti capire piu o meno cosa sto facendo :
"Hello all, I'm working on a project for university, basically I'm trying to controll all the digital pins simoultaniously and in 3 possible different modes of working : mode1 simple on/off, mode2 PWM, mode3 sqware wave with 50%Duty-cicle and whatever frequency you like (from 1HZ to 31250Hz).
To implement the mode3 I changed the frequency of Timer0 to 31250 and use the interrupt routine that i get to generate a sqware wave of the frequenzy I need using a counter variable -> FreqCounterValue = 31250 / 2 * Frequency.
This is to give you the general idea of the project. "
Diciamo che questo è un pezzo di codice dove ci sono le parti problematiche ( ho tolto pezzi per semplicità XD)
void setup() {
//setup dei timer0,1,2 alla frequenza 31250Hz
cli(); //stop interrupts
//set timer0 interrupt a 31250Hz
TCCR0A = 0; // imposto il registro TCCR0A a 0
TCCR0B = 0; // uguale per il registro TCCR0B
TCNT0 = 0; // inizializzo il contatore a 0
OCR0A = 8; // (16*10^6) / (31250*64) -1 set compare match register
TCCR0A |= (1 << WGM01); //enable modalità CTC
TCCR0B |= (1 << CS01) | (1 << CS00); // Set CS01 e CS00 bits per il prescaler a 64 (< 256)
TIMSK0 |= (1 << OCIE0A); //enable timer compare interrupt
sei(); //enable interrupts
Pin *pinArray[13]; //creazione dell'array di pin con i valori di default
for (i = 0; i < 13; i++){
pinArray[i] = new Pin(1, 0);
}
Serial.begin(9600); // Default connection rate for my BT module
Serial.println("Quale pin vuoi pilotare?");
}
//interrupt routine here
ISR(Timer0_COMPA_vect){
for (i = 0; i<13; i++){
pinArray[i]->runmode3();
}
}
void loop(){
//run pin con un for
for (i = 0; i < 13; i++){
pinArray[i]->run();
};
vediamo se ho capito quello che dici te:
Questo pezzo
Pin *pinArray[13]; //creazione dell'array di pin con i valori di default
for (i = 0; i < 13; i++){
pinArray[i] = new Pin(1, 0);
}
vedo metterlo in una funzione che mi ritorni il valore del puntatore
Pin *creaArray(qui cosa ci metto? XD)
{
Pin *pinArray[13];
for (i = 0; i < 13; i++){
pinArray[i] = new Pin(1, 0);
return pinArray;
}
e poi nella funzione di interrupt routine e nel loop come faccio a passargli l'array?
Alarikka
25-02-2015, 16:05
a questo punto fare tutto (sia inizializzazione che dichiarazione) nello scope globale? :fiufiu:
Alarikka
26-02-2015, 08:14
uffii non funziona... mi dà questo errore= "expected constructor, destructor, or type conversion before"
sono andata a guardare su dei forum a gente con questo problema e qualcuno ha risposto cosi : "You can't just declare stuff like that outside a function. You need to put it inside a function such as void loop(){}, or void setup(){};"
cosa posso fare? :cry:
Alarikka
26-02-2015, 08:39
no ok questo l'ho risolto , dovevo mettere fuori solo la dichiarazione e non anche l'inizializzazione!
niente piu errori!!! :) ora speriamo che faccia quello che deve XD
grazie mille per l'aiuto <3
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.