]> git.piffa.net Git - arduino/blobdiff - lezioni/lezioni
ele
[arduino] / lezioni / lezioni
index 99fefe743c8a8dd64e7b41b44082fd019f728b39..f10f5f221f453254a11f2ec5e1e2b9227a5ff234 100644 (file)
 
-HW caratteristico:
-- piezo per melodie: http://www.banggood.com/10Pcs-5V-Electromagnetic-Active-Buzzer-Continuous-Beep-Continuously-p-943524.html
-    - http://www.arduino.cc/en/Tutorial/PlayMelody
 
+Introduzione...
+Architettura elaboratore: processore - memoria - storaggio - input -autput. Bus di comunicazione: seriali. Cenni a USB iclient / HOST. 
+Software, Sistemi operativi, compilazione (e interpreti), architetture.
+Classi di elaboratori. MCU e CPU. 
 
-- illuminare vari led con un potenziometro / trimmercontrollo 
+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 (falsa: e' una costante!)
+Fare una funzione per rapido - lento, guardare loop() e setup() 
+impostare una nuova funzione per tempi e led: argomenti.
+Ora spiegare veramente la differenza tra costante e variabile, 
+introdurre const.
+Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h
+Mettere funzioni in un file separato, senza estensione.
 
 
-- register shifter: http://www.banggood.com/25Pcs-SN74HC595N-74HC595-74HC595N-HC595-DIP-16-8-Bit-Shift-Register-IC-p-917428.html
- - http://arduino.cc/en/tutorial/ShiftOut
+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.
 
- -
-Read Serial with linux:
-https://wiki.archlinux.org/index.php/arduino#Accessing_serial
-Note: As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins.
+Introdurre un LED e un resistore: circuiti elettrici, introduzione.
+Breadboard, jumpers, colore per cavi.
+Legge di Ohm, datasheet per LED.
 
-stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
 
+...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali.
 
-- Blog in italiano: http://arduinoprincipiante.blogspot.it
+ 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. 
+- Sketch seriale hello world
+- fare il circuito con un bottone momentaneo button_1
+- sketch con debug seriale button_2_serial
+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.
 
-Pullup / down resistors: http://playground.arduino.cc/CommonTopics/PullUpDownResistor
-- http://www.microcontroller.it/Tutorials/Elettronica/pullup.htm
-- Vcc = collector = positive
-  Vss = source = negative
- MEglio quella dell'altro sito
+Approfondimento: leggere le resistenze e i LED.
+- Fare almeno un blocco degli operatori: operazioni e comparativi.
 
+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.
 
-- http://tronixstuff.com/tutorials/
-- http://www.baeyens.it/eclipse/stable-linux.html
+- Informatica: sistema binario: 10bit di risoluzione
+Fare un esercizio blink con pot che modifica pausa: spiegare uso di magic numbers.
 
+- 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.
 
-- i2c SPI http://www.bitwizard.nl/wiki/index.php/SPI_versus_I2C_protocols
+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.
+
+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: 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 <> ""
+
+Tipi di dati: bit e int e long, signed and unsigned, long
+- http://www.ladyada.net/learn/arduino/lesson4.html
+Input analogico per impostare il PWM.
+
+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
+
+State machine
+==============
+
+Pensarlo per accendere due led con millis )multitasking)
+- https://learn.adafruit.com/downloads/pdf/multi-tasking-the-arduino-part-1.pdf
+e per i bottoni.
+
+Ratio
+=====
+Visti input e output analogici: ora alternare la presentazione di un sesore (input) e un attuatore.
+
+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.
+
+Piezo: meldie varie, sirene. Pitch follower, melodia con 3 tasti in pullup, melodia pre impostata con include di libreria.
+
+LED RGB: ciclo per ogni colore, impostazione via seriale.
+PWM con LED RGB.
+
+Programmazione: vedere come stiamo con operatori e data types.
+Direttive per preprocesor: # define - # if defined - per DEBUG
+Usare seriale per aritmetica.
+
+
+
+Seriali: scrivere e debugging. Interpretae input / caratteri da seriale per accendere un LED.
+
+Motore a spazzole, transistor e diodo.
+- Accendere e spegnere un motore, 
+- usare un ciclo FOR per PWM,
+- potenziometro per variare PWM (con debuggin seriale)
+- impostare valore minimo per motore (da usare con analoglWrite)
+
+
+Servo: descrizione / caratteristiche base (vedi guida)
+Fare i due sketch di esempio: ciclio FOR e Knob.
+- C: caricare librerie
+
+
+Piezo
+Descrizione del funzionamento, melodie di esempio (mario tunes!).
+Arduino dev: utilizzare sketch su piu' tabs (include): percorsi <> ""
+Programmazione: array, strutture dati.
+Pitch follower - sensore luminose connesso a piezo. Ricordarsi di calibrare il sensore con map().
+Usare un piezo come input - knock (descrivere come le dimensioni influenzano la sensibilita', esistono piezo costruiti espressamente per input - flex). Occhio alla sensibilita'.
+
+
+                                                       
+
+Ottimizzazione: multitasking con millis() al posto di delay(),
+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().
+
+
+INPUT_PULLUP: bottone senza resistenza come input.
+
+--- Shift register: binario - decimale -esadecimale. Circuiti semi-permaneti su mini breadboard, piu' listati per stesso circuito. 
+
+Avanzati
+===========
+
+Interrupts: http://gammon.com.au/interrupts
+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.
+
+Timers: possono essere usati per PWM con periodo diverso da 500hz, possono avere una risoluzione di 1024.
+
+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.
+Usare un digitalWrite() per fornire 5v a un sensore (es fotocellula) solo quando andiamo a fare una lettura con alanogRead(), poi tornare a spegnerlo.
+
+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/