Lezioni del Lunedi’

Author:Andrea Manni
Copyright:GFDL
Version:0.1

Traccia degli argomenti del corso base su Arduino Make++ tenuto al Lunedi’ (gli studenti del Giovedi’ guardino l’altro documento!) nel Laboratorio NetGarage 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 2015-04-22 con: http://docutils.sourceforge.net/rst.html

Lunedi’ 20/4

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. - http://www.arduino.cc/en/Reference/Include - http://www.arduino.cc/en/Hacking/BuildProcess - http://provideyourown.com/2011/advanced-arduino-including-multiple-libraries/

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:

Lunedi’ 13/4

Cicli For e Array

Riprendere lo sketch dei cicli for per introdurre gli array

Sketches utilizzati:

Photoresistenza

  • Sketch basic/analog_input/photo_[3,4,5].
  • Resistenza in serie
  • Calibrazione con map()
  • Constrain() per impostare un range
  • Calibrazione automatica

Lunedi’ 30/3

Stato di un bottone

Primo approccio alle State Machine tramite la realizzazione di un circuito che rileva la pressione di un bottone momentaneo per modificare lo stato di un LED.

Sketch di esempio:

Gli schemi per la breadboard sono sostanzialmente simili a quelli di un bottone in pull down e un LED:

For Loop

Abbiamo guardato un circuito che si presta ad alcune varianti di sketch per l’uso di cicli iterativi for loop:

Lo schema usato in laboratorio:

Si noti che in questo schema viene usato una sola resistenza per 8 LED (per una questione di praticita’ in laboratorio) quindi questo circuito si presta all’accensione di solo uno/due LED alla volta, se volete poter accendere tutti i LED contemporaneamente dovete utilizzare uno schema con una resistenza da ~320ohms per ogni LED simile a quello proposto su questo tutorial:

Vi lascio qualche link per guide sulla struttura dei cicli FOR, per una trattazione esaustiva potete guardare: Beginning C for Arduino: Learn C Programming for the Arduino, oppure partire da [i]Arduino For Dummies[/i] per un primo approccio piu’ semplificato.

Lunedi’ 23/3

Tipi di dati: bit e int e long, signed and unsigned, long - http://www.ladyada.net/learn/arduino/lesson4.html

Operatori e logica

Operatori binari, comparativi, logica boleana: http://lab.piffa.net/sketchbook_andrea/programming/operators/

Trasformazione da un input analogico in un output analogico: http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_4_analog_input/pwm_4_analog_input.ino

BTW: oggi ho lanciato gli ordini per i kit Arduino per gli studenti, sono in preparazione per la spedizione.

Lunedi’ 16/3

Elettronica

Input analogico: usare un potenziometro, resistivita’ e resistenza, proporzionale alla lunghezza, resistenze in serie, usare un potenziometro per varaire pausa dello sketch blink: a intervalli bassi tende al PWM. Cenni ai trimmer. Uso della seriale per debug.

PWM

PWM, fatto con intervalli di un millisecondo, cenno a delayMicroseconds(), introdurre i PWM automatici: base con un byte per luminosita’: cicli iterativi. PWM gestito da Arduino con AnalogWrite(): http://arduino.cc/en/Tutorial/PWM Dimostrazione con analizzatore logico di un circuito con PWM

Anteprima dello sketch: http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_1_while_byte/ da rivedere dopo aver fatto gli operatori ( http://lab.piffa.net/sketchbook_andrea/programming/operators/ ) e i tipi di dati (byte in particolare).

Per chi fosse curioso la dimostrazione fatta dalla mia postazione con l’analizzatore logico per “vedere” il PWM e’ basata su questo sketch: http://lab.piffa.net/sketchbook_andrea/advanced_projects/led_PWM_logical_analyzer_demo/

Lunedi’ 9/3

Per gli interruttori e le resistenze in PULL DOWN / UP potete dare un’occhiata anche agli schemi sul tutorial all’URL: http://www.ladyada.net/learn/arduino/lesson5.html

Gli sketch che abbiamo utilizzato sono: - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_1/button_1.ino - http://lab.piffa.net/sketchbook_andrea/basic/buttons/button_2_serial_debug/button_2_serial_debug.ino

Gli schemi per la breadboard: - http://lab.piffa.net/schemi/button_1_bb.png - http://lab.piffa.net/schemi/button_1_schem.png

Lunedi’ 2/3

Programmazione:

  • Informatica: automatismi per operazioni ripetitive.
  • Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell’iteratore, scope dell’iteratore
  • Esercizio: http://lab.piffa.net/sketchbook_andrea/ ... _while.ino

Funzioni: argomenti, utilizzare un parametro per modificare l’esecuzione di una funzione: impostare i numeri di ripetizione di un ciclo while.

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.

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

Introduzione alle breadboard:

Esercizio con Arduino: collegare un secondo LED tramite breadboard:

Vi ricordo che se non avete a disposizione una scheda Arduino e i componenti elettronici necessari potete provare ad usare il simulatore on-line: viewtopic.php?f=3&t=7

Lunedi’ 23/2

Linux Desktop

  • Menu start
  • krunner = operazioni - percorsi files - single click
  • Muovere finestre [ALT] + LEft - resize con Right
  • Snap: trscinare finestre ai bordi

Arduino IDE

  • 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

  • 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()

Lunedi’ 16/2

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

Linux

  • Free software, RPi e altri usano linux, embedded usa linux.
  • Portabilita’, multiarch, flessibilita’
  • Distribuzioni linux, integrazione sistema operativo.

HardWare

  • Arduino, Breadboard e componenti.
  • ATmega32 MCU, IC montato DIP / DLP (dual in line package) e non SMD (surface mounted), sostituibile. 20 / 22 pin utilizzabili: 14 digital in/outi (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 (13 con resistenza).

Architettura di un elaboratore

  • 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: interazione con perifieriche (USB), multitasking.
  • Software: sistema operativo. RPi e’ un sistema linux.
  • Comparativa tra vari arduino: http://arduino.cc/en/Products.Compare

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