Archivi tag: arduino

Appunti su Arduino: interrupts


Dopo l’estenuante periodo di fine anno scolastico passato tra interrogazioni, recuperi, esami di qualifica, esami di alternanza scuola lavoro, preparazioni tesine e svariate riunioni/scrutini… riesco a rimettere mani sui miei appunti realizzati durante l’anno scolastico e questa volta colgo l’occasione di rispondere al commento di Raffaele che vuole avere ulteriori informazioni sull’uso degli interrupt in Arduino:

salve sono un vecchio appassionato di elettronica (analogica )- Essendo che ci siamo dovuti convertire sui microcontrollori solo 5 mesi fà sono riuscito finalmente dopo aver tentato con i PIC ,sono passato ad Arduino
duemilaenove e finalmente ho incominciato a capirlo e sviluppare tutti i tipi di esempi che dava nel softwere, dal led ai motori passo passo
e i servo perchè il tipo di programmazzione e soprattutto molti esempi erano spiegati
pure in video e come dicevo sono riuscito a capirci qualcosa.Ovviamente nel mio caso
riuscivo a modificare quelli già presenti ma in sostanza ero abbastanza sodisfatto perchè su di uno sviluppavo le modifiche creandone dei nuovi. Adesso però mi sono fermato un pò perchè ho una richiesta da farle.Pur avendo letto e capito l’istruzione
interrupt cosa significa avendola vista in altri programmi qualè il suo scopo non riesco a capire come inserirla avrei bisogno quindi se possibile di qualche esempio o modo di capire. Ci conto molto

A risentirci e Grazie

Di seguito vi riporto la parte (provvisoria) del manuale che ho realizzato per i miei studenti che si riferisce agli interrupt (sto realizzando alcuni esempi pratici che chiarificano questa funzionalità), sono tratte dal reference on-line di Arduino.cc con alcune mie rielaborazioni.

Con il termine interrupt (interruzione) intendiamo un segnale asincrono che indica la necessità di “attenzione” da parte di una periferica collegata ad Arduino.
L’interrupt viene generato quando si verifica una variazione di stato su uno dei piedini di Arduino. Normalmente il microcontrollore esegue all’interno del loop() in modo sequenziale e ripetitivo le istruzioni in esso inserite, ma quando si verifica un interrupt viene interrotto il flusso delle istruzioni all’interno del loop() ed invocate altre routine (create dall’utente). Quando le routine terminano il flusso del programma prosegue normalmente.
L’utilizzo dell’interrupt è particolarmente utile quando abbiamo la necessità di gestitire in background alcune routine ovvero eseguire istantaneamente un’operazione nel caso si manifesti un evento asincrono esterno.

Capita spesso di avere la necessità di controllare lo stato di diversi pin di input, in questa situazione potrebbe capitare che il programma non si accorga del cambiamento di stato su uno dei pin, utilizzando gli interrupt evitiamo questo tipo di errore.

Continua a leggere

SIMFORARDUINO: simulatore per Arduino

Ricevo la segnalazione da Angelo De Marco che, sul noto portale Elettronica Open Source, viene data un’estesa e completa recensione di un ottimo simulatore per Arduino: SIMFORARDUINO che si differenzia dagli attuali simulatori disponibili on-line in quanto non presenta differenze sostanziali dal funzionali della scheda reale. Sicuramente un prodotto da tenere in dovuta considerazione in ambito didattico e per velocizzare lo sviluppo e la prototipazione prima di sviluppare sull’hardware.
Immagino ad esempio alla possibilità da parte degli studenti di sperimentare a casa, ma anche alla prototipazione per la scelta dei componenti più idonei per un progetto.

Vi rimando all’articolo per tutti gli approfondimenti.

Per chi fosse interessato nella sezione Arduino di questo sito, al paragrafo “Simulatori Arduino” vengono dati i riferimenti dei simulatori attualmente più utilizzati a cui ho aggiunto anche Simforarduino.

Appunti di programmazione su Arduino: controllo di flusso

if

L’istruzione if è composta da un blocco “condizione” che verifica se una deterniata condizione logica si verifica. Se la “condizione” risulta “Vera“, viene eseguita un blocco “istruzioni“, se la “condizione” risulta “Falsa“, non viene eseguito il blocco “istruzioni” e l’esecuzione del programma prosegue oltre l’istruzione if.

In altro modo, se la condizione di controllo, costituita ad esempio dal superamento di un valore analogico rispetto ad un valore dato, risulta vera, verrà eseguito il codice incluso tra le parentesi graffe che seguono il controllo, altrimenti se la condizione di controllo risulta falsa, non vengono eseguite le istruzioni dell’if  e l’esecuzione del programma continua con la porzione di codice che segue.

if (someVariable ?? value)
{
   doSomething;
}

(con ?? indichiamo l’operatore logico usato dalla condizione di controllo e può essere: =, =, ==, !=)

Continua a leggere

PCB per realizzare shield Arduino

Di recente una chiaccherata con l’amico Gianni M.
Un “vero preside” purtroppo in pensione, ex insegnante di elettronica, uno di quei presidi che non si richiudeva nell’alcova del suo ufficio ma entrava nelle classi e nei laboratori per osservare e lavorare con i ragazzi.
Anche lui impegnato in attività di ricerca con Arduino e di recente ci siamo sentiti per condividere idee di progetti, tra le molte attività in corso Gianni dovrà a breve realizzare degli shield ed ha necessità delle librerie Arduino per Kicad per poter implementare le sue schede.

Già in passato vi avevo dato una mia soluzione, molto alternativa per la costruzione di una proto shield con basette millefori, ma sicuramente per soluzioni un po’ più “ordinate” è bene implementare un circuito stampato.
Io per le attività con i miei ragazzi prediligo Eagle, ma di seguito ho cercato di collezionare una serie di risorse sia per KiCad che Eagle, spero possano esservi di aiuto, non sono in ordine di importanza e si aggiungo a quanto condiviso con Gianni.

Se avete altre segnalazioni sarò ben felice di aggiungerle alla lista.

Arduino full memory: aggiornamento all’ultima versione di ATMEL Toolchain

Mi giunge da Boris Landoni, Responsabile Tecnico di Futura Elettronica srl, la segnalazione dell’articolo:

Arduino Full Memory: upgrade to the last ATMEL Toolchain version

Consigliatissima la lettura in quanto di aiuto a tutti i possessori di schede della famiglia “Mega”, ma anche ad utenti delle versioni Arduino UNO e Arduino Duemilanove che potranno averne molti vantaggi per lo sviluppo dei loro progetti.

L’articolo nasce per chiarire e superare alcuni problemi riscontrati con TiDiGino scheda basata su ATmega2560, che è anche il core di Arduino Mega 2560.

Conosco la scheda TiDiGino  in quanto gentilmente donata alla mia classe da parte della rivista Elettronica In, ho realizzato alcune sperimentazioni, ancora in atto, con i miei studenti.

Durante i test di sviluppo in alcuni casi si sono verificati malfunzionamenti di cui risultava complessa l’individuazione della causa.

Ringrazio Boris Landoni per il suo articolo che chiarisce in modo molto preciso cause e rimedi.

Buona lettuara.