DADO ELETTRONICO

NE555   Schema con Microcontrollore per Realizzare un Dado da Gioco Elettronico…


 
 
 
 




 

INTRO

Questo schema sfrutta un microcontrollore e un generatore di numeri casuali per andare a generare in uscita dal microcontrollore una configurazione delle uscite che grazie a 7 LED vada a rappresentare i puntini disegnati su di un dado. Il cambio del valore, ovvero il lancio del dado, viene fatto grazie ad un pulsante, quindi si può cambiare velocemente il valore.

 




 

CODICE

Il codice è il seguente:

unsigned int random;                                      //Inizializza variabile
unsigned int short risultato;                             //Inizializza variabile

void main() {                                             //Programma principale

  TRISB = 0x00;                                           //PORTB uscite
  TRISA = 0X01;                                           //PORTA F0 ingresso

  while(1){                                               //Ciclo infinito

    if (PORTA.F0==1){                                     //Se pulsante premuto

    random = rand();                                      //Genera numero random
    random = random + 5461;                               //Trasformalo per evitare 0
    risultato= random / 5461;                             //Dividi per avere i numeri da 1 a 6

    if (risultato == 1) PORTB=0b01000000;                 //In base al numero generato configura uscite
    else if (risultato == 2) PORTB=0b00001001;
    else if (risultato == 3) PORTB=0b01001001;
    else if (risultato == 4) PORTB=0b00101101;
    else if (risultato == 5) PORTB=0b01101101;
    else if (risultato == 6) PORTB=0b00111111;
    Delay_ms(50);                                         //Ciclo antirimbalzo
   }
  }
}

Prima di tutto vengono inizializzate due variabili, la prima per il numero random generato, la seconda per contenere il numero da 1 a 6 da visualizzare. Nel programma principale si inizializzano gli ingressi e le uscite e si inizializza un ciclo infinito. Nel ciclo infinito si controlla con un IF se il pulsante è premuto, se lo è si genera un numero random da 0 a 32768, sommando il valore 5461 e poi dividendo il tutto per questo valore si fa in modo che si generi un numero random da 1 a 6. In base al numero generato si va a selezionare infine la configurazione delle uscite per visualizzare il numero correttamente sui LED. Il delay da 50ms serve come anti-rimbalzo per evitare che premendo una volta il numero cambia più di una volta.

La configurazione dei fuses è la seguente e si usa un quarzo da 4MHz.

NE555
 





 
SCHEMA

Lo schema è il seguente:

NE555

Il codice è valido per qualsiasi microcontrollore con almeno 9 pin di I/O. Nello schema e simulazione è usato un PIC16F84A mentre nella realizzazione ho usato un PIC16F72.

Il pin 14 è il pin dell’alimentazione positiva mentre il pin 5 è la massa. La tensione di alimentazione è 5V anche se usando un valore di resistenze in serie ai LED da 220ohm si può usare una tensione di alimentazione di 3.3V.

Ai pin 16 e 15 è connesso il sistema di oscillazione composto dal quarzo e da C1 e C2.

R9 porta un livello logico alto sul pin 4 per evitare che il microcontrollore si resetti.

Il pulsante è connesso tra la tensione positiva e il pin 17 che il primo bit del PORTA. R8 e C3 formano un circuito di anti-rimbalzo e mantengono l’ingresso a livello basso se il pulsante non è premuto.

NE555

I LED sono connessi come in figura con le resistenze di protezione da 470ohm.

 

DOWNLOAD

Potete scaricare la simulazione con PROTEUS e il codice con MIKROC al seguente LINK!!!





 

1203 Visite totali 12 Visite di oggi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *