INPUT DIGITALE: Esempio TOUCH SENSOR

Per costruire il seguente circuito occorre un touch sensor digitale

Capacitive Digital Touch Sensor

 

Ecco l'immagine del circuito utilizzato nei 3 esempi

Touch Sensor

Codice Sorgente A

Obiettivo progetto: Costruire un circuito che mostri sul serial monitor la frase "Stai Toccando" quando tocco il touch sensor

soluzione:

#define SENSOR_PIN 2

void setup() 
{ 
   pinMode(SENSOR_PIN, INPUT);
   Serial.begin(9600); 
}

void loop()
{
    if (digitalRead(SENSOR_PIN) == HIGH) 
       Serial.println("Stai toccando");
    else
       Serial.println("Non stai toccando");
}

Touch Sensor

Codice Sorgente B

Obiettivo progetto: Costruire un circuito che mantiene accesso un LED per tutta la durata del tocco sul touch sensor

soluzione:

#define SENSOR_PIN 2
#define LED_PIN 13
void setup() 
{ 
   pinMode(SENSOR_PIN, INPUT);
   pinMode(LED_PIN, OUTPUT);
}

void loop()
{
    digitalWrite(LED_PIN,digitalRead(SENSOR_PIN));
}

Codice Sorgente C

Obiettivo progetto: Costruire un circuito che sfruttando un touch sensor simuli un interruttore che accende/spegne un led

soluzione:

#define SENSOR_PIN 2
#define LED_PIN 13

// Registra il tempo dell'ultimo evento touch
unsigned long lastEvent = 0;
// registra lo stato attuale del led sul pin 13
boolean ledOn = false;
 
void setup() 
{ 
   pinMode(SENSOR_PIN, INPUT);
   pinMode(LED_PIN, OUTPUT);
}
 
void loop()
{
  // Legge lo stato del sensore
  int touchState = digitalRead(SENSOR_PIN);
 
  // Solo quando lo stato è HIGH (il sensore è toccato) cambio lo stato del led
  if (touchState == HIGH) 
  {
    // se la durata del tocco supera i 50 millisecondi allora considero 
    // che il sensore è stato toccato volontariamente.
    if (millis() - lastEvent > 50) 
    {
      // cambio lo stato del LED
      ledOn = !ledOn;
      digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
    }
    // Ricordo l'istante in cui è avvenuto l'ultimo tocco
    lastEvent = millis();
  }
}