14. Uma CPU (normalmente de 8 bits) faz
a leitura dos botões e eixos
analógicos periodicamente e os envia
para o console e/ou PC
15. Potenciômetro
Um potenciômetro é um componente eletrônico que possui
resistência elétrica ajustável
(Imagens http://baudaeletronica.blogspot.com.br/2011/09/potenciometro.html)
17. Analog-to-digital converter (ADC)
Responsável por traduzir grandezas analógicas para
uma representação digital, o microcontrolador
escolhido tem uma resolução de 10 bits, ou seja,
ADC value = Vin * 2 ^ 10 / ARef
22. Atmel AVR
- Arquitetura AVR
- 3 tipos de mémoria (Flash, EEPROM e
SRAM)
- Alguns modelos possuem um oscilador
interno, simplificando ainda mais o projeto
- O mesmo microcontrolador que o Arduino
utiliza (Atmega168/328)
23. Será um termo bem comum a partir de agora,
que vai permitir fazer operações bit a bit em
determinada áreas. No nosso caso,
poderemos "empacotar" até 8 botões num
único byte usando o operador OR, e mais
tarde usar máscaras para verificar por
determinado bit usando o operador AND
Máscara de bits
24. #define BUTTON_UP 0x00000001
#define BUTTON_DOWN 0x00000002
#define BUTTON_LEFT 0x00000004
#define BUTTON_RIGHT 0x00000008
uint8_t buttons = GetButtonsState(); // Ex. Retorna o valor 5, que é 00000101 em
binário
if (buttons & BUTTON_UP) { // 00000101 AND 00000001 Resulta em verdadeiro
y_vel = -5;
}
else if (buttons & BUTTON_DOWN) { // 00000101 AND 00000010 Resulta em falso
y_vel = 5;
}
if (buttons & BUTTON_LEFT) { // 00000101 AND 00000100 Resulta em verdadeiro
x_vel = -5;
}
else if (buttons & BUTTON_RIGHT) { // 00000101 AND 00001000 Resulta em falso
x_vel = 5;
}
x += x_vel;
y += y_vel;
Máscara de bits
28. Vamos ver duas maneiras de implementar o
joystick, usando duas bibliotecas e dois
hardwares diferentes, Qual você vai encarar:
Piece of Cake ou Come Get Some?
Chega de blá blá... Mãos à
obra
30. Toolchain e ferramentas
- avr-gcc: Compilador GCC modificado para gerar binários
para a plataforma AVR
- avr-libc: Biblioteca padrão C portada para arquitetura AVR
- avr-binutils: Diversos utilitarios utilizados durante o processo
de compilação (ld, strings, dlltool, as, etc...)
- avrdude: Usado para subir e baixar o programa no
microcontrolador
- dfu-programmer: Usado para subir firmware em
microcontroladores com USB bootloader já pre-carregado
31. Piece of Cake
- Arduino UNO Rev 3
- dfu-programmer
- Botões e Eixos analógicos a gosto
- Uma tesoura sem ponta
33. Prós:
- Fácil de usar e bem documentado
- Vários exemplos
- Suporta dezenas de dispositivos (Audio In,
Audio out, keyboard, MIDI, Mouse, Joystick,
Impressora, dispositivo de armazenamento em
massa, etc)
Contras:
- Funciona apenas com série USB da Atmel
(atmega8u2, atmega16u2, etc...)
44. Se você não tem um programador ISP
(In-System Programmer), não tem
problema, é possivel utilizar um
Arduino, BeagleBone, Android IOIO,
ou ainda um RaspberryPi para tal
http://arduino.cc/en/Tutorial/ArduinoISP
http://blog.stevemarple.co.uk/2012/07/avrarduino-isp-programmer-using.html
http://www.instructables.com/id/Program-an-Arduino-using-BeagleBone-
without-USB/
45. - Atmega168/328
- 2x Capacitor cerâmico de 22pf (picofarads)
- 1 Oscilador de 16Mhz
- 1 Resistor de 1.5 Kiloohms
- 2 Resitores de 47 Ohms
- 2 Diodos Zener de 3.6V 500mw
- Protoboard
- Muitos Fios! (a.k.a. jumpwires)
- Botões e Eixos analógicos a gosto
47. Debug is on the table!
"The most effective debugging tool is still
careful thought, coupled with judiciously placed
print statements"
-- Brian W. Kernighan