Licht schal­ten mit einem Berührungssensor

Lese­zeit: 3 Minu­ten

Lösung
Seite als PDF

Der Berüh­rungs­sen­sor soll durch Berüh­rung die LED ein­schal­ten und bei erneu­ter Berüh­rung die LED wie­der aus­schal­ten.
Das Pro­gramm muss fest­stel­len, ob die LED gera­de ein- oder aus­ge­schal­tet ist. 

So sieht es aus:

Benö­tig­te Bauteile:

  • LED
  • Wider­stand 220 Ω
  • Berüh­rungs­sen­sor
  • Lei­tungs­dräh­te

Baue die Schal­tung auf:
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Das Pro­gramm muss fest­stel­len, ob die LED gera­de ein- oder aus­ge­schal­tet ist.

Dazu dient eine Varia­ble vom Typ bool. Sie kann nur zwei Wer­te anneh­men:
true (wahr) oder fal­se (falsch).

Ist die LED aus, soll der Wert fal­se sein, leuch­tet die LED, soll der Wert true sein.

bool

Set­ze die Varia­blen:
Die LED soll zunächst aus­ge­schal­tet sein. 

int SENSOR = 7;
int LED = 6;
int SensorLesen;

/*
   setzt den Status der LED
   LED_an true ->  LED an
   LED_an false -> LED  aus
*/
bool LED_an = false;

Defi­nie­re den pin­Mo­de der LED und des Tasters:

void setup() 
{
  pinMode(LED, OUTPUT);
  pinMode(SENSOR, INPUT);
}

Im loop-Teil wird als Ers­tes der Zustand des Sen­sors abgefragt:

void loop()
{
  SensorLesen = digitalRead(SENSOR);
  if (SensorLesen == HIGH)
  {
    delay(200);

    // LED ist aus -> LED_an == false
    if (LED_an == false)
    {
      digitalWrite(LED, HIGH);

      // LED_an auf true (an) setzen
      LED_an = true;
    }

    // LED ist an -> LED_an == true
    else
    {
      digitalWrite(LED, LOW);
      
      // LED_an auf false (aus) setzen
      LED_an = false;
    }
  }
}

Es geht auch kürzer:

int SENSOR = 7;
int LED = 6;
int SensorLesen;

/*
   setzt den Status der LED
   LED_an true ->  LED an
   LED_an false -> LED  aus
*/
bool LED_an = false;
void setup() 
{
  pinMode(LED, OUTPUT);
  pinMode(SENSOR, INPUT);
}

void loop()
{
  // Taster lesen
  SensorLesen = digitalRead(SENSOR); 

  // Sensor berührt
  if (digitalRead(SENSOR) == HIGH)
  {
    delay(200);

    // Zustand von LED_an umkehren
    // aus true wird false, aus false wird true 
    LED_an = !LED_an;

     // LED schalten 
     digitalWrite(LED, LED_an);
   }
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 11. Okt 2023 @ 8:55