ESERCIZI

La gestione di un segnale che passa da un livello logico zero a un livello logico 1, attivando un relè utilizzato per accendere o spegnere una apparecchiatura a intervalli di tempo prefissati oppure al variare delle condizioni ambientali,  è uno stimolo per imparare l’utilizzo di Arduino.

Questo  programma, ha lo scopo di introdurre la funzione INPUT e OUTPUT con l’utilizzo delle  variabili, l’assegnazione delle porte, l’utilizzo dei componenti di Inputs-Output e l’utilizzo del pannello di simulazione  DashBoard o 3D System panel.

Credo di essere stato tra i primi a costruire i Personal Computer in Italia.

Alla fine degli anni settanta utilizzai schede con microprocessori 65xx per gestire gli strumenti musicali che progettavo e costruivo.

In seguito utilizzai schede con Z80, essenzialmente per pilotare relè attraverso la porta parallela, infine, nel 1983, iniziai a costruire i primi PC compatibili IBM.

A causa della continua evoluzione dell’hardware, anche i sistemi operativi si evolvevano, di conseguenza dovetti continuamente imparare nuove procedure per gestire le periferiche e i programmi come Autocad, Autoarchitect e 3D Studio, di cui divenni distributore autorizzato, abbandonando quasi definitivamente la programmazione “Assembler”, relegata a livello di hobby.

Mi dedicai all’Assembler, durante le vacanze estive, sprecando tempo prezioso per ripassare quello imparato l’anno precedente.

Finalmente con Flowcode, che utilizza il diagramma di flusso, mi fu facile riprendere in mano i progetti iniziati l’anno  precedente, proseguendo da dove mi ero fermato.

L’accensione e lo spegnimento di  un led con la pausa di un secondo tra lo stato acceso e lo stato spento, è il primo esempio proposto sul sito ufficiale di Arduino.

l’esercizio utilizza le funzioni: Loop (ciclo), output (Uscita) e Delay (Ritardo).

I multivibratori, sono circuiti elettronici che variano la propria uscita passando dal livello logico zero al livello logico uno.

Ci sono tre tipi di multivibratori: Astabili, monostabili e bistabili.

I Contraves o Thumbwheel o BCD binary Switch, sono componenti utilizzati in elettronica, per impostare un valore numerico prestabilito mediante l’esposizione, sulla finestrella anteriore, di un numero, compreso tra 0 e 9 , posizionato su di una ruota che può essere fatta girare premendo due pulsanti meccanici.

Gli Interrupts, interrompono momentaneamente il programma richiamando l’esecuzione di un’altra funzione specificata in precedenza dal programmatore.

Gli “Interrupts” sono chiamati da un evento esterno, o da un fatto preimpostato nel tempo.

Una tensione continua,  per essere rappresentato su di un display numerico, deve essere convertito in binario; i circuiti necessari per questa conversione si chiamano ADC (Analog-to-Digital Converter).

I sensori di temperatura, umidità, di luce o un microfono, forniscono un’uscita analogica pertanto per essere gestiti da un computer, deve essere trasformato in codice binario.

Il PWM o modulazione a larghezza d’impulso, rappresenta i segnali che variano il proprio livello logico nel tempo, passando dal livello logico 0 al livello logico 1, per la durata di un periodo (ciclo di lavoro).

Il PWM è utile per controllare la potenza erogata come per il Varilight che regola la luminosità di una lampadina, il dimmer che controlla la luminosità di un led o il regolatore di velocità di un trapano.

L’accensione e lo spegnimento di  un led con la pausa di un secondo tra lo stato acceso e lo stato spento, è il primo esempio proposto sul sito ufficiale di Arduino.

l’esercizio utilizza le funzioni: Loop (ciclo), output (Uscita) e Delay (Ritardo).

Questo programma serve per accendere una luce quando un PIR (sensore a raggi infrarossi passivo), rileva la presenza di un corpo caldo nel suo raggio di azione; la luce rimane accesa per un tempo prefissato anche dopo che l’oggetto caldo è uscito dal suo campo di azione.

Il progetto utilizza un sensore di prossimità IR, un interruttore e una lampada LED e  le funzioni  Loop (ciclo), Output (Uscita), Delay (Ritardo), Input(ingresso) e Decision(decisione)

Per evitare incidenti e regolare il traffico stradale si utilizzano lampade di colore verde, giallo e rosso, per segnalare un pericolo o stabilire a chi spetta la precedenza.

Il progetto utilizza un sensore di prossimità IR, un interruttore e una lampada LED e  le funzioni  Loop (ciclo), Output (Uscita), Delay (Ritardo), Input(ingresso), Decision(decisione) e GoTo + Connectionpoint

KnightRider è l’effetto luminoso ottenuto facendo scorrere avanti e indietro una striscia di luci; l’effetto fu reso famoso da una serie di telefilm degli anni 80’ con protagonista un’automobile dotata d’intelligenza artificiale e corredata con questi giochi di luce.

Il progetto utilizza un sensore di prossimità IR, un interruttore e una lampada LED e  le funzioni  Loop (ciclo), Output (Uscita), Delay (Ritardo), Decision(decisione), GoTo, Connectionpoint e Calcolo + Array.

Con la necessità di visualizzare numericamente il risultato di un conteggio di eventi, sia sotto forma d’impulsi in unità di tempo (frequenza), sia il tempo medesimo (minuti, secondi, ore..), l’elettronica, ha sviluppato circuiti integrati con la funzione di contatore binario o decimale, per decodificare e pilotare il sistema di visualizzazione, senza la necessità di dover utilizzare un computer, che negli anni 60’ era tutt’altro che personal.

Contatore con modulo %

L’esercizio propone la combinazione di 0 e 1 ; il valore 0 (zero), led spento, valore 1 = led acceso.

Il programma utilizza  i Componenti Inputs e Outputs le Variabili, e le funzioni Input, Output, Loop, Delay, Calcolo e Decisione .

L’accensione e lo spegnimento dei led, può essere realizzata con una sequenza di “Output” che con i valori 0 o 1 , accende o spegne i led, oppure , è possibile utilizzare la funzione “Switch ”,  per accendere i led in funzione di un conteggio incrementale.

Il programma utilizza le funzioni Loop, Output, Delay, Decisione, Calcolo e Switch Case.

Visualizzazione del conteggio da 0 a 9 su un display a led.

Visualizzazione del conteggio da 0 a F, su display a led  4 digit.

Contatore da 0 a 9999.

Contatore da 0 a 9999, utilizzando il Modulo.

Come l’operatore % ( modulo) influenza il conteggio.

Rappresentazione del tempo in d minuti e secondi.

Contatore da 0 a 9999999.

Utilizzo di un display LCD con interfaccia I2C e conversione del numero in una  stringa

Gestione sequenziale di un numero di attuatori, compreso tra 1 e 8 collegati alla porta di uscita.

astabile

monostabile

Ogni volta che si preme un pulsante, l’uscita cambio stato logico, passando dal livello 0 a livello 1 e viceversa.

Il multivibratore astabile è un oscillatore che cambia continuamente la propria uscita logica, passando dal livello logico 0 al livello logico 1 e viceversa; la frequenza di oscillazione dipende dai ritardi inseriti nel LOOP.

Il multivibratore monostabile è un Timer/temporizzatore che utilizziamo per fissare un periodo durante il quale un’apparecchiatura deve rimanere accesa o spenta, dopo aver dato il comando di start.

Schema di collegamento Arduino con 4 contraves e visualizzazione del conteggio sul display LCD.

Spiegazione  del programma principale con l’inizializzazione del display LCD e della gestione dei numeri presenti sul contraves.

Conteggio da 0 a 9999.

Conteggio da 9999 a 0.

Il programma di gestione dei contraves è eseguito su un PIC 16F887, che ha maggiori risorse rispetto al chip utilizzato con  ArduinoUNO.

Interrompo l’esecuzione del programma KnightRider con l’utilizzo di INT0 che richiama una Macro; quando premo il pulsante la sequenza si interrompe facendo lampeggiare 5 volte un led.

  • Funzioni : Loop, Output, Decisione, Delay, Calcolo con Array, GoTo, ConnectionPoint e INT0.

Al programma precedente, aggiungo un secondo pulsante collegato a INT1 che chiama una nuova Macro.

  • Funzioni : Loop, Output, Decisione, Delay, Calcolo con Array, GoTo, ConnectionPoint e INT1.

Al programma precedente, aggiungo un terzo pulsante collegato a IOC che chiama una terza Macro.

  • Funzioni : Loop, Output, Decisione, Delay, Calcolo con Array, GoTo, ConnectionPoint e IOC.

Cronometro con i comandi Start, Stop e Reset e TMR0.

  • Funzioni : Loop, Output, Decisione, Delay, Calcolo con Modulo%, ComponentMacro, INT0, INT1 e IOC.

Quando i tasti a disposizioni sono pochi è possibile utilizzare il tempo di premuta di un tasto per cambiare programma.

La comunicazione seriale permette di ricevere e trasferire i dati tra Arduino e le sue periferiche, utilizzando pochi fili di collegamento.

L’acquisizione e la conversione del segnale analogico presente sugli ingressi analogici sono convertiti in un Byte (8 bit) con l’istruzione GetByte. e visualizzata su un display LCD.

  • Funzioni : Loop, Delay, ComponentMacro,

L’acquisizione e la conversione del segnale analogico presente sugli ingressi analogici è convertito in stringa con l’istruzione GetString. e visualizzata su un display LCD.

  • Funzioni : Loop, Delay, ComponentMacro,
  • Variabile di tipo stringa limitata a 4 caratteri.

il segnale di ingresso è comparato con un valore prefissato, utilizzato come soglia di intervento.

  • Funzioni : Loop, Output, Decisione, Delay e ComponentMacro,

Il segnale di ingresso è comparato con diversi punti prefissati; quando il valore si trova tra due punti di riferimento si attiva l’uscita corrispondente.

  • Funzioni : Loop, Component Macro, Decisione, Output e Delay

L’uscita PWM è trasformata in tensione tramite la variazione del Duty Cycle.

  • Funzioni : Loop,  macro compomponentMacro e Delay.

Quando una variabile non dipende da un sensore esterno, può essere utile introdurre nel programma un potenziometro associato a un ingresso analogico in modo da generare un numero, che cambia a piacimento, utilizzabile come variabile.

Il segnale PWM può essere utilizzato per accendere o spegnere lentamente una barra luminosa o aumentare e diminuire  gradualmente la velocità di un motore.

Il segnale PWM è utilizzato per accendere progressivamente i leds rossi, verdi e blue; le diverse frequenze luminose si sommano ottenendo le gradazioni di colori intermedie.

Il servo motore, è un dispositivo elettro meccanico utilizzato per muovere o spostare con precisione, in modo lineare o angolare, parti meccaniche unite tra loro mediante leve o cavi (servomeccanismi).

Il keypad/tastierino, è utile per inserire manualmente i dati in un programma che prevede l’utilizzo di un codice per attivare o disattivare un allarme, oppure, nel caso di un Timer/temporizzatore,  per impostare il tempo di conteggio.

Lo zero iniziale, cifra meno significativa, può impedire la corretta lettura; è preferibile eliminare lo zero in modo da visualizzare solo le cifre più significative; rispettivamente: [999],[99] e [9]

Muovere avanti e indietro un puntatore laser o una telecamera per video sorveglianza sono applicazioni tipiche dell’utilizzo di un meccanismo basculante, che fa oscillare l’oggetto, avanti e indietro in modo automatico intorno ad un asse.

Voler conoscere la posizione angolare del servocomando potrebbe essere utile per impostare alcuni punti da utilizzare per muovere la telecamera in una determinata posizione.

Per muovere un puntatore laser o una videocamera in orizzontale (asse X) e in verticale (asse Y), è necessario agire su due controlli separati; è possibile utilizzare un joystick che agisce contemporaneamente su due potenziometri.

L’utilizzo del tastierino e di un display LCD, permette di inserire e visualizzare un determinato numero di caratteri ASCII, che convertiti in un numero intero o in una stringa, può essere utilizzato per impostare un temporizzatore o il codice di apertura di un sistema di allarme.

Per inserire preventivamente il codice segreto, si può utilizzare una variabile ”Array” composta di una serie di numeri predefiniti

Per individuare il codice di accesso di una serratura elettrica, o per disattivare un sistema di allarme, Matrix Multimedia, propone l’utilizzo del Circular Buffer.

Aprire una serratura protetta da un sistema di allarme che protegge l’accesso ai locali mediante un codice segreto.

 è opportuno limitare i tentativi d’inserimento bloccando il tastierino dopo il terzo e attivando un allarme

Gli encoder ottici o magnetici, sono utilizzati in applicazioni elettromeccaniche che necessitano di un controllo preciso della velocità e posizione di un albero ruotante o degli spostamenti e velocità lungo un asse lineare, anche in caso di movimenti lenti.

Un programma di polling (gestione ciclica delle periferiche), per gestire il potenziometro-encoder con integrato un pulsante a pressione, usato per richiamare un sotto programma.

Utilizzo dell’encoder, in abbinamento a un motore che sposta un dispositivo, avanti e indietro, lungo un asse, senza perdere il riferimento iniziale.

un sistema paragonabile a quello di una cassaforte, apribile, ruotando a destra e a sinistra, una manopola numerata, con l’obbiettivo di indovinare i codici di apertura.

Esistono diverse tipologie di motori alimentati con una tensione continua (DC).

Motore DC (alimentato con tensione continua), servo motori,(dotati di feedback), motori brushless (senza spazzole) e motori stepper (motori passo-passo).

Sono utilizzati nelle stampanti a getto d’inchiostro, stampanti laser, stampanti 3D, negli scanner, nei CNC, nei robot industriali e in tutti i dispositivi che necessitano di un movimento preciso e stabile.

I motori brushless, come suggerisce il nome, sono senza spazzole, il che li rende più efficienti, durevoli e molto più potenti, ma necessitano di un controllo sofisticato.

rick 3Riccardo Monti