Sheet Arduino n.3 (Signal reading e ADC)

[Lezione del 12 nov 2019]

Signal reading

La scheda della esercitazione n.3 inizia richiedendo la misurazione di segnali digitali, rilevando lo stato aperto/chiuso di un pulsante.

come segue:

Il dettaglio dello sketch è il seguente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* Embedded Systems Architecture - hardware
 *  application on 04th nov 2019
 *  
 *  print on serial monitor when you push the button
 */

#define BUTTON 2   // button port
#define RLED   9   // red led port 

void setup() {
    //pinMode(RLED, OUTPUT);
    pinMode(BUTTON, INPUT);
    Serial.begin(9600);            // init the serial at 9600 baud

}

void loop() {
  int button_status;
  button_status = digitalRead(BUTTON);
  if(button_status==HIGH)
      Serial.print("pressed");
  else
      Serial.print("released");
  Serial.println();

  delay(2000);
}

Il nucleo di questo sketch è la lettura dello stato del pulsante (ln 19) che viene successivamente interpretato e scritto sulla seriale (ln da 20 a 24).

Dopo i soliti due secondi di attesa, si ricomincia.

Analog to digital conversion (ADC)

La seconda parte della stessa scheda focalizza la lettura di un valore analogico, variando lo stato di un potenziometro. Come segue:

Dettaglio dello sketch, in cui la lettura dell’analogica è a ln 16 e la conversione in Volt a ln 20:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* Embedded Systems Architecture - hardware
 *  application on 04th nov 2019
 *  
 *  turn on the led when you push the button
 */
#define TO_V 5.0 / 1024.0            // convert an analog UNO unit to V

void setup() {
    Serial.begin(9600);            // init the serial at 9600 baud
}

void loop() {
  int adc_value;
  double v;
  
  adc_value = analogRead(A0);
  Serial.print("adc: ");
  Serial.print(adc_value);

  v = adc_value * TO_V;
  Serial.print(";    v (V): ");
  Serial.print(v);
 
  Serial.println();
  
  delay(2000);
}