*/
// Prima scheda: input
-int led = 13;
+int led = 13; // Debug
int input = 2; // Questa e' la scheda con un input
int TX = 3 ; // Pin di trasmissione
void setup() {
// initialize the digital pin as an output.
- pinMode(led, OUTPUT); // Il PIN e' attivato come output
+ pinMode(led, OUTPUT); // Il PIN e' attivato come output per DEBUG
pinMode(TX, OUTPUT); // Il PIN e' attivato come output
pinMode(input, INPUT); // Il PIN e' attivato come output
}
// the loop routine runs over and over again forever:
void loop() {
if (digitalRead(input) == HIGH) { // Verifica se il PIN input e' +5v
- digitalWrite(led, HIGH);
+ digitalWrite(led, HIGH); // Debug
digitalWrite(TX, HIGH);
delay(50);
}
void loop() {
if (digitalRead(input) == HIGH) { // Verifica se il PIN input e' +5v
digitalWrite(led, HIGH);
- Serial.write(2);
+ Serial.write(2); // Indicatore per accendere il LED 2
delay(50);
}
if (digitalRead(inputRed) == HIGH) { // Verifica se il PIN input e' +5v
digitalWrite(led, HIGH);
- Serial.write(3);
+ Serial.write(3); // Idicatore per accendere il LED 3
delay(50);
}
digitalWrite(led, LOW);
}
}
+/* 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).
+
+- Quanti tipi di dati permette di trasmettere la seriale?
+- Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC).
+*/
--- /dev/null
+/*
+ Serial comm: RX
+
+ 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.
+ */
+
+// Seconda scheda: output
+// PIN 0 = RX
+int led = 13; // Questa scheda ha spolo l'output
+int ledState = 0; // stato attuale del LED
+int incomingByte; // Dato ricevuto via seriale
+
+
+// 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
+
+ Serial.begin(9600); // Attiviamo la seriale
+}
+
+// the loop routine runs over and over again forever:
+void loop() {
+ if (Serial.available() > 0) {
+incomingByte = Serial.read();
+ if (incomingByte == 1) { // Verifica se viene ricevuto il dato 1
+ ledState = !ledState ; // Cambia lo stato del LED
+
+ // debug
+ Serial.print("I received: ");
+ Serial.println(incomingByte);
+ }
+ }
+ digitalWrite(led, ledState); // Aggiorna lo stato del LED
+}
+
+/* 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).
+
+ - Quanti tipi di dati permette di trasmettere la seriale?
+ - Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC).
+ - Che caratteristiche di latenza si hanno rispetto
+ a una connessione analogica?
+ - 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?
+ */
+
+
+
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT); // Il PIN e' attivato come output
- pinMode(input, INPUT); // 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) == HIGH) { // Verifica se il PIN input e' +5v
+ if (digitalRead(input) == LOW) { // Verifica se il bottone e' premuto
digitalWrite(led, HIGH);
Serial.write(1);
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).
+- Quanti tipi di dati permette di trasmettere la seriale?
+- Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC).
+- Che caratteristiche di latenza si hanno rispetto
+ a una connessione analogica?
+- Rifare lo sketch utilizzando una STATE MACHINE: quando il
+ il LED viene ACCESO / SPENTO alternativamente alla pressione
+ del bottone.
+*/
--- /dev/null
+/*
+ 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.
+ */
+
+// Prima scheda: input
+// PIN 1 = TX
+int led = 13;
+int input = 2; // Questa e' la scheda con un input
+int statoAttuale; // variable for reading the pin status
+int ultimoStato; // variable to hold the last button state
+long ultimoCambio = 0; // Momento in cui e' stato attivato il PIN input
+long debounceDelay = 100; // Tempo di debounce
+
+// 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() {
+ statoAttuale = digitalRead(input); // read input value and store it in var
+
+ if (statoAttuale == LOW && statoAttuale != ultimoStato && millis() - ultimoCambio > debounceDelay ) {
+ //
+ Serial.write(1); // Invia il dato via seriale
+ //Serial.write(49); // Invia il dato via seriale: 49 e' ASCII per 1
+ //Serial.print(1); // Invia il dato via seriale in ASCII
+
+ ultimoCambio = millis() ; // Registra il tempo attuale
+ }
+ ultimoStato = statoAttuale; // save the new state in our variable
+ Serial.flush();
+}
+
+/* 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).
+
+- Quanti tipi di dati permette di trasmettere la seriale?
+- Comandare un LED RGB via PWM via seriale (da una Arduino o da un PC).
+- Che caratteristiche di latenza si hanno rispetto
+ a una connessione analogica?
+- 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?
+
+HINT: Vedere lo script basc/buttons/debounce-2_and_contratto
+*/
+