/* Serial comm: TX Comunicazione seriale tra due schede arduino. La prima scheda ha un bottone come input e comunica con un altra scheda che monta un LED come output. Il led della seconda si accende quando rileva la pressione del bottone della prima. Scema: http://lab.piffa.net/schemi/serial_common_bb.png http://lab.piffa.net/schemi/serial_common_schem.png */ // Prima scheda: input // PIN 1 = TX int led = 13; int input = 2; // Questa e' la scheda con un input // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); // Il PIN e' attivato come output pinMode(input, INPUT_PULLUP); // Il PIN e' attivato come output Serial.begin(9600); // Attiviamo la seriale } // the loop routine runs over and over again forever: void loop() { if (digitalRead(input) == LOW) { // Verifica se il bottone e' premuto digitalWrite(led, HIGH); Serial.write(1); delay(50); } else { // Alterativa: se non e' +5v digitalWrite(led, LOW); Serial.write(0); delay(50); } } /* Domande Una connessione analogica permette di passare un solo tipo di segnale con eventuale modulazione (8bit in output da PWM e 10bit di scansione come analog input). 1. Quanti tipi di dati permette di trasmettere la seriale? 2 Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC). 2.1 Come si comportano le latenze? 2.2 C'e' perdita di segnale? 3. Rifare lo sketch utilizzando una STATE MACHINE: quando il il LED viene ACCESO / SPENTO alternativamente alla pressione del bottone. - Dove dovremo implementare il DEBOUNCE? - Dove implementare la gestione dello STATO? Risposte in fondo: 1. Qualunque tipo di dati, anche lunghi flussi di dati 2. Si dovra' trasmettere un segnale da 0-255 e sulla ricevente interpretarlo con http://www.arduino.cc/en/Reference/ParseInt 2.1 Tra buffer di trasmissione, timeout e conversione dei valori ci sara' una latenza nel trasferimento dei dati, a differenza di una connessione analigica che e' instantanea ma soggetta a degradazione del segnale. 2.2 Non c'e' degradazione o perdita del segnale essendo una trasmissione di dati digitale (fin tanto che non si deteriora la connessione). 3. Vedere lo sketch sucessivo, basandosi su gli sketch della state machine per il bottne: basic/buttons/button_state_4_state_and_condition/ */