From: Andrea Manni Date: Thu, 12 Mar 2015 00:25:37 +0000 (+0100) Subject: seconda lezioni X-Git-Url: http://git.piffa.net/web?a=commitdiff_plain;h=31855a558893b41c48d87e0411313b14183bb3d2;p=arduino seconda lezioni --- diff --git a/lezioni/.ordine_argomenti.swp b/lezioni/.ordine_argomenti.swp new file mode 100644 index 0000000..ddc123a Binary files /dev/null and b/lezioni/.ordine_argomenti.swp differ diff --git a/lezioni/.seconda_lezione.swp b/lezioni/.seconda_lezione.swp new file mode 100644 index 0000000..ce84448 Binary files /dev/null and b/lezioni/.seconda_lezione.swp differ diff --git a/lezioni/lezioni2 b/lezioni/lezioni2 new file mode 100644 index 0000000..64325dd --- /dev/null +++ b/lezioni/lezioni2 @@ -0,0 +1,103 @@ + + +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. + +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. +Fare una funzione per rapido - lento, guardare loop() e setup() +Setup() symbolic constant /usr/share/arduino/hardware/arduino/cores/arduino/Arduino.h +Mettere funzioni in un file separato, senza estensione. + + +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) + +Introdurre un LED e un resistore: circuiti elettrici, introduzione. +Breadboard, jumpers, colore per cavi. + +impostare una nuova funzione per tempi e led: argomenti. + +...diventa ripetitivo: serve qualcosa per cambiare il flusso di esecuzione: cicli condizionali (e poi iterativi). + + 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. +- Introdurre gli operatori comparativi (>,<,=!) e booleani (&&, ||, !): + + 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. +Stato di un bottone poi Debouncing: grafico http://www.ladyada.net/learn/arduino/lesson5.html + +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. +Fare una funziona Flash(int numero-di-accensioni, int delayTime). +Sequenza di istruzioni - > funzione : esercizio per blink con ripetizioni lunghe / corte in base a parametro funzione con ciclo iterattivo for. +Funzione per aumentare diminuire luminosita'. +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. + +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 divusuione *4 oer mappare un range 1024 -> 256 su PWM. + + +Seriali: scrivere e debugging. + +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. + + diff --git a/schemi/button_1.fzz b/schemi/button_1.fzz index c6bd514..9621956 100644 Binary files a/schemi/button_1.fzz and b/schemi/button_1.fzz differ diff --git a/schemi/button_1_bb.png b/schemi/button_1_bb.png index 1c82948..02ca967 100644 Binary files a/schemi/button_1_bb.png and b/schemi/button_1_bb.png differ diff --git a/schemi/button_1_schem.png b/schemi/button_1_schem.png index ccfeca7..a23ff35 100644 Binary files a/schemi/button_1_schem.png and b/schemi/button_1_schem.png differ