Paso 5: Ejemplo de código AVR [opcional]
OK Ok no te dejo colgado. Creo que estás probablemente todo capaz de leer los pins de I/O, así que esto no significa insultar su inteligencia. Es apenas un breve fragmento que escribí para leer los pins y enviar los datos a través de la USART en el ATmega328p a un puerto serial de mi caja de FreeBSD.No utilizar las bibliotecas de Arduino, C pura para que tenga tuyo ajustar por consiguiente. Puede ser una forma más elegante de hacerlo, pero esto es lo que se me ocurrió.
#include <avr/io.h>#include <util/delay.h>#include "uart.h"#define SWITCH_M 0b00111100int main(){ USART_init(BAUD_9600); DDRD = 0x00; // inputs for switches PORTD = 0xFF; // pullup on PD[2..5] (we have negative logic on switch now) uint8_t bcode = 0x00; for (;;) { bcode = (PIND & SWITCH_M); // bcode = 00xxxx00 bcode = (bcode >> 2); // bcode = 0000xxxx bcode |= 0xF0; // bcode = 1111xxxx USART_tx(~bcode); // bcode = 0000xxxx bcode = 0x00; _delay_ms(2000); } }
A partir de mi interruptor de rueda en 0 y en bicicleta hasta Obtén el siguiente resultado:
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
Espero que hayas disfrutado este instructable. Si tienes cualquier pregunta siente libre de entrarme en contacto con aquí, correo electrónico o en nuestro IRC canal irc.freenode.net #instructables