Arduino

Arduino

Riconoscitore sequenza logica

In questo progetto simulo un circuito sequenziale che riconosce una sequenza di 4 bit scelta a piacere nell'intervallo 0000 - 1111.
In elettronica digitale questo circuito è realizzato con una macchina a stati finiti cioè un dispositivo che possiede un numero di variabili di ingresso, di uscita e di stato determinate.
Trattandosi di un sistema a 4 bit, esso sarà costituito da 4 stati, un ingresso tramite il quale arriva il treno di bit ed un'uscita che verrà posta a livello alto se la sequenza assegnata viene riconosciuta.
Lo studio del sistema viene fatto attraverso il diagramma degli stati.
Se, per esempio, volessimo riconoscere la sequenza 1101, bisognerebbe ragionare in questo modo:




1) si riportano i quattro stati a partire dal primo fino al quarto, simboleggiati da un cerchio;
2) si tracciano fra di loro le linee orientate che li collegano secondo logica;

Se commentiamo il grafico degli stati:
- se arriva uno 0, restiamo fermi allo stato 1;
- se arriva un 1, passiamo allo stato 2;
- se arriva uno 0, si torna allo stato 1, se invece arriva un 1 si va avanti allo stato 3;
- se arriva un 1, si sta fermi allo stato 3 mentre se arriva uno 0 si va allo stato 4;
- se arriva uno 0 si ritorna allo stato 0 mentre se arriva un 1, la sequenza è riconosciuta, l'uscita viene posta a 1 ed il sistema ritorna allo stato 2, punto in cui è stato segnalato il primo 1 della sequenza per iniziare di nuovo il processo di riconoscimento.

Per la realizzazione del progetto ho usato:
1) 4 pulsanti per cambiare la sequenza dei bit da 0 a 1;
2) un display OLED per mostrare la sequenza scelta
3) 4 LED che si accendono, da sx a dx, per segnalare quanti bit sono stati riconosciuti;
4) un buzzer che emette un suono quando l'uscita è posta a 1 cioè a sequenza riconosciuta;
5) un pulsante di reset ed uno di avvio per consentire, sia l'ingresso di una nuova sequenza che per iniziare la fase di riconoscimento.

Collegamenti:
a) pulsanti, collegati a +5V con un morsetto e con l'altro, tramite una resistenza di 10 Kohm, al GND;
a monte di essa è derivato un collegamento al pin 2 (bit di estrema sinistra), al pin 3, il successivo, al pin 5, il successivo e al pin 6 (bit di estrema destra); al pin 8 quello di reset e al pin 9 quello di avvio;
b) led, collegati con un terminale, tramite una resistenza di 220 ohm, al GND e l'altro ai pin 10,11,12,13 a partire da sx.
c) buzzer, collegato con un morsetto al GND e con l'altro al pin digitale 14 (A0 analogico);
d) display OLED
Due pin all'alimentazione (+5V e GND) e gli altri due ai pin SCL ed SDA della scheda Arduino oppure ai pin analogici A4 (SDA) e A5(SCL).

Il codice del progetto è disponibile al seguente link: riconoscimento_sequenza.


Nessun commento:

Posta un commento