Author: Andrea Manni Copyright: GFDL Version: 1.0
Traccia degli argomenti del corso base su Arduino MakeItModena tenuto da Marzo 2017 al Mercoledi’ e Giovedi’ in via Barchetta. Questo documento non costituisce un manuale per il corso ma solo una traccia degli argomenti trattati nelle varie giornate di lezione, i riferimenti per testi e risorse consigliati li trovate su: http://lab.piffa.net/testi.html
Indice degli argomenti
Generato il 2017-04-21 con: http://docutils.sourceforge.net/rst.html
Scheda Arduino Uno:
Primo approccio all’IDE Arduino.
Arduino IDE: sistema integrato. Utilizzare IDE.
Tools -> serial / board
Barra strumenti - Short cuts
Ctrl + R Verify
Ctrl + U Upload
Ctrl + Shift + M Serial Monitor
Menu Contestuale: cerca nella guida
Upload -> LED: rx tx power led
Compilazione - sorgente (passaggi vari: precompilatore, linker) -> codice oggetto specifioc per CPU / Architettura. Upload (burn) codice su flash di arduino via USB. Poi USB come seriale (non possono lavorare assieme).
Primi sketch:
Argomenti:
Si ricorda agli utenti che e’ stata attivata la lista arduinobase:
Oggi sono stati distribuiti i kit Arduino da 5e, chi avesse problemi a usare la scheda con MS Windows puo’ usare il driver: http://www.5v.ru/zip/ch341ser.zip
Oggi e’ stata fatta un’esercitazione di saldatura elettronica, dalla preparazione delle schede microcontroller (piedinatura) a esercizi base per i principianti: congiunzione di cavi, congiunzione di 3 cavi, congiunzione a T, preparazione di blinker LEDs.
Tra i materiali visti:
Prima introducione ai fenomeni elettronici, introduzione ai concetti di base quali ‘’differenza di potenziale, corrente, resistenza’‘, prima occhiata ad un circuito elettrico.
Circuito elettrico: sempre tre elementi (fonte di energia, carico, circuito), flusso di elettroni, carico, circuito aperto e chiuso, corto circuito.
Testo consigliato per il ripasso: http://www.amazon.co.uk/Electronics-All-One-For-Dummies/dp/0470147040
Tutti questi concetti verrano riesaminati tramite esperimenti pratici nel corso delle prossime lezioni, con relativi link a tutorial e documentazione.
Ripasso su argomenti visti e accennati nella giornata precedente. Circuito elettrico: sempre tre elementi (fonte di energia, carico, circuito), flusso di elettroni, carico, circuito aperto e chiuso, corto circuito.
Testo consigliato per il ripasso: http://www.amazon.co.uk/Electronics-All-One-For-Dummies/dp/0470147040
Componenti: Led:
Legge di Ohm, calcolare resistenze per LED in un circuito.
Introduzione alle breadboard:
Esercizio con Arduino: collegare un secondo LED tramite breadboard:
Programma per generare schemi per Arduino + breadboard: http://fritzing.org/home/
Chi volesse altri tutorial a riguardo:
Sketch visti in aula:
Funzioni:
Variabili e costanti: differenze e dichiarazione di una costante con const
Cicli iterativi: automatizzare sequenze di istruzioni ripetitive.
Informatica: automatismi per operazioni ripetitive.
Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell’iteratore, scope dell’iteratore
Primo esempio di un ciclo while: http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_3_ciclo_while/
Nota: non e’ stata ancora introdotta la struttura do - while . Prime considerazioni sulle differenze di utilizzo di un ciclo while (indefinito, perdurare di una situazione es. pressione di un bottone) e ciclo for (iterazione ben conosciuta e delimitata).
Per fondamenti di programmazione in ambiente Arduino si puo’ consultare on-line in italiano: http://www.alberti-porro.gov.it/wordpress/wp-content/uploads/2014/01/ProgrammareArduino.pdf
Un altro testo piu’ approfondito adatto a chi ha gia’ buone basi di programmazione o vuole cimentarsi comunque con una trattazione esaustiva: http://www.apress.com/9781484209417
Vedi sempre: http://lab.piffa.net/testi.html
Utilizzare la seriale per debug: funzioni print, println e flush . Bound Rate: BPS, velocita’ di trasferimento dati.
Links:
Sketch:
Programmi non deterministici, utilizzo di variabili esterne per modificare il flusso del programma: i cicli condizionali.
Differenza tra cicli while e cicli if per la gestione degli eventi.
Per gli interruttori e le resistenze in PULL DOWN / UP potete dare un’occhiata anche agli schemi sul tutorial all’URL:
Gli sketch che abbiamo utilizzato sono:
Nota
Non sono stati ancora introdotti gli strumenti per il Debug via seriale, ad es. http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_2_serial_debug/ - http://lab.piffa.net/sketchbook_andrea/basic/serial_debug/
Gli schemi per la breadboard:
Per fondamenti di programmazione in ambiente Arduino si puo’ consultare on-line in italiano: http://www.alberti-porro.gov.it/wordpress/wp-content/uploads/2014/01/ProgrammareArduino.pdf
Un altro testo piu’ approfondito adatto a chi ha gia’ buone basi di programmazione o vuole cimentarsi comunque con una trattazione esaustiva: http://www.apress.com/9781484209417
Vedi sempre: http://lab.piffa.net/testi.html
Byte, int, long: http://www.ladyada.net/learn/arduino/lesson4.html
Input e output analogici: http://www.maffucci.it/2012/08/31/appunti-di-programmazione-su-arduino-ingressi-e-uscite-analogiche/
Sketch utilizzati:
PWM: ripasso sui concetti di base
Input analogico e pwm: mappatura di un input analogico su un output analogico:
Guida: https://learn.adafruit.com/photocells/using-a-photocell
Introduzione agli Array: forme di dati strutturate. Dichiarazione, dimensionamento, indicizzazione zero indexed, estrazione dei dati, gestione tramite cicli iterativi.
Sketches utilizzati:
Altri esercizi non visti in aula a dimostrazione di tipi di dati strutturati:
Reference avanzata:
Info e guide:
Eercizi:
Gli esercizi succesivi della serie multitasking non sono stati guardati in aula, trattano vari passaggi di refactoring per passare dal codice procedurale nel loop a funzioni quanto piu’ possibile isolate per poi raggiungere come soluzione finale degli oggetti autonomi tramite l’analisi delle problematiche legate ai contesti (scope) locali / globali delle variabili utilizzate.
Per chi fosse interessato prettamente all’uso di millis() al posto della funzione delay() per rendere “non blocking” il codice ci sono alcuni esempi di PWM e luci in sequenza:
Se invece volete solo usare direttamente gli oggetti basati su millis potete usare la libreria common inclusa nello sketchbook_andrea.
Introduzione alle dinamiche di funzonamento di uno scheduler, kernel e sistema operativo. Accenni a FreeRTOS per arduino:
Dimostazione di una scheda TI MSP432 con il framework RTOS Energia per lesecuzione di thread separati in vari TAB:
Confronto tra microcontrollers (arduino), embedded, single-board computer (Rasperry PI, su cui gira il kernel di Linux), personal computer: prestazioni, multitasking, consumi, latenze, utilizzo di diversi linguaggi di programmazione (es Python e altri linguaggi di alto livello per Rpi, Arduino e’ limitata al C / C++ ).
Procedere per interventi minimali per ottimizzare il codice al fine di renderlo portabile / riutilizzabile in contesti diversi. Nell’esercizio svolto in aula basato sugli esercizi https://lab.piffa.net/sketchbook_andrea/multitasking/ si e’ proceduto a modificare in modo incrementale il codice di partenza per arrivare al risultato richiesto (due LED che lampeggiano contemporaneamente). In aula e’ stato fatto fino al punto https://lab.piffa.net/sketchbook_andrea/multitasking/BlinkWithoutDelay_2_led_cleanup/ , gli studenti del corso base potrebbero approfondire fino alla versione https://lab.piffa.net/sketchbook_andrea/multitasking/BlinkWithoutDelay_5_cleanup/ per realizzare il codice tramite funzioni.
I successivi esempi 6/7/8 sono un po’ ostici, per chi volesse un esempio piu’ semplice sulla programmazione a oggetti meglio guardare l’esercizio sui LED RGB: https://lab.piffa.net/sketchbook_andrea/RGB_LED/ .
Introdizione al concetto di interrupt e descrizione delle dinamiche di funzionamento paragonate all’uso di millis, in particolare e’ stato illustrato un esempio di uso di interrupt per la lettura di un evento - cambio di stato di un bottone per superare i limiti dell’uso contemporaneo di delay() e analogRead() (polling).
Esempi:
Tutorial:
Elettronica: semiconduttori, diodi e transistor:
Video: https://www.youtube.com/watch?v=7ukDKVHnac4&list=PLuUdFsbOK_8o1BzPcXHwILC7UN0MmTo5-&index=1
Schemi esercizi:
Il circuito e’ pilotabile con qualsiasi sketch simile a Blink
Per altre risorse vedi la pagina wiki: https://www.youtube.com/watch?v=7ukDKVHnac4&list=PLuUdFsbOK_8o1BzPcXHwILC7UN0MmTo5-&index=1