Arduino Base: Lezioni

Author:Andrea Manni
Copyright:GFDL
Version:1.0

Traccia degli argomenti del corso base su Arduino Make++ tenuto da Febbraio 2016 al Lunedi’ 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

Generato il 2017-03-22 con: http://docutils.sourceforge.net/rst.html

Addendum: Giovedi’ 7 Aprile

Multitasking

  • Eseguire diversi task contemporaneamente: problemi dell’uso della funzione delay(): sketch: sketchbook_andrea/multitasking/blink_0

  • Utilizzo della funzione millis() per coordinare diverse istruzioni: sketch
    • sketchbook_andrea/multitasking/BlinkWithoutDelay_1/
    • sketchbook_andrea/multitasking/BlinkWithoutDelay_2_led/
  • Isolare il codice di ogni task in una funzione: sketchbook_andrea/multitasking/BlinkWithoutDelay_2_led/

  • Passare un argomento a una funzione: variabili locali e globali: sketchbook_andrea/multitasking/BlinkWithoutDelay_4_argomento/

  • Programmazione orientata agli oggetti, sketch sketchbook_andrea/multitasking/BlinkWithoutDelay_6_class

Refactoring

Procedere per interventi minimali per ottimizzare il codice al fine di renderlo portabile / riutilizzabile in contesti diversi.

Lunedi’ 4 Aprile: ultima lezione

Comunicazione Giovedi’ 7 si terra una ulteriore lezione di recupero su gli argomenti pasquali e il multitasking.

Piezo

Piezo: Layer di cercamica e layer metallico, eccitato vibra producendo onde quadre. Suono: onde sonore quadre, triangolari, tonde. Sketch: pitch follower, keyboard con pull up,

INPUT_PULLUP

Meldie varie, sirene. Pitch follower, melodia con 3 tasti in pullup, melodia pre impostata con include di libreria.

Sketches:

  • piezo/piezo_1_tonePitchFollower/
  • piezo/piezo_2_keyboard/
  • piezo/piezo_3_toneMelody/
  • piezo/piezo_4_mario_tune/

Include

Per includere un file nell’Arduino IDe si puo’ utilizzare l’apposita volce nel menu’ [SKETCH],oppure creare un nuovo TAB che dovrebbe essere immediatamente concatenato al file principale.

Percorsi relativi e assoluti

L’IDE di arduino dovrebbe permettere l’include di un file nello stesso PATH del file attuale ( ./) . Dovrebbe in oltre cercare automaticamente nei percorsi:

Giovedi’ 24 Marzo

Lunedi’ 28 non si terra’ lezione in occasione delle festivita’ pasquali, il laboratorio sara’ comunque aperto dalle 20:30 alle 23:00 per il corso di aeromodellismo per chi volesse venire a esercitarsi con Arduino.

Lunedi’ 21 Marzo

Calendario: Giovedi’ 24 Marzo si terra’ normalmente lezione, Lunedi’ 28 non si terra’ lezione in occasione delle festivita’ pasquali.

Esercizi da fare a casa

Si suggerisce di esercitarsi a creare degli sketch che in base all’input di un sensore analogico (photoresistenza o un potenziometro) cambino i parametri di un LED (luminosita’, tipo di luccichio) utilizzando gli operatori comparativi e i cicli iterativi. Es:

  1. fade up and fade down
  2. fade con potenziometro che cambia velocita
  3. fade con potenziometro che imposta valore massimo / minimo.
  4. Utilizzo di constrain()
  5. Serial Debug per tutti i valori

Giovedi’ 17 Marzo

Giovedi’ 10 Marzo

Elettronica

Circuito elettrico: sempre tre elementi (fonte di energia, carico, circuito), flusso di elettroni, carico, circuito aperto e chiuso, corto circuito.

  • elettricità’ : spostamento di carica per unita’ di tempo. ampere / coulomb. Metafora anelli di una catena.
  • voltaggio: differenza di potenziale, metafora con pressione acqua. 1 joule / ampere
  • Resistenze: mix chimico tra conduttore e semiconduttore. Limitano il passaggio di corrente.

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:

Lunedi’ 7 Marzo: terza lezione

In questa lezione abbiamo ripreso parte degli argomenti visti nelle due lezioni precedenti approfondendo le funzioni (argomenti, primi cenni allo scope) e introducendo i cicli iterativi in fondamenti di programmazione.

Linux

Ripasso su l’uso dei comandi da console CLI, sono stati accennati:

  • pagine man dei comandi, es: man ls

  • Uso di un pager per le pagine man: per uscire da man si usa il tasto [q]
  • sintassi di un comando: comando –flag [oggetti_opzionali]

  • comando history per vedere l’elenco dei comandi utilizzati recentemente.

  • primi accenni a redirezione dell’output di un comando ( > ) e pipe ( | ).

  • ls -l: ownship dei file

  • aggiornamento di un archivio *.git: sudo git pull

Si ricorda che l’uso della riga comando non e’ argomento essenziale del corso di Arduino quindi se questi argomenti risultano particolarmente alieni a chi e’ abituato a lavorare esclusivamente su ambiente Windows: niente panico, non dovete utilizzare pipe e pagers per programmare Arduino!

Nota: il docente Andrea puo’ eseguire comandi e quindi aggiornare gli esercizi git su tutti i computer del laboratorio contemporaneamente: se avete dei problemi ad aggiornare il vostro PC in aula segnalatelo e Andrea fara’ un giro di aggiornamento.

Gli esercizi di Arduino sono comunque visionabili anche a casa via web all’indirizzo: http://lab.piffa.net/sketchbook_andrea/ .

Programmazione

Funzioni:

Cicli iterativi: automatizzare sequenze di istruzioni ripetitive.

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).

Risorse

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

Giovedi’ 3 Marzo: seconda lezione

Linux Desktop

  • Introduzione all’Ambiente desktop KDE: https://www.kde.org/workspaces/plasmadesktop/
  • [ALT][F3] : impostazioni avanzate delle finestre: rimozione bordi, schermo intero, shortcut per finestre e applicazioni.
  • Spostare e ridimensionare le finestre con [ALT] + mouse
  • Desktop virtuali: [CTR][F2] , [CTR][F1]. Abilitare nel caso i desktop virtuali da “Virtual Desktops”.

CLI

I primi comandi: sintassi

  • STDout, STDin, STDerr
  • ls, cd, pwd, whoami, sudo, git

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

Programmazione

Primi sketch:

Argomenti:

  • Esercizio Blink, 4 parti: commenti - dichiarazione variabili - funzione setup() - funzione loop.
  • istruzioni e sequenze di istruzioni.
  • Singola Istruzione termina con punto e virgola.
  • Partire dalla funzione digitalWrite(), modificare i tempi e ripetere: sequenze di istruzioni.
  • Variabili: impostare i tempi di delay() con una variabile.
  • fare una funzione per rapido() - lento(), guardare loop() e setup()

Kit Arduino

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

Lunedi’ 29 Febbraio: prima lezione

Linux

  • Free software e Open Hardware: condivisione del lavoro.
  • Portabilita’, multiarch, flessibilita’

Architettura di un elaboratore

  • Schema CPU - RAM - HD STORAGE
  • CPU - BIT (word) e frequenza, features: multitasking
  • INPUT e OUTPUT = PC: tastiera monitor + rete, USB BT...
  • MCU: tutto integrato nel IC
  • INPUT OUTPUT: 20 {22) pin , 14 input / output, 6 analog input 10bit resolution 1024 values , 6 PWM output (8bit resolution).
  • Communication: serial in / outi (UART TTL), I2C + SPI (sarebbero i 2 pin MISO MOSI in piu’ per arrivare a 22).
  • http://arduino.cc/en/Main/arduinoBoardUno
  • Differenze con un PC: interazione con perifieriche (USB), multitasking, prestazioni per flussi di dati (da 8 a 32bit).
  • Software: firmware o sistema operativo. Arduino non ha un OS ma viene caricato direttamente un firmware con al massimo un bootloader allegato, RPi e’ un sistema linux completo, altri embedded possono usare soluzioni intermedie come FreeRTOS per MCU come ESP8266.
  • Comparativa tra vari arduino: http://arduino.cc/en/Products.Compare , http://www.makershed.com/pages/microcontroller-comparison

HardWare

  • Arduino: architettura di base e le varie schede della famiglia.
  • ATmega328 MCU, IC montato DIP / DLP (dual in line package) e non SMD (surface mounted), sostituibile. 20 / 22 pin utilizzabili: 14 digital in/out (6PWM), 6 analog input, USB, 2 ICSP, reset button.
  • Power: via USB, via l’entrata regolata (7-12v) con protezione di reverse polarity, i connettori POWER Vin non sono protetti.
  • 4 LED: power, RX, TX, LED (pin 13 con resistenza).

Software

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).

Arduino IDE

Primo approccio all’IDE Arduino.

  • Compilazione - sorgente (passaggi vari: precompilatore, linker) ->
  • codice oggetto specifico per CPU / Architettura. Upload (burn)
  • codice su flash di arduino via USB. Poi USB come seriale (non possono lavorare assieme).

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