Etape 5: Programmation & Code
J’ai utilisé un programmeur comme USBtiny. N’hésitez pas à utiliser ce que vous avez disponible. Je crois que vous pouvez utiliser un arduino comme ISP si vous n’avez pas un programmateur AVR maniable. Je ne regarde dans arduino code ou même si l’arduino permet de programmer d’attiny13. J’imagine qu’il peut très bien cependant.Raccorder le programmateur à correspondre à la configuration de l’étape précédente.
Vous aurez besoin du fichier .hex (j’ai joint il dans le fichier .zip donc vous pouvez le télécharger). Ou vous pouvez également compiler vous-même si vous voulez modifier le code. Si vous ne savez pas quel logiciel utiliser, vous pouvez toujours utiliser le logiciel gratuit de Atmel Studio 6 .
Le code utilise essentiellement XOR pour flip / flop de l’état de la LED. Il choisit qui a conduit à flip basé sur un module aléatoire numéro 3. Cette façon LED peut être sur en même temps et ont chacun leur propre chance aléatoire de rester. Il fait un flip / flop la décision toutes les x secondes où x est un nombre aléatoire. Je sais que c’est inutile, mais il brouille aussi la graine à chaque fois qu'une boucle est exécutée. Il utilise toujours le même aléatoire numéro à chaque fois qu'il est allumé. Une meilleure solution serait de lire une entrée hors axe 3 ou 2 (PB3 ou PB4, respectivement).
Le code est assez simple :
#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 ;
Si (r == 0) PORTB ^ = 1 << PB0 ;
Si (r == 1) PORTB ^ = 1 << PB1 ;
Si (r == 2) PORTB ^ = 1 << PB2 ;
int r3 = rand () % 10 ;
pour (t int = 0; t < r3; t ++) {_delay_ms(75);}
}
return 0 ;
}