Xcopter – Configuração da Controladora (parte 3)

controller_mpng

Configuração do buzzer

Neste terceiro artigo sobre a controladora vou explicar como configurar o suporte para o buzzer. Um dos constrangimentos será alterar o código fonte para suportar a lógica negativa que o transístor NPN existente na placa do buzzer introduz e que aumenta a quantidade de linhas de código.

Os ficheiros a serem alterados são o ArduCopter/config.h, ArduCopter/defines.h e ArduCopter/leds.pde. Editar os ficheiros com a ferramenta do compilador Arduino (ou outra) e fazer as alterações de acordo com as indicações descritas em baixo. Ter em atenção que com a adição de novas linhas em alguns dos ficheiro, as linhas de referência indicadas mudam de sítio.

ArduCopter/config.h

Linha 82 antes:

#define PIEZO_PIN AN3

Linha 82 depois:

#define PIEZO_PIN 46

Linha 270 antes:

#define COPTER_LED_1 AN4 // Motor or Aux LED

Linha 270 depois:

#define COPTER_LED_1 AN2 // Motor or Aux LED

Linha 271 antes:

#define COPTER_LED_2 AN5 // Motor LED

Linha 271 depois:

#define COPTER_LED_2 AN3 // Motor LED

Linha 272 antes:

#define COPTER_LED_3 AN6 // Motor or GPS LED

Linha 272 depois:

#define COPTER_LED_3 AN4 // Motor or GPS LED

ArduCopter/defines.h

Linha 374 antes:

#define AN5 59 // direct GPIO pin, default as analog input, next to SW2

Linha 374 depois:

#define AN5 46 // direct GPIO pin, default as analog input, next to SW2

Linha 400 antes:

#define PIEZO_PIN AN3

Linha 400 depois:

#define PIEZO_PIN 46

ArduCopter/leds.pde

Adicionar as seguintes linhas na linha 49 para inverter a lógica na altura da inicialização da controladora:

if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) {
 digitalWrite(PIEZO_PIN,HIGH);
 }

e deve ficar da seguinte forma:

[...]
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) {
 digitalWrite(PIEZO_PIN,HIGH);
 }
if (!(g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER)) {
 piezo_beep();
 }
[...]

Linha 296 antes:

digitalWrite(PIEZO_PIN,HIGH);

Linha 296 depois:

digitalWrite(PIEZO_PIN,LOW);

Linha 302 antes:

digitalWrite(PIEZO_PIN,LOW);

Linha 302 depois:

digitalWrite(PIEZO_PIN,HIGH);

O código está pronto para ser compilado e carregado na controladora como anteriormente explicado. Sugiro que antes de se fazer esta operação e caso já se tenha estado a configurar e a calibrar os parâmetros APM, se faça um backup da configuração utilizando a opção para o efeito do Mission Planner disponível nas configurações avançadas (Advanced Params). Esta operação pode facilitar a reconfiguração caso se percam os dados por alguma razão.

O buzzer deverá ser ligado na porta 46 da controladora tendo em atenção qual o pino que deve ligar à saída de sinal, aos 5V e à massa. Agora quando se for armar a controladora o buzzer deve apitar 2 vezes quando se dá a indicação de armar e poucou depois de fazer as calibrações iniciais apita mais 2 vezes. Quando desarmar deverá apitar 1 vez mas deve ser também confirmado com o LED da controladora qual o estado.

Assim encerra esta parte do artigo sobre a configuração do firmware MegaPirateNG para suportar o buzzer. Espero que tenha sido útil e que mesmo que não se pense utilizar o buzzer se fique a perceber um pouco melhor como realizar pequenas alterações ao código. Dada a complexidade e funcionalidades implementadas na APM não é fácil fazer alterações mas a bem dizer, este firmware já inclui quase tudo o que se pode querer para controlar um multicopter.

Etiquetas: , ,

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s


%d bloggers like this: