1   Lezioni del Giovedi’

Author:Andrea Manni
Copyright:GFDL
Version:0.1

Traccia degli argomenti del corso base su Arduino Make++ tenuto al Giovedi’ (gli studenti del Lunedi’ 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-20 con: http://docutils.sourceforge.net/rst.html

1.1   Giovedi’ 18/4

1.1.1   Photoresistenza

  • Resistenza in serie
  • Calibrazione con map()
  • Constrain() per impostare un range
  • Calibrazione automatica

Input analogico: sensore di luminosita’. Lettura valori, calibrazione manuale, calibrazione automatica, map(), constrain(), smoothing. Sketch basic/analog_input[3,4,5,6]. trasformazione input -> output analogico di un piezo: poibilita’ di percepire soglie e range non percepibili con i sensi umani. Smothing (semplificato), claibrazione automatica.

Sketches: basic/analog_input/photo_[3,4,5,6].

1.2   Giovedi’ 9/4

1.2.1   PWM

PWN con bytes per introdurre i cicli iterativi: loop(), while() e cicli for. Sketches utilizzati:

Approfondimenti su PWM:

1.3   Giovedi’ 2/4

1.3.2   State Machine

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:

1.3.3   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/

1.5   Giovedi’ 19/3

1.5.1   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.
  • LED:, diodo polarizzato, forward voltage e forward current.
  • http://www.ladyada.net/learn/arduino/lesson3.html

Concetti generali di elettronica: http://ishtar.df.unibo.it/em/elet/cover.html

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

1.5.2   Seriali

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/ ... _world.ino

1.6   Giovedi’ 12/3

Ripasso (per chi vuole) su informatica di base e sistemi operativi:

1.6.1   Arduino IDE

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

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

1.6.4   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.
  • LED: catodo / anodo, diodo

1.7   Giovedi’ 5/3

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

1.7.2   Architettura di un elaboratore

Architettura PC: Multipourpose

  • 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: BUS di dati, interazione con perifieriche (USB), multitasking.
  • Software: sistema operativo. RPi e’ un sistema linux, ARduino Yun utilizza un OS Unix che fa da ponte tra MCU e PC.
  • Comparativa tra vari arduino: http://arduino.cc/en/Products.Compare

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