Aula — 29 de Outubro(Quarta feira) - theedwilk/JoystickRaspberry-HandsOn-DevTitans GitHub Wiki
Atualização do firmware — Hardware/ControlJoystick02
Resumo: houve uma mudança no mapeamento de pinos e no formato de saída Serial para os sketches
ControlJoystick02.inoeControlJoystick02v2.ino.
Também existe uma questão de compatibilidade do kernel com o AOSP (Android Open Source Project) que afeta testes e integração do driver.
Arquivos atualizados
Hardware/ControlJoystick02/ControlJoystick02.ino— versão que usa impressão CSV (texto) no Serial (baud 9600).Hardware/ControlJoystick02/ControlJoystick02v2.ino— evolução que envia 1 byte de status (binário) +\n(baud 115200).
Mapeamento de pinos (novo)
| Função | Pino |
|---|---|
| UP | 36 |
| RIGHT | 39 |
| DOWN | 34 |
| LEFT | 35 |
| START | 32 |
| SELECT | 33 |
| ANALOGB | 25 (apenas em ControlJoystick02.ino) |
| X Axis | 26 |
| Y Axis | 27 |
Observação:
ControlJoystick02v2.inoremoveu o botãoANALOG(PIN_ANALOGB). Os eixos passaram a ser representados por bits no byte de status.
Diferenças principais entre as versões
ControlJoystick02.ino (texto / CSV)
Serial.begin(9600).- Lê 7 botões + eixos X e Y.
- Saída Serial em texto CSV (uma linha por leitura), formato:
UP,RIGHT,DOWN,LEFT,START,SELECT,ANALOG,X-AXIS,Y-AXIS
Exemplo de linha: 1,0,0,1,0,1,0,1,0
- Debounce por software (
DEBOUNCE_MS = 25 ms). - Eixos X/Y enviados como 0/1 (movimento detectado com
AXIS_EPS).
ControlJoystick02v2.ino (binário compacto)
Serial.begin(115200).- Lê 6 botões (UP, RIGHT, DOWN, LEFT, START, SELECT) + eixos X, Y.
- Compacta o estado em 1 byte (
status) com mapeamento: - bit7 = UP
- bit6 = RIGHT
- bit5 = DOWN
- bit4 = LEFT
- bit3 = START
- bit2 = SELECT
- bit1 = X-AXIS (1 = movimento)
- bit0 = Y-AXIS (1 = movimento)
- Envia:
- Serial.write(status);
- Serial.write('\n'); // 0x0A como sincronizador
Problema: compatibilidade do kernel com o AOSP
- Situação: ao integrar o driver no AOSP (Raspberry)
- símbolos não encontrados ao carregar módulo,
- insmod/modprobe falhando,
- políticas SELinux bloqueando.
Histórico de versões
| Data | Alteração |
|---|---|
| 29/09 | Criação da versão base (simulação / userspace: joy_driver.c). |
| 15/10 | Migração para módulo de kernel (joy_driver_module.c) — integração com subsistema input. |
| 29/10 | Atualização do firmware: mudança no mapeamento de pinos e alteração do formato Serial (ControlJoystick02v2.ino envia 1 byte binário + \n). |
Também foi finalizado a instalação do AOSP com DRIVE no Raspberry Pi - Tutorial de Compilação do AOSP e Inclusão de Driver na Raspberry Pi