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-04-07 con: http://docutils.sourceforge.net/rst.html

Venerdi’ 21 Ottobre: 10 lezione

Hardware

Introduzione alla scheda MSP432 http://wiki.piffa.net/index.php/MSP432 , dimostrazione della gestione di led multipli in multitasking tramite un RTOS: http://energia.nu/guide/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.

Programmazione

Array e cicli iterativi, Riprendere lo sketch dei cicli for per introdurre gli array

Sketches utilizzati:

Reference avanzata:

Mercoledi’ 19 Ottobre: nona lezione

Arduino

Introduzione ad Arduino Mini Pro: http://wiki.piffa.net/index.php/Arduino_Mini_Pro , FTDI .

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.

Venerdi’ 7 Ottobre: sesta lezione

Mercoledi’ 5 Ottobre: quinta lezione

Mercoledi’ 28 Settembre: terza lezione

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

Elettronica

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

  • elettricita’ : 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:

Realizzazione del primo circuito elettrico su breadboard alimentato da Arduino:

Venerdi’ 23 Settembre: 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

Mercoledi’ 21 Settembre: prima lezione

Linux e Arduino

Vedi slides: http://lab.piffa.net/slides/arduino_linux.pdf

  • Interaction design a physical computing: Arduino come piattaforma semplificata
  • Free software e Open Hardware: ambienti aperti, condivisione, redistribuzione, concorrenza.
  • Presentazione delle schede, framework, ambiente Arduino
  • 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

I testi consigliati per il corso li trovate su: http://lab.piffa.net/testi.html