Faraday för skojs skull: En elektronisk Batteryless Dice (7 / 12 steg)
Steg 7: Control Software
/ * Elektroniska batteri mindre tärningar * // * Dhananjay Gadre * /
/ * 20 September 2007 * /
/ * Tiny13 Processor @ 128KHz inre RC-oscillator * /
/ * 7 lysdioder ansluten enligt följande
LED0 - PB1
LED1, 2 - PB2
LED3, 4 - PB3
LED5, 6 - PB4
D3 D2
D5 D0 D6
D1 D4
Puls input från spolen är på PB0
*/
#include < avr/io.h >
#include < util/delay.h >
#include < avr/interrupt.h >
#include < avr/pgmspace.h >
CONST char ledcode [] PROGMEM = {0xfc, 0xee, 0xf8, 0xf2, 0xf0, 0xe2, 0xfe};
Main)
{
unsigned char temp = 0;
int count = 0;
DDRB = 0XFE; / * PB0 är input * /
TCCR0B = 2; / * Dela med 8 * /
TCCR0A = 0;
TCNT0 = 0;
PORTB = 254; / * Inaktivera alla lysdioder * /
While(1)
{
/ * vänta på puls att gå hög * /
medan ((PINB & 0x01) == 0);
_delay_loop_2(50);
/ * vänta på puls att gå låg * /
medan ((PINB & 0x01) == 0x01);
_delay_loop_2(50);
count = 5000;
medan ((räkna > 0) & & ((PINB &0x01) == 0))
{count--;
}
IF(Count ==0) / * ingen mer puls så Visa ett random nummer * /
{
PORTB = 0XFE; / * alla lysdioder av * /
_delay_loop_2(10000);
Temp = TCNT0;
Temp = temp %6.
Temp = pgm_read_byte (& ledcode[temp]);
PORTB = härda;
}
}
}