Fiat Lux ovvero quando i led esterni vanno ma non (ancora) il beeper.
Per chi volesse collegare i led esterni per la segnalazione di arm/disarm fix/nofix ecco la modifica da eseguire in config.h:
.
L'asseganzione ad AN0 fino AN15 dei valori relativi ai pin in stile Arduino-Mega si trovano in defines.h.
I define da COPTER_LED_5 fino ad 8 sono posti a 0 per indicare che quei pin non sono presenti nella AIOP V1.x.
I segnali vanno prelevati dall'uscita A0-A5 ed in particolare, tenuto conto che A0 ed A1 servono per il sensore di tensione e corrente, sono:
A2 - Motor LED (arm/disarm)
A3 - Motor LED (arm/disarm)
A4 - GPS fix/nofix
A5 - Dovrebbe essere per il buzzer, ma si sincronizza con i motor led e continua a bippare.
Ho verificato che in defines.h ci fosse definito:
e controllato come lavora il codice in leds.pde dove si trova l'inizializzazione delle porte che devono lavorare come uscite digitali e non ingressi analogici:
Più sotto c'è il codice che gestisce il beeper:
Il parametro LED_MODE è 123 ma non ci sono santi.
Anche una verifica incrociata con il codice di ACopter32 che è su VRBrain, conferma che questa è la modalità corretta di impostare il codice, ma con MPNG non vuole funzionare. Ci riproverò nei prossimi giorni sperando capire perchè non va; per ora non demordo.
In sè la cosa non è particolarmente grave, perchè gia i soli LED danno le indicazioni necessarie e, per quanto riguarda l'allarme di batterie scariche, su tutti i miei mezzi c'è un LiPo Alarm autonomo collegato alla batteria.
Per chi volesse collegare i led esterni per la segnalazione di arm/disarm fix/nofix ecco la modifica da eseguire in config.h:
codice:
//////////////////////////////////////////////////////////////////////////////// // CopterLEDs // #ifndef COPTER_LEDS #define COPTER_LEDS ENABLED #endif #define COPTER_LED_ON HIGH #define COPTER_LED_OFF LOW #if CONFIG_HAL_BOARD == HAL_BOARD_APM2 #define COPTER_LED_1 AN4 // Motor or Aux LED #define COPTER_LED_2 AN5 // Motor LED or Beeper #define COPTER_LED_3 AN6 // Motor or GPS LED #define COPTER_LED_4 AN7 // Motor LED #define COPTER_LED_5 AN8 // Motor LED #define COPTER_LED_6 AN9 // Motor LED #define COPTER_LED_7 AN10 // Motor LED #define COPTER_LED_8 AN11 // Motor LED #elif CONFIG_HAL_BOARD == HAL_BOARD_APM1 || CONFIG_HAL_BOARD == HAL_BOARD_MPNG || CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL || CONFIG_HAL_BOARD == HAL_BOARD_PX4 || HAL_BOARD_SMACCM #define COPTER_LED_1 AN2 //AN8 // Motor or Aux LED #define COPTER_LED_2 AN3 //AN9 // Motor LED #define COPTER_LED_3 AN4 //AN10 // Motor or GPS LED #define COPTER_LED_4 AN5 //AN11 // Motor LED #define COPTER_LED_5 0 //AN12 // Motor LED #define COPTER_LED_6 0 //AN13 // Motor LED #define COPTER_LED_7 0 //AN14 // Motor LED #define COPTER_LED_8 0 //AN15 // Motor LED #endif
L'asseganzione ad AN0 fino AN15 dei valori relativi ai pin in stile Arduino-Mega si trovano in defines.h.
I define da COPTER_LED_5 fino ad 8 sono posti a 0 per indicare che quei pin non sono presenti nella AIOP V1.x.
I segnali vanno prelevati dall'uscita A0-A5 ed in particolare, tenuto conto che A0 ed A1 servono per il sensore di tensione e corrente, sono:
A2 - Motor LED (arm/disarm)
A3 - Motor LED (arm/disarm)
A4 - GPS fix/nofix
A5 - Dovrebbe essere per il buzzer, ma si sincronizza con i motor led e continua a bippare.
Ho verificato che in defines.h ci fosse definito:
codice:
#define PIEZO_PIN AN5 //Last pin on the back ADC connector
codice:
#if COPTER_LEDS == ENABLED static void copter_leds_init(void) { pinMode(COPTER_LED_1, OUTPUT); //Motor LED pinMode(COPTER_LED_2, OUTPUT); //Motor LED pinMode(COPTER_LED_3, OUTPUT); //Motor LED pinMode(COPTER_LED_4, OUTPUT); //Motor LED pinMode(COPTER_LED_5, OUTPUT); //Motor or Aux LED pinMode(COPTER_LED_6, OUTPUT); //Motor or Aux LED pinMode(COPTER_LED_7, OUTPUT); //Motor or GPS LED pinMode(COPTER_LED_8, OUTPUT); //Motor or GPS LED if (!(g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER)) { piezo_beep(); } }
codice:
void piezo_on(){ if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) { digitalWrite(PIEZO_PIN,HIGH); } } void piezo_off(){ if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) { digitalWrite(PIEZO_PIN,LOW); } } void piezo_beep(){ // Note! This command should not be used in time sensitive loops if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) { piezo_on(); delay(100); piezo_off(); } } void piezo_beep_twice(){ // Note! This command should not be used in time sensitive loops if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) { piezo_beep(); delay(50); piezo_beep(); } }
Anche una verifica incrociata con il codice di ACopter32 che è su VRBrain, conferma che questa è la modalità corretta di impostare il codice, ma con MPNG non vuole funzionare. Ci riproverò nei prossimi giorni sperando capire perchè non va; per ora non demordo.
In sè la cosa non è particolarmente grave, perchè gia i soli LED danno le indicazioni necessarie e, per quanto riguarda l'allarme di batterie scariche, su tutti i miei mezzi c'è un LiPo Alarm autonomo collegato alla batteria.
Commenta