]> git.piffa.net Git - arduino/blob - lezioni/lezioni
CLI GIT
[arduino] / lezioni / lezioni
1
2
3 Introduzione...
4 Architettura elaboratore: processore - memoria - storaggio - input -autput. Bus di comunicazione: seriali. Cenni a USB iclient / HOST. 
5 Software, Sistemi operativi, compilazione (e interpreti), architetture.
6 Classi di elaboratori. MCU e CPU. 
7
8 Esercizio Blink, 4 parti: commenti dichiarazioni setup loop. 
9           istruzioni e sequenze di istruzioni.
10 Istruzione termina con puntoe virgola.
11 Partire dalla funzione digitalWrite, modificare i tempi e ripetere: sequenze di istruzioni. 
12 Variabili: impostare i tempi con una variabile (falsa: e' una costante!)
13 Fare una funzione per rapido - lento, guardare loop() e setup() 
14 impostare una nuova funzione per tempi e led: argomenti.
15 introdurre const.
16 Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h
17 Mettere funzioni in un file separato, senza estensione.
18
19
20 Blink S.O.S: operazioni ripetitive.
21 Fare un ciclo while per far brillare un LED 10 volte: 
22 Ciclo For.
23 Informatica: automatismi per operazioni ripetitive.
24 Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell'iteratore, scope, introdurre ciclo for (esercizio blinks/blink_4)
25 Descrivere variabili e costanti, l'operatore const.
26 Ora spiegare veramente la differenza tra costante e variabile, 
27
28 Introdurre un LED e un resistore: circuiti elettrici, introduzione.
29 Breadboard, jumpers, colore per cavi.
30 Legge di Ohm, datasheet per LED.
31
32
33 ...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali.
34
35  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. http://lab.piffa.net/schemi/led_condizionale.png
36 - Sketch seriale hello world
37 - fare il circuito con un bottone momentaneo button_1
38 - sketch con debug seriale button_2_serial
39 seriali per fare il debuggin e leggere i valori del bottone.
40 Seriali: funzioni base: instanziare con Serial.Begin(), print - println e flush() del buffer.
41
42  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.
43 Differenza tra while e for: bottone con ciclo while.
44
45 Finito fondamenti di programmazione
46
47 Analogico
48 -------------
49
50
51 Status: ci stiamo preparando all'uso dei potenziometri per input anaogici - output analogici. Serve sapere un po' di bit/byte per BYTE / INT e ragionare sulle resistenze (conduttivita') per capire come funziona un potenziometro.
52
53 - Operatori binari base
54
55 Tipi di dati: bit e int e long, signed and unsigned, long
56 - http://www.ladyada.net/learn/arduino/lesson4.html
57 - Informatica: sistema binario: 8 / 10bit di risoluzione
58 - Byte e INT e LONG
59
60 def profondita(bits):
61     for i in range(bits +1):
62         print("2 elevato a ", i, "bits = ", 2**i, "valori")
63
64 def binario(i):
65         for i in range(i):
66                 print(i, "\t", bin(i)[2:] )
67
68 Approfondimento: leggere le resistenze.
69 Elettronica: resistivity p (Greek: rho) Resistenza * (Area / lunghezza)  - Conductivity sigma 1/p : serve per fare una resisteza da ~5k con due da 10 in parallelo.
70
71 Input analogico: usare un potenziometro, resistivita' proporzionale alla lunghezza, potenziometro per variare pausa dello sketch blink: a intervalli bassi tende al PWM. Cenni ai trimmer.
72 - basic/analog_input/analogInput_1/ -> precede l'introduzione del PWM con intervalli brevi
73 esercizio blink con pot che modifica pausa: spiegare uso di magic numbers.
74 - http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analogInput_2_serial/
75
76 PWM: Traduzione tra potenziometro e PWM: /basic/pwm/pwm_4_analog_input/
77 PWM: stati. Fare esempi con oscilloscopio / Logic Analizer. 
78     - /basic/pwm/pwm_0_stati/
79     https://www.arduino.cc/en/Tutorial/PWM
80 PWM: tutti gli esercizi con cicli while for per aumentare luminosita':
81     - basic/pwm/pwm_1_while_byte/
82     - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_2_for_loop/pwm_2_for_loop.ino
83     - pwm/pwm_3_fade_reverser/ richiede operatore OR ||
84
85 Fare pitch follower con calibrature.
86 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.
87
88 - Introdurre gli operatori comparativi (>,<,=!)  e booleani (&&, ||, !): 
89 Stato di un bottone: esercizi vari e operatori AND.
90
91 - Array: knight rider - cicli loop
92
93 - Piezo e bottoni in pull-up per keyboard
94 Descrizione del funzionamento, melodie di esempio (mario tunes!).
95 Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
96
97
98 Debouncing con millis: grafico http://www.ladyada.net/learn/arduino/lesson5.html
99
100 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
101
102 State machine
103 ==============
104
105 Pensarlo per accendere due led con millis )multitasking)
106 - https://learn.adafruit.com/downloads/pdf/multi-tasking-the-arduino-part-1.pdf
107 e per i bottoni.
108
109 Ratio
110 =====
111 Visti input e output analogici: ora alternare la presentazione di un sesore (input) e un attuatore.
112
113 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.
114
115 Piezo: meldie varie, sirene. Pitch follower, melodia con 3 tasti in pullup, melodia pre impostata con include di libreria.
116
117 LED RGB: ciclo per ogni colore, impostazione via seriale.
118 PWM con LED RGB.
119
120 Programmazione: vedere come stiamo con operatori e data types.
121 Direttive per preprocesor: # define - # if defined - per DEBUG
122 Usare seriale per aritmetica.
123
124
125
126 Seriali: scrivere e debugging. Interpretae input / caratteri da seriale per accendere un LED.
127
128 Motore a spazzole, transistor e diodo.
129 - Accendere e spegnere un motore, 
130 - usare un ciclo FOR per PWM,
131 - potenziometro per variare PWM (con debuggin seriale)
132 - impostare valore minimo per motore (da usare con analoglWrite)
133
134
135 Servo: descrizione / caratteristiche base (vedi guida)
136 Fare i due sketch di esempio: ciclio FOR e Knob.
137 - C: caricare librerie
138
139
140 Piezo
141 Descrizione del funzionamento, melodie di esempio (mario tunes!).
142 Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
143 Programmazione: array, strutture dati.
144 Pitch follower - sensore luminose connesso a piezo. Ricordarsi di calibrare il sensore con map().
145 Usare un piezo come input - knock (descrivere come le dimensioni influenzano la sensibilita', esistono piezo costruiti espressamente per input - flex). Occhio alla sensibilita'.
146
147
148                                                        
149
150 Ottimizzazione: multitasking con millis() al posto di delay(),
151 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().
152
153
154 INPUT_PULLUP: bottone senza resistenza come input.
155
156 --- Shift register: binario - decimale -esadecimale. Circuiti semi-permaneti su mini breadboard, piu' listati per stesso circuito. 
157
158 Avanzati
159 ===========
160
161 Interrupts: http://gammon.com.au/interrupts
162 Usati per l'input dell'utente, servono per intercettare eventi e non per fare cambiamenti. Uso di ``volatile`` per le variabili con IRS. Usare un timer per interrupts.
163
164 Timers: possono essere usati per PWM con periodo diverso da 500hz, possono avere una risoluzione di 1024.
165
166 Powermanagement: ridurre i consumi abbassando la frequenza operativa, spegnere parti della MCU (poco utile: 1.4ma di risparmio con tutto spento), mettere tutto in sleep mode: narcoleptic, delay() che manda in sleep in MCU.
167 Usare un digitalWrite() per fornire 5v a un sensore (es fotocellula) solo quando andiamo a fare una lettura con alanogRead(), poi tornare a spegnerlo.
168
169 Memoria: controllare l'utilizzo della memoria con la libreria MemoryFree.
170 Usare constanti e bytes, rimuovere chiamate a Serial.println() (500bytes) con #IF DEBUG . Programmare arduino senza il bootloader salva un paio di KB.
171
172 Arduino in potenza, slides: http://www.maffucci.it/2015/04/14/on-line-le-slide-alfabeto-di-arduino-lezione-5/