]> git.piffa.net Git - sketchbook_andrea/blob - serial/serial_2_rx/serial_2_rx.ino
4f9feec484d9829a412a3f91c8290ee253806dce
[sketchbook_andrea] / serial / serial_2_rx / serial_2_rx.ino
1 /*
2   Serial comm: RX
3  
4  Comunicazione seriale tra due schede arduino.
5  La prima scheda ha un bottone come input e 
6  comunica con un altra scheda che monta un LED come output.
7  Il led della seconda si accende quando rileva
8  la pressione del bottone della prima.
9  
10  Scema: http://lab.piffa.net/schemi/serial_common_bb.png
11         http://lab.piffa.net/schemi/serial_common_schem.png
12  */
13
14 // Seconda scheda: output
15 // PIN 0 = RX
16 int led = 13; // Questa scheda ha spolo l'output
17
18 // the setup routine runs once when you press reset:
19 void setup() {                
20   // initialize the digital pin as an output.
21   pinMode(led, OUTPUT);       // Il PIN e' attivato come output
22
23   Serial.begin(9600); // Attiviamo la seriale
24 }
25
26 // the loop routine runs over and over again forever:
27 void loop() {
28   if (Serial.read() == 1) { // Verifica se il PIN input e' +5v
29     digitalWrite(led, HIGH);
30     delay(50);
31   } 
32   else if (Serial.read() == 0) { // Alterativa: se non e' +5v
33     digitalWrite(led, LOW);
34     delay(50);
35   }
36 }
37
38 /* Domande
39 Una connessione analogica permette di passare un solo tipo di segnale
40 con eventuale modulazione (8bit in output da PWM e 10bit di scansione 
41 come analog input).
42
43 1. Quanti tipi di dati permette di trasmettere la seriale?
44 2 Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC).
45 2.1 Come si comportano le latenze?
46 2.2 C'e' perdita di segnale?
47 3. Rifare lo sketch utilizzando una STATE MACHINE: quando il
48   il LED viene ACCESO / SPENTO alternativamente alla pressione
49   del bottone.
50    - Dove dovremo implementare il DEBOUNCE?
51    - Dove implementare la gestione dello STATO?
52
53 Risposte in fondo:
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 1. Qualunque tipo di dati, anche lunghi flussi di dati
72 2. Si dovra' trasmettere un segnale da 0-255 e sulla ricevente
73    interpretarlo con http://www.arduino.cc/en/Reference/ParseInt
74 2.1 Tra buffer di trasmissione, timeout e conversione dei valori
75     ci sara' una latenza nel trasferimento dei dati,
76     a differenza di una connessione analigica che e' instantanea
77     ma soggetta a degradazione del segnale.
78 2.2 Non c'e' degradazione o perdita del segnale essendo una
79 trasmissione di dati digitale (fin tanto che non si deteriora
80 la connessione).
81 3. Vedere lo sketch sucessivo, basandosi su gli sketch della 
82     state machine per il bottne: basic/buttons/button_state_4_state_and_condition/
83     
84 */