Stap 5: [Optioneel] AVR codevoorbeeld
OK Ok ik zou niet u niet verlaten opknoping. Ik denk dat je waarschijnlijk al kunnen lezen van I/O pinnen, dus dit is niet bedoeld om je intelligentie te beledigen. Het is gewoon een kort fragment dat ik schreef lezen de pinnen en verzenden van de gegevens via de USART in de ATmega328p op een seriële poort op mijn FreeBSD doos.Ik gebruik geen Arduino Bibliotheken, gewoon pure C zodat u wellicht jou dienovereenkomstig aan te passen. Kan er een meer elegante manier om dit te doen, maar dit is wat ik kwam met.
#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); } }
Beginnen met mijn wiel schakelaar op 0 en fietsen ik krijg de volgende output:
0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
Ik hoop dat je genoten hebt van dit instructable! Hebt u vragen neem gerust contact met mij hier, per e-mail of op onze IRC kanaal op irc.freenode.net #instructables