]> git.piffa.net Git - sketchbook_andrea/commitdiff
Serial and eeprom
authorAndrea Manni <andrea@piffa.net>
Thu, 5 Mar 2015 13:31:30 +0000 (14:31 +0100)
committerAndrea Manni <andrea@piffa.net>
Thu, 5 Mar 2015 13:31:30 +0000 (14:31 +0100)
advanced_projects/eeprom_1_write_read/eeprom_1_write_read.ino [new file with mode: 0644]
advanced_projects/eeprom_2_stringa_avr/eeprom_2_stringa_avr.ino [new file with mode: 0644]
serial/comm_rx/comm_rx.ino [new file with mode: 0644]
serial/comm_tx/comm_tx.ino [new file with mode: 0644]
serial/serial_2_comm_rx_2_led/serial_2_comm_rx_2_led.ino [new file with mode: 0644]
serial/serial_2_comm_tx_2_input/serial_2_comm_tx_2_input.ino [new file with mode: 0644]
serial/serial_comm_rx/serial_comm_rx.ino [new file with mode: 0644]
serial/serial_comm_tx/serial_comm_tx.ino [new file with mode: 0644]

diff --git a/advanced_projects/eeprom_1_write_read/eeprom_1_write_read.ino b/advanced_projects/eeprom_1_write_read/eeprom_1_write_read.ino
new file mode 100644 (file)
index 0000000..55d051e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+  EEPROM 
+ Storaggio di un valore e sucessiva lettura.
+ */
+
+#include <EEPROM.h>
+
+// the current address in the EEPROM (i.e. which byte
+// we're going to write to next)
+int addr = 12;
+
+void setup()
+{ 
+  Serial.begin(9600);
+  Serial.println("Storaggio valore");
+  // EEPROM.write(addr, 124); 
+  // Eseguire una volta sola, caricare lo sketch
+  // e immediatamente commetare e ripetere l'upload.
+}
+
+void loop()
+{
+  Serial.print("Lettura Valore: ");
+  Serial.println(EEPROM.read(12)); 
+  Serial.flush();
+  exit(0) ;
+  // need to divide by 4 because analog inputs range from
+  // 0 to 1023 and each byte of the EEPROM can only hold a
+  // value from 0 to 255.
+  int val = analogRead(0) / 4;
+
+  // write the value to the appropriate byte of the EEPROM.
+  // these values will remain there when the board is
+  // turned off.
+  EEPROM.write(addr, val);
+
+  // advance to the next address.  there are 512 bytes in 
+  // the EEPROM, so go back to 0 when we hit 512.
+  addr = addr + 1;
+  if (addr == 512)
+    addr = 0;
+
+  delay(100);
+}
+
diff --git a/advanced_projects/eeprom_2_stringa_avr/eeprom_2_stringa_avr.ino b/advanced_projects/eeprom_2_stringa_avr/eeprom_2_stringa_avr.ino
new file mode 100644 (file)
index 0000000..e3cf875
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+  EEPROM 
+ Storaggio di un stringa di caratteri in EEPROM e sucessiva lettura
+ usando le libreire AVR: /usr/lib/avr/include/avr/eeprom.h
+ */
+
+#include <avr/eeprom.h> // 
+
+// the current address in the EEPROM (i.e. which byte
+// we're going to write to next)
+int addr = 100;
+char testo[23] ;
+void setup()
+{ 
+  char message[] = "Testo messaggio";
+  Serial.begin(9600);
+  Serial.println("Storaggio valore");
+
+  //eeprom_write_block(message, (void *)addr, strlen(message) + 1);
+  // Pointer all'array di carattere, punto in cui scrivere (su 1023), lunghezza
+  // Eseguire una volta sola, caricare lo sketch
+  // e immediatamente commetare e ripetere l'upload.
+}
+
+void loop()
+{
+  Serial.print("Lettura Valore: ");
+  eeprom_read_block(&testo, (void *)addr,23);
+  Serial.println(testo); 
+  Serial.flush();
+  exit(0) ;
+}
+
+
diff --git a/serial/comm_rx/comm_rx.ino b/serial/comm_rx/comm_rx.ino
new file mode 100644 (file)
index 0000000..59a7d79
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  Analog 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
+int led  = 13; // Questa scheda ha spolo l'output
+int RX   = 3 ; // Pin di ricezione
+
+void setup() {                
+  // initialize the digital pin as an output.
+  pinMode(led, OUTPUT);       // Il PIN e' attivato come output
+  pinMode(RX, INPUT);        // Il PIN e' attivato come output
+}
+
+// the loop routine runs over and over again forever:
+void loop() {
+  if (digitalRead(RX) == 1) { // Verifica se il PIN input e' +5v
+    digitalWrite(led, HIGH);
+    delay(50);
+  } 
+  else if (digitalRead(RX) == 0) { // Alterativa: se non e' +5v
+    digitalWrite(led, LOW);
+    delay(50);
+  }
+}
+
diff --git a/serial/comm_tx/comm_tx.ino b/serial/comm_tx/comm_tx.ino
new file mode 100644 (file)
index 0000000..2d0935c
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+  Analog 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
+int led = 13;
+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(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(TX, HIGH);
+    delay(50);
+  } 
+  else { // Alterativa: se non e' +5v
+    digitalWrite(led, LOW);
+    digitalWrite(TX, LOW);
+    delay(50);
+  }
+}
+
+
+
+
diff --git a/serial/serial_2_comm_rx_2_led/serial_2_comm_rx_2_led.ino b/serial/serial_2_comm_rx_2_led/serial_2_comm_rx_2_led.ino
new file mode 100644 (file)
index 0000000..286e489
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+  Serial comm: RX due output
+ Comunicazione seriale tra due schede arduino.
+ La prima scheda ha due botton1 come input e 
+ comunica con un altra scheda che monta due LED come output.
+ Il led della seconda si accende quando rileva
+ la pressione del bottone della prima.
+ La RX deve distinguere l'input ricevuto.
+ */
+
+// Seconda scheda: output
+// PIN 0 = RX
+int led = 13; // Questa scheda ha spolo l'output
+int red = 12; // Questa scheda ha spolo l'output
+int incomingByte ;
+// 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(red, 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) {
+    // read the incoming byte:
+    incomingByte = Serial.read();
+    
+    if (incomingByte == 2) { // Verifica se il PIN input e' +5v
+      digitalWrite(led, HIGH);
+      delay(50);
+      digitalWrite(led, LOW);
+    } 
+    else if (incomingByte == 3) { // Alterativa: se non e' +5v
+      digitalWrite(red, HIGH);
+      delay(50);
+      digitalWrite(red, LOW);
+    }
+  }
+}
+
+
+
diff --git a/serial/serial_2_comm_tx_2_input/serial_2_comm_tx_2_input.ino b/serial/serial_2_comm_tx_2_input/serial_2_comm_tx_2_input.ino
new file mode 100644 (file)
index 0000000..aa43a76
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+  Serial comm: TX due bottoni
+ Comunicazione seriale tra due schede arduino.
+ La prima scheda ha due bottoni come input e 
+ comunica con un altra scheda che monta due LED come output.
+ Il led della seconda si accende quando rileva
+ la pressione del bottone della prima.
+ La TX deve mandare due segnali diversi.
+ */
+
+// Prima scheda: input
+// PIN 1 = TX
+int led = 13;
+int input = 2;  // Questa e' la scheda con un input
+int inputRed = 3;  // 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);        // 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
+    digitalWrite(led, HIGH);
+    Serial.write(2);
+    delay(50);
+  } 
+  if (digitalRead(inputRed) == HIGH) { // Verifica se il PIN input e' +5v
+    digitalWrite(led, HIGH); 
+    Serial.write(3);
+    delay(50);
+  } 
+  digitalWrite(led, LOW);
+}
+
+
+
diff --git a/serial/serial_comm_rx/serial_comm_rx.ino b/serial/serial_comm_rx/serial_comm_rx.ino
new file mode 100644 (file)
index 0000000..56411e0
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  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
+
+// 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.read() == 1) { // Verifica se il PIN input e' +5v
+    digitalWrite(led, HIGH);
+    delay(50);
+  } 
+  else if (Serial.read() == 0) { // Alterativa: se non e' +5v
+    digitalWrite(led, LOW);
+    delay(50);
+  }
+}
+
diff --git a/serial/serial_comm_tx/serial_comm_tx.ino b/serial/serial_comm_tx/serial_comm_tx.ino
new file mode 100644 (file)
index 0000000..1615fa2
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+  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
+
+// 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);        // 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
+    digitalWrite(led, HIGH);
+    Serial.write(1);
+    delay(50);
+  } 
+  else { // Alterativa: se non e' +5v
+    digitalWrite(led, LOW);
+    Serial.write(0);
+    delay(50);
+  }
+}
+
+
+