Arduino Base: Lezioni

Author:Andrea Manni
Copyright:GFDL
Version:1.0

Traccia degli argomenti del corso base su Arduino Make++ tenuto in Ottobre 2015 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

Lunedi’ 28 Dicembre

LED RGB

Info e guide:

Eercizi:

Terminato il corso ricordatevi di iscrivervi al Forum di discussione:

Con l’anno nuovo ci si potra’ organizzare per ritrovarsi nel laboratorio per esercitarsi e condividere progetti.

I programmi dei prossimi corsi saranno pubblicati su http://lab.piffa.net/

Lunedi’ 21 Dicembre

Informatica

Tipi di dati (data types): byte - int - long , signed e unsigned. Link su: Introduction to types (part 1)

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/

Giovedi’ 16 dicembre

Arduino

Includere un file:

Musica

Utilizzo della funzione tone() per effetti sonori e musica. Trasposizione da notazione musicale a codice eseguibile da Arduino. Creare uno strumento musicale con una scala pentatonica, utilizzare delle melodie sequenziali.

Lunedi’ 14 dicembre

Elettronica

Stati di un bottone: creare un circuito in cui viene tracciato lo stato di un bottone (sensore ) e in base all’input dell’utente si modifica lo stato di un attuatore (output, un LED).

Circuiti analizzati: - http://lab.piffa.net/schemi/circuito_led_button_bb.png - http://lab.piffa.net/schemi/button_1_bb.png

Sketches: - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_3/ - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_4_state/ - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_state_4_state_and_condition/

Links: - https://www.arduino.cc/en/Tutorial/StateChangeDetection

Debounce: introduzione al problema generale, soluzione semplice tramite un delay. Non e’ stato ancora visto il debounce tramite la funzione millis().

Piezo

Piezoelettricita’: concetti di base e funzionamento. Utilozzo di un piezo in output analogico (PWM) per seguire l’input analogico di una fotoresistenza.

Links: - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/photo_7_tonePitchFollower/photo_7_tonePitchFollower.ino - http://www.dummies.com/how-to/content/how-to-make-an-instrument-with-the-arduino.html

Giovedi’ 10 dicembre

input analogico e pwm: mappatura di un input analogico su un output analogico:

photoresistenza

sketches:

Nota

se volete vedere i vari elenchi di materiali presi in considerazioni per i corsi avanzati potete consultare gli elenchi:

Giovedi’ 3 Dicembre

Informatica

Introduzione alla riga di comando: standard input,output, comandi di base (whoami, hostname, pwd, ls, cd). Utenti di sistema e superutente.

Guide:

Git: introduzione, clonare e aggiornare un archivio.

Elettronica

Ripasso su legge di Ohm, potenza e consumo di un circuito e dei singoli componenti. Arduino: specifiche tecniche relative alla gestione energetica: http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations .

Bottone momentaneo, DPST poli e throw, sensore libero come antenna, pull down.

Per gli interruttori e le resistenze in PULL DOWN / UP potete dare un’occhiata anche agli schemi sul tutorial all’URL:

Lunedi’ 30 Novembre

Arduino: debug seriale

Utilizzare la seriale per debug: funzioni print, println e flush . Bound Rate: BPS, velocita’ di trasferimento dati.

Sketch di esempio utilizzato: http://lab.piffa.net/sketchbook_andrea/basic/serial_debug/serial_hello_world/serial_hello_world.ino

Links:

Cicli For

Cicli for e operatore ternario.

Esercizio: - http://lab.piffa.net/sketchbook_andrea/basic/blinks/blink_4_1_ciclo_for/

Programmazione

  • Variabili e costanti, utilizzo della memoria.
  • DEFINE e const: utilizzo delle costanti

Elettronia: legge di Ohm

Legge di Ohm, calcolare resistenze per LED in un circuito.

Giovedi’ 26 Novembre: seconda lezione

Il primo esercizio base, Blink, e’ ampiamente trattato su una moltitudine di siti internet e manuali, vi lascio in proposito un paio di links:

Programmazione

  • Esercizio Blink, 4 parti: commenti - dichiarazione variabili - funzione setup - funzione loop.
  • istruzioni e sequenze di istruzioni.
  • Singola Istruzione termina con puntoe 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()
  • funzioni con argomenti: passare valori alle funzioni

Se volete rivedere i listati dello sketch Blink visti in aula:

Elettronica

Circuito elettrico: sempre tre elementi (fonte di energia, carico, circuito), elettroni e carica elettrica, 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.
  • LED: catodo / anodo, diodo

Lunedi’ 23 Novembre: prima lezione

Linux

  • Free software e Open Hardware: condivisione del lavoro.
  • Portabilita’, multiarch, flessibilita’
  • Distribuzioni linux, integrazione sistema operativo.

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

Programmazione