poi ho aggiunto questo codice come indicato nel README:
- Code: Select all
//funzione di risposta dell' interrupt del rilevamento pulsanti pavimento (alzata robot)
void pavimento()
{
if(leggi_puls(PULS_ZAMPA_IND_SX)==HIGH)
{
}
}
void setup() {
//configurazione delle uscite PWM
braccio_dx.attach(2);
avanbraccio_dx.attach(3);
braccio_sx.attach(4);
avanbraccio_sx.attach(9);
gamba_dx.attach(6);
piede_dx.attach(7);
gamba_sx.attach(11);
piede_sx.attach(10);
//configurazione degli 8 pulsanti;
pinMode(51, INPUT);
pinMode(49, INPUT);
pinMode(47, INPUT);
pinMode(45, INPUT);
pinMode(43, INPUT);
pinMode(41, INPUT);
pinMode(39, INPUT);
pinMode(37, INPUT);
//configurazione interrupt rilevazione alzata robot
Timer6.attachInterrupt(pavimento);
Timer6.start(100000); //rileva pulsanti ogni 100msec.
}
Una volta compilato e trasferito noto che i servi del robot non si muovono piu e sono flosci e non ricevono segnale.
Se commento l' if() in mezzo alla funzione dell' handler tutto torna a funzionare ed il robot si muove.
Il mio scopo e' quello di far si che la funzione di interrupt testi se il robot e' appoggiato per terra o sollevato per aria, nel secondo caso deve fermare la camminata, non appena viene rimesso per terra torna a camminare.
Non capisco perche succede che i motori non ricevono segnale se inserisco del codice nella funzione.