]> git.piffa.net Git - arduino/blobdiff - lezioni/lezioni
cli intro
[arduino] / lezioni / lezioni
index 6a47dc756cde69ec2477dbc7145f42ecc21e49c3..0a809733a7c295a2f0ff0de477b6cc141082800a 100644 (file)
@@ -9,23 +9,30 @@ Esercizio Blink, 4 parti: commenti dichiarazioni setup loop.
           istruzioni e sequenze di istruzioni.
 Istruzione termina con puntoe virgola.
 Partire dalla funzione digitalWrite, modificare i tempi e ripetere: sequenze di istruzioni. 
-Variabili: impostare i tempi con una variabile.
+Variabili: impostare i tempi con una variabile (falsa: e' una costante!)
 Fare una funzione per rapido - lento, guardare loop() e setup() 
+impostare una nuova funzione per tempi e led: argomenti.
+introdurre const.
 Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h
 Mettere funzioni in un file separato, senza estensione.
 
 
+Blink S.O.S: operazioni ripetitive.
+Fare un ciclo while per far brillare un LED 10 volte: 
+Ciclo For.
 Informatica: automatismi per operazioni ripetitive.
 Introdurre un ciclo while() con un iteratore, ragionare sulla gestione dell'iteratore, scope, introdurre ciclo for (esercizio blinks/blink_4)
+Descrivere variabili e costanti, l'operatore const.
+Ora spiegare veramente la differenza tra costante e variabile, 
 
 Introdurre un LED e un resistore: circuiti elettrici, introduzione.
 Breadboard, jumpers, colore per cavi.
+Legge di Ohm, datasheet per LED.
 
-impostare una nuova funzione per tempi e led: argomenti.
 
-...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali (e poi iterativi).
+...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali.
 
- 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. 
+ 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
 - Sketch seriale hello world
 - fare il circuito con un bottone momentaneo button_1
 - sketch con debug seriale button_2_serial
@@ -33,18 +40,62 @@ seriali per fare il debuggin e leggere i valori del bottone.
 Seriali: funzioni base: instanziare con Serial.Begin(), print - println e flush() del buffer.
 
  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.
+Differenza tra while e for: bottone con ciclo while.
+
+Finito fondamenti di programmazione
+
+Analogico
+-------------
+
+
+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.
+
+- Operatori binari base
+
+Tipi di dati: bit e int e long, signed and unsigned, long
+- http://www.ladyada.net/learn/arduino/lesson4.html
+- Informatica: sistema binario: 8 / 10bit di risoluzione
+- Byte e INT e LONG
+
+def profondita(bits):
+    for i in range(bits +1):
+        print("2 elevato a ", i, "bits = ", 2**i, "valori")
 
-Approfondimento: leggere le resistenze e i LED.
+def binario(i):
+       for i in range(i):
+               print(i, "\t", bin(i)[2:] )
 
-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.
+Approfondimento: leggere le resistenze.
+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.
 
-- http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
-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.
+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.
+- basic/analog_input/analogInput_1/ -> precede l'introduzione del PWM con intervalli brevi
+esercizio blink con pot che modifica pausa: spiegare uso di magic numbers.
+- http://lab.piffa.net/sketchbook_andrea/basic/analog_input/analogInput_2_serial/
 
-Input analogico per impostare il PWM.
+PWM: Traduzione tra potenziometro e PWM: /basic/pwm/pwm_4_analog_input/
+PWM: stati. Fare esempi con oscilloscopio / Logic Analizer. 
+    - /basic/pwm/pwm_0_stati/
+    https://www.arduino.cc/en/Tutorial/PWM
+PWM: tutti gli esercizi con cicli while for per aumentare luminosita':
+    - basic/pwm/pwm_1_while_byte/
+    - http://lab.piffa.net/sketchbook_andrea/basic/pwm/pwm_2_for_loop/pwm_2_for_loop.ino
+    - pwm/pwm_3_fade_reverser/ richiede operatore OR ||
+
+Fare pitch follower con calibrature.
+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.
 
 - Introdurre gli operatori comparativi (>,<,=!)  e booleani (&&, ||, !): 
-Stato di un bottone poi  Debouncing: grafico http://www.ladyada.net/learn/arduino/lesson5.html
+Stato di un bottone: esercizi vari e operatori AND.
+
+- Array: knight rider - cicli loop
+
+- Piezo e bottoni in pull-up per keyboard
+Descrizione del funzionamento, melodie di esempio (mario tunes!).
+Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
+
+
+Debouncing con millis: grafico http://www.ladyada.net/learn/arduino/lesson5.html
 
 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
 
@@ -70,12 +121,6 @@ Programmazione: vedere come stiamo con operatori e data types.
 Direttive per preprocesor: # define - # if defined - per DEBUG
 Usare seriale per aritmetica.
 
-Input: bouncing e state: elettronica digitale. (serie di esercizi in "basic")
-http://www.ikalogic.com/de-bouncing-circuits/
-(guardare arduino for dummies)
-Analog input con un potenziometro.
-Usare map() per ricalibrare una lettura.
-Usare map() e poi una diffusuione *4 oer mappare un range 1024 -> 256 su PWM.
 
 
 Seriali: scrivere e debugging. Interpretae input / caratteri da seriale per accendere un LED.
@@ -124,4 +169,4 @@ Usare un digitalWrite() per fornire 5v a un sensore (es fotocellula) solo quando
 Memoria: controllare l'utilizzo della memoria con la libreria MemoryFree.
 Usare constanti e bytes, rimuovere chiamate a Serial.println() (500bytes) con #IF DEBUG . Programmare arduino senza il bootloader salva un paio di KB.
 
-
+Arduino in potenza, slides: http://www.maffucci.it/2015/04/14/on-line-le-slide-alfabeto-di-arduino-lezione-5/