Nota:il programma realizzato è in grado di funzionare su sistema operativo Microsoft Windows 9x ma non è in grado di funzionare su Microsoft Windows NT e successivi.Infatti questo sistema operativo non abilita l'uso delle porte facilmente come Windows 9x e non permette quindi l'esecuzione del programma.
Master Engine Control v 1.0
Questo programma permette il comando di un motore passo-passo in due diverse modalità (richiamabili dal menu "Motore"):
Modalità 1:in questa modalità è possibile effettuare la rotazione oraria/antioraria del motore in modalità a passo intero/mezzo passo selezionando le opzioni desiderate dalla finestra del programma ed è anche possibile modificare la velocità di rotazione.Aprendo la finestra del Position Control è possibile utilizzare il bottone Forza,in grado di far ruotare il motore fino ad un passo da noi prestabilito.
Modalità 2:in questa modalità è possibile inserire nell'apposita casella la parola da visualizzare.Successivamente il programma svolgerà automaticamente tutte le operazioni necessarie per ottenere la rotazione del motore in modo tale che ogni lettera costituente la parola venga puntata dalla freccia connessa al perno del motore:questo può avvenire sempre con una rotazione oraria,sempre con una rotazione antioraria oppure utilizzando il percorso più breve tra una lettera e l'altra.Tutto questo è selezionabile attraverso la parte relativa alla direzione,visibile nell'interfaccia del programma.Se deve essere visualizzata una parola con una lettera doppia,la scelta di progetto è stata quella di compiere una rotazione di 360° in modo da ritornare sulla stessa lettera (l'idea originale era di comandare un led che indicasse se la lettera da visualizzare fosse doppia).E' presente anche una casella di scelta da cui è possibile selezionare se la freccia deve tornare nella posizione di "Home" dopo la visualizzazione.
Tramite il tasto "Accendi" è possibile far partire la rotazione del motore,mentre con il tasto "Resetta" è possibile riportare il motore nella posizione di "Home" e resettare logicamente anche l'integrato L297.Con il tasto "Position Control" è possibile ottenere la visualizzazione avanzata nel form,cioè è possibile osservare a video la posizione attuale del perno del motore:
Problemi e difetti riscontrati
Il problema maggiore riscontrato durante la fase di programmazione è stato quello di trovare il modo di mandare in output un byte alla porta parallela:inizialmente abbiamo utilizzato la stessa routine assembler che avevo utilizzato in un'altra applicazione a 16 bit (che avevo programmato in Pascal) ma,utilizzando Delphi che funziona sotto Windows,non funzionava.Abbiamo perso moltissimo tempo per questo problema ma poi finalmente abbiamo trovato la soluzione:bastava utilizzare un push dx prima della routine assembler (che funzionava benissimo in Pascal) e,successivamente,un pop dx,in modo da salvaguardare il contenuto del registro dx,magari utilizzato al momento proprio da Windows.Al momento gli unici difetti che posso constatare nel programma sono:
Menu Settaggi:è un menu fittizzio in quanto non è possibile modificare il numero di giri del motorino ed impostare l'indirizzo della porta parallela.Il programma è testato solamente per un motorino a 200 passi e per l'indirizzo 378h (per la porta parallela).
Home:è necessario,all'avvio del programma,spostare la freccia manualmente nella posizione di home:questo poteva essere evitato effettuando una rotazione (oraria o antioraria) fino a quando non veniva inibito un sensore posizionato nella casella Home.
Bloccaggio del motorino:se,durante il funzionamento del motorino,si desidera accedere ai menu Motore o Info viene interrotto (fino alla selezione di una casella dal menu o all'uscita dal menu stesso) il ciclo di rotazione del motore.