]> git.piffa.net Git - arduino/blob - lezioni/lezioni
945bb64e4c2147c21fddd24c063e60f5bde21bf3
[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.
13 Fare una funzione per rapido - lento, guardare loop() e setup() 
14 impostare una nuova funzione per tempi e led: argomenti.
15 Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h
16 Mettere funzioni in un file separato, senza estensione.
17
18
19 Informatica: automatismi per operazioni ripetitive.
20 Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell'iteratore, scope, introdurre ciclo for (esercizio blinks/blink_4)
21 Descrivere variabili e costanti, l'operatore const.
22
23 Introdurre un LED e un resistore: circuiti elettrici, introduzione.
24 Breadboard, jumpers, colore per cavi.
25 Legge di Ohm, datasheet per LED.
26
27
28 ...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali.
29
30  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. 
31 - Sketch seriale hello world
32 - fare il circuito con un bottone momentaneo button_1
33 - sketch con debug seriale button_2_serial
34 seriali per fare il debuggin e leggere i valori del bottone.
35 Seriali: funzioni base: instanziare con Serial.Begin(), print - println e flush() del buffer.
36
37  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.
38 Differenza tra while e for: bottone con ciclo while.
39
40 Approfondimento: leggere le resistenze e i LED.
41 - Fare almeno un blocco degli operatori: operazioni e comparativi.
42
43 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.
44
45 - Informatica: sistema binario: 10bit di risoluzione
46 Fare un esercizio blink con pot che modifica pausa: spiegare uso di magic numbers.
47
48 - http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
49 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.
50
51 Fare pitch follower con calibrature.
52 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.
53
54 Elettronica: resistivity p (Greek: rho) Resistenza * (Area / lunghezza)  - Conductivity sigma 1/p
55
56 Tipi di dati: bit e int e long, signed and unsigned, long
57 - http://www.ladyada.net/learn/arduino/lesson4.html
58 Input analogico per impostare il PWM.
59
60 - Introdurre gli operatori comparativi (>,<,=!)  e booleani (&&, ||, !): 
61 Stato di un bottone poi  Debouncing: grafico http://www.ladyada.net/learn/arduino/lesson5.html
62
63 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
64
65 State machine
66 ==============
67
68 Pensarlo per accendere due led con millis )multitasking)
69 - https://learn.adafruit.com/downloads/pdf/multi-tasking-the-arduino-part-1.pdf
70 e per i bottoni.
71
72 Ratio
73 =====
74 Visti input e output analogici: ora alternare la presentazione di un sesore (input) e un attuatore.
75
76 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.
77
78 Piezo: meldie varie, sirene. Pitch follower, melodia con 3 tasti in pullup, melodia pre impostata con include di libreria.
79
80 LED RGB: ciclo per ogni colore, impostazione via seriale.
81 PWM con LED RGB.
82
83 Programmazione: vedere come stiamo con operatori e data types.
84 Direttive per preprocesor: # define - # if defined - per DEBUG
85 Usare seriale per aritmetica.
86
87 Input: bouncing e state: elettronica digitale. (serie di esercizi in "basic")
88 http://www.ikalogic.com/de-bouncing-circuits/
89 (guardare arduino for dummies)
90 Analog input con un potenziometro.
91 Usare map() per ricalibrare una lettura.
92 Usare map() e poi una diffusuione *4 oer mappare un range 1024 -> 256 su PWM.
93
94
95 Seriali: scrivere e debugging. Interpretae input / caratteri da seriale per accendere un LED.
96
97 Motore a spazzole, transistor e diodo.
98 - Accendere e spegnere un motore, 
99 - usare un ciclo FOR per PWM,
100 - potenziometro per variare PWM (con debuggin seriale)
101 - impostare valore minimo per motore (da usare con analoglWrite)
102
103
104 Servo: descrizione / caratteristiche base (vedi guida)
105 Fare i due sketch di esempio: ciclio FOR e Knob.
106 - C: caricare librerie
107
108
109 Piezo
110 Descrizione del funzionamento, melodie di esempio (mario tunes!).
111 Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
112 Programmazione: array, strutture dati.
113 Pitch follower - sensore luminose connesso a piezo. Ricordarsi di calibrare il sensore con map().
114 Usare un piezo come input - knock (descrivere come le dimensioni influenzano la sensibilita', esistono piezo costruiti espressamente per input - flex). Occhio alla sensibilita'.
115
116
117                                                        
118
119 Ottimizzazione: multitasking con millis() al posto di delay(),
120 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().
121
122
123 INPUT_PULLUP: bottone senza resistenza come input.
124
125 --- Shift register: binario - decimale -esadecimale. Circuiti semi-permaneti su mini breadboard, piu' listati per stesso circuito. 
126
127 Avanzati
128 ===========
129
130 Interrupts: http://gammon.com.au/interrupts
131 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.
132
133 Timers: possono essere usati per PWM con periodo diverso da 500hz, possono avere una risoluzione di 1024.
134
135 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.
136 Usare un digitalWrite() per fornire 5v a un sensore (es fotocellula) solo quando andiamo a fare una lettura con alanogRead(), poi tornare a spegnerlo.
137
138 Memoria: controllare l'utilizzo della memoria con la libreria MemoryFree.
139 Usare constanti e bytes, rimuovere chiamate a Serial.println() (500bytes) con #IF DEBUG . Programmare arduino senza il bootloader salva un paio di KB.
140
141