Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Uno Projekt zwei kapazitive Touch Sensoren und Relaisshield schalten

Posted on 1. März 202130. April 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen wie du mit zwei kapazitiven Touch Sensoren ein Relaisshield steuern kannst.

Schaltung - Arduino UNO mit Relaisshield, Touch Sensor & LED
Schaltung – Arduino UNO mit Relaisshield, Touch Sensor & LED

  • Ziel
  • Hintergrund zu diesem kleinen Projekt
  • benötigte Bauteile für dieses Projekt
  • Aufbau & Anschluss
  • Programmieren
    • Schritt 1 – definieren der Pins
    • Schritt 2 – definieren welche Pins als Ein / Ausgang dienen sollen
    • Schritt 3 – lesen der Zustände der kapazitiven Touch Sensoren
    • Schritt 4 – aktivieren / deaktivieren der Relais
    • Schritt 5 – starten / stoppen eines „Timers“ für ein Relais
    • der fertige Code

Ziel

Das Ziel dieses Projektes ist es mit einem Touch Sensor ein Relais zu schalten welches „selbständig“ nach 5 Sekunden abfällt und der andere Touch Sensor ein Relais schalten kann.

Hintergrund zu diesem kleinen Projekt

Die Idee zu diesem Projekt kam über ein Kommentar zum Beitrag Arduino Projekt: Relaiskarte mit Reedkontakten steuern. 

Solltest du auch Ideen haben oder Hilfe benötigen, dann kommentiere einfach den entsprechenden Beitrag oder schreibe mir per E-Mail oder über das Kontaktformular.

benötigte Bauteile für dieses Projekt

Für den Nachbau dieses Projektes benötigst du folgende Bauteile:

  • einen Arduino UNO*,
    • ein USB Datenkabel
  • zwei kapazitive Touch Sensoren,
  • min. ein zweifach Relaisshield
  • diverse Breadboardkabel,
  • ein 170 / 400 Pin Breadboard

* Du kannst natürlich auch jeden anderen Microcontroller der Arduino Familie nutzen. Du benötigst lediglich 4 digitale Pins sowie GND und 5V somit kannst du auch den etwas günstigeren Arduino Nano verwenden. 

Zusätzlich verbaue ich noch eine grüne, 5mm LED (mit dazugehörigem 220 Ohm Widerstand)

Aufbau & Anschluss

BauteilArduino UNO
LED 
Anodedigitaler Pin D5
KathodeGND
kapazitiver Touch Sensor I 
GNDGND
I/Odigitaler Pin D9
VCC5V
kapazitiver Touch Sensor II 
GNDGND
I/Odigitaler Pin D8
VCC5V
zweifach Relaisshield 
VCC5V
IN1digitaler Pin D7
IN2digitaler Pin D6
GNDGND
Aufbau der Schaltung "Arduino UNO mit Touch Sensor und Relaisshield"
Aufbau der Schaltung „Arduino UNO mit Touch Sensor und Relaisshield“

Programmieren

Für das Programmieren des Sketches verwende ich die Arduino IDE. Du benötigst für das Programm keine zusätzlichen Bibliotheken!

Schritt 1 – definieren der Pins

Zunächst definieren wir an welche Pins wir die Sensoren / Aktoren angeschlossen haben. Ich verwende hier die Schreibweise mit „#define“ natürlich kannst du auch mit „int sensor = 5;“ arbeiten, das Ergebnis ist jeweils das gleiche. Der Vorteil mit „#define“ ist das weniger Speicherplatz belegt  / reserviert wird.

#define led 5

#define relais1 6
#define relais2 7

#define touch1 8
#define touch2 9

Schritt 2 – definieren welche Pins als Ein / Ausgang dienen sollen

Nachdem wir definiert haben an welche Pins die Sensoren / Aktoren angeschlossen sind müssen wir noch definieren ob diese als Eingang (für die Touch Sensoren) oder als Ausgang (LED & Relaisshield) agieren sollen.

void setup() {
  pinMode(led, OUTPUT);
  
  pinMode(relais1, OUTPUT);
  pinMode(relais2, OUTPUT);
  
  pinMode(touch1, INPUT);
  pinMode(touch2, INPUT);
}

Zusätzlich wird in der Funktion „setup“ noch die Relais initial deaktiviert.

digitalWrite(relais1, HIGH);
digitalWrite(relais2, HIGH);

Schritt 3 – lesen der Zustände der kapazitiven Touch Sensoren

Mit der Funktion „digitalRead“ können wir lesen ob der Touch Sensor berührt wurde. die Funktion liefert uns ein HIGH / 1 zurück wenn dieser berührt wurde, ansonsten LOW oder 0.

void loop() {
  if(digitalRead(touch1)==HIGH){}
  
  if(digitalRead(touch2)==HIGH){}
}

Schritt 4 – aktivieren / deaktivieren der Relais

In die zuvor geschriebenen If-Bedingungen schreiben wir nun welche Aktion stattfinden soll. 

Wenn der Touch Sensor 1 betätigt wird soll das Relais1 sowie die LED aktiviert werden.
Wenn der Touch Sensor 2 betätigt wird soll das Relais2 aktiviert bzw. deaktiviert werden.

int relais2Status = 0;

void loop() {
  if(digitalRead(touch1)==HIGH){
    digitalWrite(relais1, LOW);
    digitalWrite(led, HIGH);
  }
  
  if(digitalRead(touch2)==HIGH){
    relais2Status = relais2Status==0?1:0;
    digitalWrite(relais2, relais2Status);
  }
}

Schritt 5 – starten / stoppen eines „Timers“ für ein Relais

Im letzten Schritt programmieren wir eine Funktion welche prüft ob eine Zeitspanne überschritten wurde um dann die LED sowie das Relais zu deaktivieren.

Wir benötigen dazu eine Konstante welche den Wert für den Abstand zwischen zwei Zeiten festlegt sowie eine Variable zum speichern des letzten Zeitstempels.

const int PAUSE = 5000;
int lastMillis = 0;

void setup(){
   doTimer();
   lastMillis = millis();
   ...
}

void doTimer(){
  int currentMillis = millis();
  if((currentMillis - PAUSE) > lastMillis){
    lastMillis = currentMillis;
    digitalWrite(relais1, HIGH);
    digitalWrite(led, LOW);
  }  
}

der fertige Code

#define led 5

#define relais1 6
#define relais2 7

#define touch1 8
#define touch2 9

int relais2Status = 0;
const int PAUSE = 5000;
int lastMillis = 0;

void setup() {
  pinMode(led, OUTPUT);
  
  pinMode(relais1, OUTPUT);
  pinMode(relais2, OUTPUT);
  
  pinMode(touch1, INPUT);
  pinMode(touch2, INPUT);

  digitalWrite(relais1, HIGH);
  digitalWrite(led, LOW);
  
  digitalWrite(relais2, LOW);

  lastMillis = millis();
}

void loop() {
  doTimer();
  
  if(digitalRead(touch1)==HIGH){
    digitalWrite(relais1, LOW);
    digitalWrite(led, HIGH);
  }
  
  if(digitalRead(touch2)==HIGH){
    relais2Status = relais2Status==0?1:0;
    digitalWrite(relais2, relais2Status);
  }
}

void doTimer(){
  int currentMillis = millis();
  if((currentMillis - PAUSE) > lastMillis){
    lastMillis = currentMillis;
    digitalWrite(relais1, HIGH);
    digitalWrite(led, LOW);
  }  
}

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}