Stap 5: Programmering & Code
Ik gebruikte een programmeur zoals de USBtiny. Voel je vrij om te gebruiken wat je hebt beschikbaar. Ik denk dat u kunt gebruiken een arduino als ISP als u niet over een handige AVR-programmer beschikt. Ik keek niet naar arduino code of zelfs als de arduino attiny13 van kunt programmeren. Ik zou voorstellen dat het kan prima hoor.Haak de programmeur naar overeenkomen met de configuratie in de vorige stap.
U moet de hexadecimaal bestand (ik deze gekoppeld in het zip-bestand zodat u het kunt downloaden). Of u kunt ook compileren zelf als u de naam wilt wijzigen van de code. Als u niet welke software weet te gebruiken, kunt u altijd de vrije software in Atmel Studio 6 .
In feite gebruikt de code XOR flip / flop van de staat van de LED. Zij kiest die leidde tot spiegelen gebaseerd op een willekeurig nummer modulus 3. Op deze manier LEDs kan op op hetzelfde moment en hebben elk hun eigen willekeurige kans te blijven. Het maakt een flip / flop besluit elk x detacheert waarbij x staat voor een ander willekeurig getal. Ik weet het is zinloos, maar het ook scrambles de zaad-everytime die het loops. Zo gebruikt het nog steeds de zelfde willekeurige nummer everytime die het wordt ingeschakeld. Een betere manier zou zijn om te lezen een input op pin 3 of 2 (PB3 of PB4, respectievelijk).
De code is vrij eenvoudig:
#include < avr/io.h >
#include < util/delay.h >
#include < stdlib.h >
int main(void)
{
DDRB = 1 << PB0;
DDRB | = 1 << PB1;
DDRB | = 1 << PB2;
PORTB = 0;
int n;
while(1)
{
n = ((n+57) * 13) % 10057;
srand(n);
int r = rand () %3;
Als (r == 0) PORTB ^ = 1 << PB0;
Als (r == 1) PORTB ^ = 1 << PB1;
Als (r == 2) PORTB ^ = 1 << PB2;
int r3 = rand () % 10;
voor (int t = 0; t < r3; t ++) {_delay_ms(75);}
}
keren 0;
}