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