Blue Flower

In questo articolo vediamo la realizzazione di un semplice semaforo con il pattern Macchina a Stati. Abbiamo quindi tre led Verde, Giallo e Rosso che si accenderanno con la sequenza: verde-->vede e Giallo--> Rosso con tempistiche diverse per ogni stato.

Il progetto è stato realizzato con LabVIEW 2013. Nella sezione download si può scaricare il progetto completo.

 

Fase 1: Creazione del progetto (ambiente windows 10)

  • Creare sul desktop una cartella di nome "Semaforo_LV2013".  
  • Avviare LabVIEW
  • Creare un Progetto vuoto (File/Create Project o click sul pulsante "Create Project"), quindi selezionare Blank Project e poi il pulsante Finish
  • Salvare il nuovo progetto dentro la cartella del punto 1 dando al progetto lo stesso nome della cartella (Semaforo_LV2013)
  • Click destro sulla voce "My Computer" e selezionare "New-->VI" (si apre un nuovo VI vuoto)
  • Salvare il nuovo VI col nome "Semaforo con macchina a stati"

Project Manager

Fase 2: Creazione dell'interfaccia grafica o GUI (Pannello frontale. Vedi figura)

  • Cercare su Google immagini il disegno di un semaforo (es: link ). Copia immagine e poi crtl+V sul Pannello frontale per incollare l'immagine in LabVIEW
  • Cercare un LED dalla paletta. Click destro sul pannello frontale-->Boolean-->Round Led (chiamare il led "V" iniziale di Verde)
  • Sovrapporre il Led "V" al Verde dell'immagine e ridimensionarlo fino a farlo diventare grande uguale. Modificare il colore di OFF (falso) in NERO (click desto sul Led e poi properties oppure usare la Tools Palette con i pennelli).
  • Copiare il Led "V" (ctrl+click Dx su Led V) e mettere la copia dove c'è la luce gialla. Colorare lo stato ON del led col colore giallo e rinominare il led in "G"
  • Ripetere la stessa operazione del punto precedente per creare il led "R"
  • Nascondere tutti i nomi dei led. Click dx sul led poi "Visible Item-->Label" (togliere la spunta).
  • Prelevare il pulsante STOP dalla Control Palette--> Boolean. Posizionare il pulsante sotto il semaforo e ridimensionarlo. Nascondere la Label

 GUI

Fase 3: Creazione del codice (Diagramma a blocchi o Block Diagram. Vedi figura)

Se siete sufficientemente pratici di LabVIEW potete costruire il codice seguendo le figure, altrimenti ecco alcune indicazioni:

  • Definizione degli stati. Sul Pannello Frontale inserire un oggetto Enum. (Control Palette-->modern->Ring&Enum-->Enum) poi click dx su Enum e quindi "Edit Items...". Inserire, nell'ordine, le voci "Verde", Verde-Giallo" e "Rosso" quindi salvare
  • Creazione del Type Def. Click dx sul Enum e selezionare la voce "Make Type Def". Individuare Enum sul diagramma a blocchi e poi click dx quindi "Change to Constant"  e successivamente "Open Type Def" . Dalla finestra che si apre fare File-->Salva. Salvare col nome "statiSemaforo"
  • Inserire un cilco While-Loop e collegare il pulsante di STOP al Loop Condition del ciclo while.
  • Click dx sulla cornice del ciclo while ed aggiunger uno Shift Register (Add Shift Register). Ripetere la stessa operazione per altri due shft register (click dx in punti diversi!)
  • Collegare esternamente l'Enum ad uno degli shift register
  • Costante Cluster. Inserire una costante cluster. Function Palette-->Programming-->Cluster-->Cluster Constant. Inserirci dentro una costante booleana settata a False (sub-palette Boolean di Programming) e chiamarla "V". Ripetere (o copiare) l'operazione con altre due costanti "G" e "R". In alterenativa potete creare il cluster sul pannello frontale inserendo al suo interno copia dei tre led creati prima e poi trasformarlo in costante.
  • Collegare la costante cluster ad uno shift register (esternamente)
  • Creare una costante numerica inizializzata a 3 e collegarla al terzo shift register (sempre esternamente)
  • Stati: Aggiungere una struttura Case. Function Palette-->Programming-->Structures-->Case Structure
  • Collegare l'uscita dello shift register a cui è collegato Enum al "?" (Case Selector) della struttura case. LV dovrebbe aggiungere automaticamente tutti i casi presenti nel Type Def Enum (Verde, Verde-Giallo e Rosso)
  • Inserite un Express VI chiamato Elapsed Time (attivate View As Icon). Function Palette-->Programming-->Timing-->Elapsed Time. Collegate l'uscita dello shift registrer della costante "3" all'ingresso "Time Target(s)" del'Express VI e l'uscita "Time has Elapsed" al bordo della struttura Case.
  • Nella Case (stato "Verde") inserire una Select (Function Palette-->Programming-->Comparison-->Select) e collegarla come in figura. Per le costanti Enum copiare quella esterna al ciclo o utlizzare il comando: Function Palette-->Select a VI... quindi selezionare il file "statiSemaforo.ctl"
  • Sempre nella Case "Verde" Inserire un Bundle by Name (Function Palette-->Programming-->Cluster-->Bundle by Name) e collegarla come in figura.
  • Copiare tutto il contenuto della Case "Verde"(selezionare e poi CTRL+C) . Posizionarsi nella Case "Verde-Giallo"  fare incolla (CTRL+V) e fare le opportune modifiche (vedi figura).
  • Fare le stesse operazioni del punto precedente per il Case "Rosso"
  • Aggiungere fuori della struttura Case un Unbundle by Name e collegarlo come in figura
  • Aggiuingete un Wait (Function Palette-->Programming-->Timing-->Wait) con una costante di 20 ms

Sotto il diagramma a blocchi con lo stato "Verde"

Diagramma a Blocchi

Sotto la case con lo stato "Verde-Giallo" e quella con lo stato "Rosso"

Stato Verde-Giallo   Stato Rosso

 

Il nostro codice è terminato. Salviamo. Ora possiamo collaudare il VI

Fase 4: Impostazioni di visualizzazione (opzionale)

Se volete mostrare il VI al centro dello schermo quando è in esecuzione e senza la varie barre dei menu e degli strumenti andate nelle proprietà del VI (File-->VI properties o CTRL+I). Selezionate dal menu a tendina le voci "Windows Apparence"ed impostate il "pallino" Dialog. Per ridimensionare la finestra con solo il semaforo utilizzare l'altra scheda mostrata in figura.

 Impostazioni VI (Dialog)

 

Impostazioni VI (size finestra)