]> git.piffa.net Git - sketchbook_andrea/commitdiff
oggi analog
authoreaman <andrea@piffa.net>
Mon, 5 Dec 2016 09:07:41 +0000 (10:07 +0100)
committereaman <andrea@piffa.net>
Mon, 5 Dec 2016 09:07:41 +0000 (10:07 +0100)
16 files changed:
basic/pwm/pwm_1_soluzione_doppio_while_byte/pwm_1_soluzione_doppio_while_byte.ino
basic/pwm/pwm_1_while_byte/pwm_1_while_byte.ino
basic/pwm/pwm_3_fade_reverser/pwm_3_fade_reverser.ino
basic/pwm/pwm_4_analog_input/pwm_4_analog_input.ino
oggi/button_1/button_1.ino [deleted file]
oggi/button_2_serial_debug/button_2_serial_debug.ino [deleted file]
oggi/operator_1_basic/operator_1_basic.ino [deleted file]
oggi/operator_2_comparison/operator_2_comparison.ino [new file with mode: 0644]
oggi/pwm_0_stati/pwm_0_stati.ino [new file with mode: 0644]
oggi/pwm_1_soluzione_doppio_while_byte/pwm_1_soluzione_doppio_while_byte.ino [new file with mode: 0644]
oggi/pwm_1_while_byte/pwm_1_while_byte.ino [new file with mode: 0644]
oggi/pwm_2_for_loop/pwm_2_for_loop.ino [new file with mode: 0644]
oggi/pwm_3_fade_reverser/pwm_3_fade_reverser.ino [new file with mode: 0644]
oggi/pwm_4_analog_input/pwm_4_analog_input.ino [new file with mode: 0644]
oggi/serial_hello_world/serial_hello_world.ino [deleted file]
oggi/switch_test_serial/switch_test_serial.ino [deleted file]

index eb6cca72e97cdf3e919797532099041dd538c11f..19f8d07bfd6285bd4b554f9f72ac21727c550c9e 100644 (file)
@@ -3,6 +3,9 @@
  
    PWM per un LED: aumentare progressivamente la luminosita'.
    Aumenta e diminuisce la luminostia' usando un ciclo while
+
+   Schema: http://lab.piffa.net/schemi/led_single_bb.png
+   Usare un PIN abilitato per il PWM.
  */
 
 byte led  = 9   ;     // Il pin ~9 e' abilitato al PWM
@@ -15,7 +18,7 @@ void setup()  {
 
 void loop()  { 
     while (brightness < 255) {
-  analogWrite(led, brightness);  // La funziona analogWrite utilizza il PWM
+  analogWrite(led, brightness);// La funziona analogWrite utilizza il PWM
   // a 8 bit integrato nel MCU: simula un serie di valori intermedi
   // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).         
   delay(10);       
@@ -23,15 +26,17 @@ void loop()  {
     }
 
     while (brightness > 0) {
-  analogWrite(led, brightness);  // La funziona analogWrite utilizza il PWM
+  analogWrite(led, brightness);// La funziona analogWrite utilizza il PWM
   delay(10);       
   brightness = brightness - 1; // Decrementiamo la luminosita'
     }
 
 
 }
-/*
+/* Note:
+
 - basic/pwm/pwm_3_fade_reverser/pwm_3_fade_reverser.ino
-E molto piu' snello utilizzando il solo ciclo loop come iteratore
-e una condizione per cambiare l'incremento
+
+  E molto piu' snello utilizzando il solo ciclo loop come iteratore
+  e una condizione per cambiare l'incremento.
 */
index fed4e7f0e70c8c96bf4583e680aa5c53966cfcbc..dc092343741cdcfc9057c9102b97217e66c14eeb 100644 (file)
@@ -1,7 +1,11 @@
 /*
    Fade
  
-   PWM per un LED: aumentare progressivamente la luminosita'.
+   PWM per un LED: aumentare progressivamente la luminosita'
+   utilizzando un ciclo while e l'overflow di un byte.
+
+    Schema: http://lab.piffa.net/schemi/led_single_bb.png
+    (Cambiare PIN)
  */
 
 const byte led  = 9   ; // Il pin ~9 e' abilitato al PWM
index 688465f3c9c9c01fa80cc197d73656e7c012fce9..70bc48b6dfe9bc6101c04b591dbe3da7b1eee51a 100644 (file)
@@ -61,4 +61,4 @@ Soluzioni:
 
    2. Due cicli IF annidiati che verificano due condizioni in sucessione
    
-/*
+*/
index e31396e7f484ca1178619c6d0140db6e4915882f..5e9f83d603e46391612227af005fc6a522a27f79 100644 (file)
@@ -2,6 +2,8 @@
   Analog PWM
   
   Impostare la frequenza del PWM tramite un input analogico.
+
+- Schema: http://lab.piffa.net/schemi/arduino-pwm-diagram.png
   
   */
   
diff --git a/oggi/button_1/button_1.ino b/oggi/button_1/button_1.ino
deleted file mode 100644 (file)
index f409028..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  Input Condizionale
- Accensione e spegnimanto di un LED utilizzando un pin come input.
-
- Utilizzare un jumper per collegare il PIN Input
- alternativamente a +5 o GND .
-
-Schema:
-- http://lab.piffa.net/schemi/led_condizionale.png
-
- */
-
-// Pin 13 has an LED connected on most Arduino boards.
-// give it a name:
-int led     = 12;
-int input   = 2;
-
-// 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
-}
-
-// 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);
-  } 
-  if (digitalRead(input) == LOW) { // Verifica se il PIN input e' 0V
-    digitalWrite(led, LOW);
-  }
-}
-
-/* Domande:
- 1. Invertire il programma facendo in modo che il led si spenga
-    quando il bottone e' premuto. Considerare come ottenere lo stesso risultato
-    modificando il circuito.
- 2. Modificare il programma per far brillare il led cinque volte al secondo
-    quando il bottone e' premuto.
- 3. Si potrebbe usare un ciclo iterativo while invece che 
-    un ciclo condizonale if? Che differenza c'e' tra il ciclo while, if e  for?
- 4. Domanda: cosa succede se il jumper input non e' collegato ne al +5 ne al ground?
- */
diff --git a/oggi/button_2_serial_debug/button_2_serial_debug.ino b/oggi/button_2_serial_debug/button_2_serial_debug.ino
deleted file mode 100644 (file)
index 5dbcf80..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  Input serial debug
- Accensione e spegnimanto di un LED utilizzando un pin come input.
- Utilizzare un bottone momentaneo per attivare il LED.
-
- Schemi del circuito per bottone in pull down:
- - http://lab.piffa.net/schemi/button_1_bb.png
- - http://lab.piffa.net/schemi/button_1_schem.png
-
-Tutorial:
-- 
- */
-
-int led = 12;
-int input = 2;
-
-// the setup routine runs once when you press reset:
-void setup() {                
-  pinMode(led, OUTPUT);       // Il PIN e' attivato come output
-  pinMode(input, INPUT);      // Il PIN e' attivato come output
-
-  Serial.begin(9600);         // Attivazione 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.println("Bottone premuto: circuito chiuso");  // Debug seriale
-    delay(200);
-  } 
-  else { // Alterativa: se non e' +5v
-    digitalWrite(led, LOW);
-    Serial.println("Bottone libero: circuito aperto");  // Debug seriale
-    delay(200);
-  }
-}
-
-/* Domande:
- 1. invertire il programma facendo in modo che il led si spenga
-    quando il bottone e' premuto. Consoderare come ottenere lo stesso risultato
-    modificando il circuito.
- 2. Modificare il programma per far brillare il led cinque volte al secondo
-    quando il bottone e' premuto.
- 3. Si potrebbe usare un ciclo iterativo while invece che 
-    un ciclo condizonale if? Che differenza c'e' tra il ciclo while e  for?
- 4. Domanda: cosa succede se il jumper input non e' collegato ne al +5 ne al gound?
- */
diff --git a/oggi/operator_1_basic/operator_1_basic.ino b/oggi/operator_1_basic/operator_1_basic.ino
deleted file mode 100644 (file)
index 1a8bd6b..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Operatori base
- */
-
-int a = 5;
-int b = 10;
-int c = 20;
-
-void setup()                    // run once, when the sketch starts
-{
-  Serial.begin(9600);           // set up Serial library at 9600 bps
-
-  Serial.println("Here is some math: ");
-
-  Serial.print("a = ");
-  Serial.println(a);
-  Serial.print("b = ");
-  Serial.println(b);
-  Serial.print("c = ");
-  Serial.println(c);
-
-  Serial.print("a + b = ");       // add
-  Serial.println(a + b);
-
-  Serial.print("a * c = ");       // multiply
-  Serial.println(a * c);
-
-  Serial.print("c / b = ");       // divide
-  Serial.println(c / b);
-
-  Serial.print("b - c = ");       // subtract
-  Serial.println(b - c);
-
-  Serial.print("b modulo a = ");       // Calculates the remainder when one integer is divided by another. 
-  Serial.println(b % a);
-
-  Serial.print("8 modulo 3 = ");       // Calculates the remainder when one integer is divided by another. 
-  Serial.println(8 % 3);
-
-  Serial.print("a incrementato ++ = ");       // Increments 
-  Serial.println(a++);                        // Increments AFTER the call
-  Serial.print("valore attuale di a: ");
-  Serial.println(a);
-  Serial.print("++a incrementato  = ");       
-  Serial.println(++a);                        // Increments BEFORE the call
-
-
-  Serial.print("b decrementato -- = ");       // Decrement
-  Serial.println(b--);
-  Serial.print("valore attuale di b: ");
-  Serial.println(b);
-  Serial.print("--b decrementato  = ");       
-  Serial.println(--b);
-
-}
-
-void loop()                     // we need this to be here even though its empty
-{
-}
-
-
-
diff --git a/oggi/operator_2_comparison/operator_2_comparison.ino b/oggi/operator_2_comparison/operator_2_comparison.ino
new file mode 100644 (file)
index 0000000..7900d9e
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+  Operatori comparativi binari
+  Comparison operators, binary
+ */
+
+int a = 5;
+int b = 10;
+int c = 20;
+
+void setup()                    // run once, when the sketch starts
+{
+  Serial.begin(9600);           // set up Serial library at 9600 bps
+
+  Serial.println("Here is some math: ");
+
+  Serial.print("a = ");
+  Serial.println(a);
+  Serial.print("b = ");
+  Serial.println(b);
+  Serial.print("c = ");
+  Serial.println(c);
+
+  Serial.print("a > b = ");       // maggiore
+  Serial.println(a > b);
+
+  Serial.print("a < b = ");       // minore
+  Serial.println(a < b);
+
+  Serial.print("a == b -> ");       // stesso valore
+  Serial.println(a == b);
+
+  Serial.print("a != b -> ");       // valore diverso
+  Serial.println(a != b);
+
+  Serial.print("a <= b ->");       // minore uguale
+  Serial.println(a <= b);
+
+  Serial.print("a >= b -> ");       // maggiore uguale
+  Serial.println(a >= b);
+}
+
+void loop()                     // we need this to be here even though its empty
+{
+}
+
+
diff --git a/oggi/pwm_0_stati/pwm_0_stati.ino b/oggi/pwm_0_stati/pwm_0_stati.ino
new file mode 100644 (file)
index 0000000..3863c4a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+   PWM Stati
+   PWM per un LED: impostare i valori di luminosita' di un LED.
+   4 stati di luminosita' per un LED collegato a un PIN PWM
+   
+ */
+
+const int led  = 9   ;     // Il pin ~9 e' abilitato al PWM
+byte brightness = 255;  // Valore iniziale per il PWM del LED
+const int pausa = 2000; // Pausa tra uno stato e l'altro
+
+void setup()  { 
+  pinMode(led, OUTPUT); // Il PIN nove va dichiarato come un OUTPUT
+} 
+
+void loop()  { 
+  // OUTPUT al 100% : 255
+  analogWrite(led, brightness) ; 
+  delay(pausa);
+
+  // OUTPUT al 75% : 191
+  analogWrite(led, brightness * 0.75) ; 
+  delay(pausa);
+  
+  // OUTPUT al 50% : 127
+  analogWrite(led, brightness * 0.5) ; 
+  delay(pausa);
+  
+  // OUTPUT al 25%: 63
+  analogWrite(led, brightness * 0.25 ) ; 
+  delay(pausa);
+
+  // OUTPUT al 0%
+  analogWrite(led, brightness * 0) ;
+  delay(pausa);
+}
diff --git a/oggi/pwm_1_soluzione_doppio_while_byte/pwm_1_soluzione_doppio_while_byte.ino b/oggi/pwm_1_soluzione_doppio_while_byte/pwm_1_soluzione_doppio_while_byte.ino
new file mode 100644 (file)
index 0000000..19f8d07
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+   Fade sali e scendi
+   PWM per un LED: aumentare progressivamente la luminosita'.
+   Aumenta e diminuisce la luminostia' usando un ciclo while
+
+   Schema: http://lab.piffa.net/schemi/led_single_bb.png
+   Usare un PIN abilitato per il PWM.
+ */
+
+byte led  = 9   ;     // Il pin ~9 e' abilitato al PWM
+byte brightness = 0;  // Valore iniziale per il PWM del LED
+
+// the setup routine runs once when you press reset:
+void setup()  { 
+  pinMode(led, OUTPUT); // Il PIN nove va dichiarato come un OUTPUT
+} 
+
+void loop()  { 
+    while (brightness < 255) {
+  analogWrite(led, brightness);// La funziona analogWrite utilizza il PWM
+  // a 8 bit integrato nel MCU: simula un serie di valori intermedi
+  // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).         
+  delay(10);       
+  brightness = brightness + 1; // Incrementiamo la luminosita'
+    }
+
+    while (brightness > 0) {
+  analogWrite(led, brightness);// La funziona analogWrite utilizza il PWM
+  delay(10);       
+  brightness = brightness - 1; // Decrementiamo la luminosita'
+    }
+
+
+}
+/* Note:
+
+- basic/pwm/pwm_3_fade_reverser/pwm_3_fade_reverser.ino
+
+  E molto piu' snello utilizzando il solo ciclo loop come iteratore
+  e una condizione per cambiare l'incremento.
+*/
diff --git a/oggi/pwm_1_while_byte/pwm_1_while_byte.ino b/oggi/pwm_1_while_byte/pwm_1_while_byte.ino
new file mode 100644 (file)
index 0000000..dc09234
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+   Fade
+   PWM per un LED: aumentare progressivamente la luminosita'
+   utilizzando un ciclo while e l'overflow di un byte.
+
+    Schema: http://lab.piffa.net/schemi/led_single_bb.png
+    (Cambiare PIN)
+ */
+
+const byte led  = 9   ; // Il pin ~9 e' abilitato al PWM
+byte brightness = 0;    // Valore iniziale per il PWM del LED
+                        // Perche' brightness non e' una costante?
+
+// the setup routine runs once when you press reset:
+void setup()  { 
+  pinMode(led, OUTPUT); // Il PIN nove va dichiarato come un OUTPUT
+} 
+
+void loop()  { 
+  analogWrite(led, brightness);  // La funziona analogWrite utilizza il PWM
+  // a 8 bit integrato nel MCU: simula un serie di valori intermedi
+  // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).         
+  delay(10);       
+  brightness = brightness + 1; // Incrementiamo la luminosita'
+}
+
+/* Domande:
+
+1. Come fare a invertire la dissolvenza diminuendo la luminosita'?
+2. Provare a far salire e poi scendere la luminosita'
+
+*/
diff --git a/oggi/pwm_2_for_loop/pwm_2_for_loop.ino b/oggi/pwm_2_for_loop/pwm_2_for_loop.ino
new file mode 100644 (file)
index 0000000..610d302
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+    LED for PWM
+ PWM per un LED: aumentare progressivamente la luminosita'.
+ Utilizzo di un ciclo iterativo: for loop
+ */
+
+int led     = 9; // Pin per il PWM
+int pausa   = 5; 
+
+void setup()
+{
+  pinMode(led, OUTPUT);
+}
+
+void loop()
+{
+  for (int i = 0; i < 255 ; i++) { // Operatore ternario, 3 argomenti:
+  /* 1. definizione iteratore
+     2. limite iteratore
+     3. incremento operatore
+     */
+    analogWrite(led, i) ;
+    delay(pausa);
+  }
+  // Ora l'inverso
+  for (int c = 255; c > 0 ; c--) {  // Domanda: 1. avrei potuto usare come 
+                                    // variabile di nuovo i ?
+    analogWrite(led, c) ;
+    delay(pausa);
+  }
+}
+
+/* Domande:
+ 2. I due loop sembrano molto simili: e' possibile accorparli?
+
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ - Risposte:
+ 1. Si, le variabili i e c esistono solo nello scopo degli iteratori
+    in cui sono dichiarate.
+ 2. Vedi es. suciessivo.
+ */
+
+
+
+
diff --git a/oggi/pwm_3_fade_reverser/pwm_3_fade_reverser.ino b/oggi/pwm_3_fade_reverser/pwm_3_fade_reverser.ino
new file mode 100644 (file)
index 0000000..70bc48b
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+Fade
+ This example shows how to fade an LED on pin 9
+ using the analogWrite() function.
+ This example code is in the public domain.
+ From Arduino for dummies.
+ */
+
+const int led = 9;          // LED con PWM
+byte brightness = 0;        // Luminosita'
+const int fadeAmount = 5;   // Step di modifica luminosita'
+const int pause = 30;       // Pausa tra incrementi
+
+
+void setup() {
+  pinMode(led, OUTPUT); // declare pin 9 to be an output:
+}
+
+void loop() {
+
+  analogWrite(led, brightness);
+  brightness = brightness + fadeAmount;
+
+  if (brightness == 0 || brightness == 255) {
+  // Invertire incremento ai valori limiti
+    fadeAmount = -fadeAmount ;
+  }
+  // wait for 30  milliseconds to see the dimming effect
+  delay(pause); 
+}
+
+
+/* Domande:
+   1. Che rapporto c'e' tra un OR e due cicli IF ?
+   2. E tra un AND e due cicli IF ?
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+.
+Soluzioni:
+   1. Due cicli IF sequenziali con:
+    - Condizioni diverse
+    - stessa conseguenza
+
+   2. Due cicli IF annidiati che verificano due condizioni in sucessione
+   
+*/
diff --git a/oggi/pwm_4_analog_input/pwm_4_analog_input.ino b/oggi/pwm_4_analog_input/pwm_4_analog_input.ino
new file mode 100644 (file)
index 0000000..5e9f83d
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  Analog PWM
+  
+  Impostare la frequenza del PWM tramite un input analogico.
+
+- Schema: http://lab.piffa.net/schemi/arduino-pwm-diagram.png
+  
+  */
+  
+int inputPin = A0;  // set input pin for the potentiometer
+int inputValue = 0; // potentiometer input variable
+int ledPin = 3;     // output pin, deve avere il PWM
+
+void setup() {
+     // declare the ledPin as an OUTPUT:
+     pinMode(ledPin, OUTPUT);
+}
+
+void loop() {
+     // read the value from the potentiometer:
+     inputValue = analogRead(inputPin);
+
+     // send the square wave signal to the LED:
+     analogWrite(ledPin, inputValue/4); 
+     // la lettura analogica e' a 10 bit (0-1024)
+     // Il PWM invece e' a 8 bit (0-255)
+     // Circa 1024 / 4 ~= 255
+     
+     // Domanda: dovrebbe esserci un delay()?
+}
+
diff --git a/oggi/serial_hello_world/serial_hello_world.ino b/oggi/serial_hello_world/serial_hello_world.ino
deleted file mode 100644 (file)
index 7f8e814..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *   Hello World!
- *
- * This is the Hello World! for Arduino. 
- * It shows how to send data to the computer trough the serial connection
- */
-
-void setup()                   
-{
-  Serial.begin(9600);           // Inposta la seriale a 9600 bps
-  // Se Arduino manda 9600 bit per secondo e devi manandare 12 Bytes di dati
-  // quanto tempo serve per mandare i dati?
-
-  // Try to change bond rate in the monitor
-
-  Serial.println("Hello World!");   // scrive hello world e ritorna a capo
-  
-  
-//  Serial.print("Il mio nome e': ");   // Scrive senza ritorno a capo
-//  Serial.println("Andrea");           // Scrive con ritorno a capo
-//  Serial.flush();                     // Assicura che tutto il testo venga scritto
-
-}
-
-void loop()                       
-{
-  // Provate a mettere i  Serial.printl() qui, magari con un delay()
-}
-
-
-
-
diff --git a/oggi/switch_test_serial/switch_test_serial.ino b/oggi/switch_test_serial/switch_test_serial.ino
deleted file mode 100644 (file)
index 9fa2b7d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Switch test program
- */
-
-int switchPin = 2;              // Switch connected to digital pin 2
-
-void setup()                    // run once, when the sketch starts
-{
-  Serial.begin(9600);           // set up Serial library at 9600 bps
-  pinMode(switchPin, INPUT);    // sets the digital pin as input to read switch
-}
-
-
-void loop()                     // run over and over again
-{
-  Serial.print("Read switch input: ");
-  Serial.println(digitalRead(switchPin));    // Read the pin and display the value
-  delay(200);
-}