]> git.piffa.net Git - arduino/blob - lezioni/arduino_base_dettaglio.rst
rotonda
[arduino] / lezioni / arduino_base_dettaglio.rst
1 ===================================
2 Arduino Base: dettaglio
3 ===================================
4
5 Progettazione di dettaglio.
6
7
8   :Author: Andrea Manni
9   :Copyright: GFDL
10   :Version: 0.1
11
12
13 Traccia degli argomenti del corso avanzato su Arduino Make++ 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
14
15 La durata del corso e' 20 ore in 10 incontri, lun. e giov. dalle 18 alle 20.
16
17 Docente Andrea Manni
18 Inizio lunedì 23 novembre
19 Quota di iscrizione € 50 (da versare il primo incontro)
20
21
22
23 .. contents:: Indice degli argomenti
24    .. |date| date::
25
26 Generato il |date| con: http://docutils.sourceforge.net/rst.html
27
28
29 Argomenti
30 ==========
31
32 Introduzione...
33 Architettura elaboratore: processore - memoria - storaggio - input -autput. Bus di comunicazione: seriali. Cenni a USB iclient / HOST. 
34 Software, Sistemi operativi, compilazione (e interpreti), architetture.
35 Classi di elaboratori. MCU e CPU. 
36
37 Esercizio Blink, 4 parti: commenti dichiarazioni setup loop. 
38           istruzioni e sequenze di istruzioni.
39 Istruzione termina con puntoe virgola.
40 Partire dalla funzione digitalWrite, modificare i tempi e ripetere: sequenze di istruzioni. 
41 Variabili: impostare i tempi con una variabile.
42 Fare una funzione per rapido - lento, guardare loop() e setup() 
43 Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h
44 Mettere funzioni in un file separato, senza estensione.
45
46
47 Informatica: automatismi per operazioni ripetitive.
48 Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell'iteratore, scope, introdurre ciclo for (esercizio blinks/blink_4)
49
50 Introdurre un LED e un resistore: circuiti elettrici, introduzione.
51 Breadboard, jumpers, colore per cavi.
52
53 impostare una nuova funzione per tempi e led: argomenti.
54
55 ...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali (e poi iterativi).
56
57  Input base per accendere un LED (senza bottone, col jumper), input libero: se non e' collegato a +5 o a ground e' come una antenna. 
58 - Sketch seriale hello world
59 - fare il circuito con un bottone momentaneo button_1
60 - sketch con debug seriale button_2_serial
61 seriali per fare il debuggin e leggere i valori del bottone.
62 Seriali: funzioni base: instanziare con Serial.Begin(), print - println e flush() del buffer.
63
64  Usare un bottone e una resistenza: pull up e pull down, ciclo IF, invertire il circuito del bottone: confronto con cambio software per introdurre elettronica digitale.
65
66 Approfondimento: leggere le resistenze e i LED.
67
68 Input analogico: usare un potenziometro, resistivita' proporzionale alla lunghezza, potenziometro per varaire pausa dello sketch blink: a intervalli bassi tende al PWM. Cenni ai trimmer.
69
70 - http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
71 PWM, fatto con intervalli di un millisecondo, cenno a delayMicroseconds(), introdurre i PWM automatici: base con un byte per luminosita': cicli iterativi. Partire da while, variabile contatore e iteratore, e poi fori ternario.
72
73 Input analogico per impostare il PWM.
74
75 - Introdurre gli operatori comparativi (>,<,=!)  e booleani (&&, ||, !): 
76 Stato di un bottone poi  Debouncing: grafico http://www.ladyada.net/learn/arduino/lesson5.html
77
78 Eventuale: fare il circuito Knight rider con 6 led per pratica con for loop, magai con un solo resistor. http://arduino.cc/en/Tutorial/ForLoop
79
80 State machine
81 ==============
82
83 Pensarlo per accendere due led con millis )multitasking)
84 - https://learn.adafruit.com/downloads/pdf/multi-tasking-the-arduino-part-1.pdf
85 e per i bottoni.
86
87 Ratio
88 =====
89 Visti input e output analogici: ora alternare la presentazione di un sesore (input) e un attuatore.
90
91 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.
92
93 Piezo: meldie varie, sirene. Pitch follower, melodia con 3 tasti in pullup, melodia pre impostata con include di libreria.
94
95 LED RGB: ciclo per ogni colore, impostazione via seriale.
96 PWM con LED RGB.
97
98 Programmazione: vedere come stiamo con operatori e data types.
99 Direttive per preprocesor: # define - # if defined - per DEBUG
100 Usare seriale per aritmetica.
101
102 Input: bouncing e state: elettronica digitale. (serie di esercizi in "basic")
103 http://www.ikalogic.com/de-bouncing-circuits/
104 (guardare arduino for dummies)
105 Analog input con un potenziometro.
106 Usare map() per ricalibrare una lettura.
107 Usare map() e poi una diffusuione \*4 oer mappare un range 1024 -> 256 su PWM.
108
109
110 Seriali: scrivere e debugging. Interpretae input / caratteri da seriale per accendere un LED.
111
112 Motore a spazzole, transistor e diodo.
113 - Accendere e spegnere un motore, 
114 - usare un ciclo FOR per PWM,
115 - potenziometro per variare PWM (con debuggin seriale)
116 - impostare valore minimo per motore (da usare con analoglWrite)
117
118
119 Servo: descrizione / caratteristiche base (vedi guida)
120 Fare i due sketch di esempio: ciclio FOR e Knob.
121 - C: caricare librerie
122
123
124 Piezo
125 Descrizione del funzionamento, melodie di esempio (mario tunes!).
126 Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
127 Programmazione: array, strutture dati.
128 Pitch follower - sensore luminose connesso a piezo. Ricordarsi di calibrare il sensore con map().
129 Usare un piezo come input - knock (descrivere come le dimensioni influenzano la sensibilita', esistono piezo costruiti espressamente per input - flex). Occhio alla sensibilita'.
130
131
132                                                        
133
134 Ottimizzazione: multitasking con millis() al posto di delay(),
135 Debouncing, gestione stato di un bottone, arrotondamento su media della lettura di un sensore, calibrazione di sensori. Calibrazione automatica in un range di tempo durante il setup().
136
137
138 INPUT_PULLUP: bottone senza resistenza come input.
139
140 --- Shift register: binario - decimale -esadecimale. Circuiti semi-permaneti su mini breadboard, piu' listati per stesso circuito. 
141