RoboJax Touch Zähler V2 mit LCD1602-I2C Display
Einführung
Dieser Leitfaden zeigt Ihnen, wie Sie einen einfachen, aber hochfunktionalen Touch-Zähler mit einem Arduino Uno, einem TTP223B kapazitiven Touch-Sensor und einem I2C-fähigen LCD1602-Display bauen können. Dieses Projekt, bekannt als Robojax Touch Counter V2, ist ein perfekter Ausgangspunkt für alle, die intuitive, berührungsbasierte Eingaben in ihre Elektronikprojekte integrieren möchten. Anstelle eines mechanischen Knopfs erhöht eine einfache Berührung auf dem Pad des Sensors einen Zähler, dessen aktuelle Zahl deutlich auf dem LCD-Bildschirm angezeigt wird. Ein separater Druckknopf ermöglicht es Ihnen, den Zähler jederzeit auf null zurückzusetzen.


Dieses Projekt ist nicht nur eine Lernübung; es hat eine Vielzahl von praktischen Anwendungen. Hier sind einige Ideen, um Sie zu inspirieren:
- Personenzähler:Einen einfachen Gerät herstellen, um die Anzahl der Personen zu zählen, die einen Raum oder einen bestimmten Bereich betreten.
- Produktionslinienzähler:Verwenden Sie es, um Artikel zu zählen, während sie einen Punkt auf einem kleinen Förderband oder in einem Montageprozess passieren.
- Teilnehmerverzeichnis:Bauen Sie ein einfaches System, um die Anwesenheit in einer Klasse oder Veranstaltung zu verfolgen.
- Interaktive Kunstinstallation:Verwenden Sie es als Komponente in einem Kunstwerk, das auf die Anzahl der Berührungen reagiert.
- Bildungswerkzeug:Lehren Sie die Grundlagen von Sensoren, Interrupts und Anzeige-Schnittstellen auf eine unterhaltsame, praktische Weise.
Am Ende dieses Leitfadens werden Sie über einen voll funktionsfähigen Touch-Zähler und ein solides Verständnis verfügen, wie Sie Touch-Sensoren, I2C-Displays und Benutzereingaben in Ihre eigenen Arduino-Projekte integrieren.
Hardware Komponenten
Um dieses Projekt zu bauen, benötigen Sie die folgenden Komponenten:
- Arduino Uno (oder kompatibles Board)
- TTP223B oder TTP223 kapazitiver Touch-Sensor-Modul (rote oder blaue Variante)
- LCD1602-Display mit I2C-Schnittstellenmodul
- Tastendruck (zum Zurücksetzen)
- Jumperdrähte
- Brotbrett
Verdrahtungsanleitung
Die Verkabelung für dieses Projekt ist unkompliziert, aber es ist wichtig zu beachten, dass die Pinbelegung der roten und blauen Touchmodule unterschiedlich ist. Hier ist eine Übersicht, wie alles verbunden wird.
Zuerst verbinden wir den Touchsensor. Für dieblaues Modul, die Pinbelegung ist Signal, VCC und Masse. Verbinden Sie den Sign_Pin mit dem Arduino-Pin 2, VCC mit 5V und Masse mit GND. Für dierotes Modul, die Pinreihenfolge ist Ground, Signal und VCC (im Video bei 02:57). Verbinden Sie den Ground-Pin mit GND, den Signal-Pin (Mitte) mit Arduino-Pin 2 und den VCC-Pin mit 5V (im Video bei 03:01).
Als nächstes verbinden Sie das LCD-Display. Die I2C-Schnittstelle verwendet nur vier Drähte. Verbinden Sie den GND-Pin des Displays mit dem GND des Arduino, den VCC-Pin mit 5V, den SDA-Pin mit dem analogen Pin A4 des Arduino und den SCL-Pin mit dem analogen Pin A5 des Arduino (im Video bei 03:55). Dies sind die richtigen Pins für das Arduino Uno. Wenn Sie ein anderes Board wie ein Arduino Mega verwenden, befinden sich die SDA- und SCL-Pins an 20 bzw. 21 (im Video bei 04:18).
Verbinden Sie schließlich den Reset-Druckknopf. Platzieren Sie den Knopf auf dem Breadboard und verbinden Sie einen seiner Pins mit Arduino GND und den anderen mit dem Arduino-Pin 12 (im Video bei 03:33). Die Reihenfolge dieser Drähte ist nicht wichtig.
Dieses Projekt benötigt keine Widerstände für den Touchsensor oder den Knopf, da der Code den internen Pull-Up-Widerstand des Arduino für den Knopf verwendet.
Code-Erklärung
Der Code für dieses Projekt ist so gestaltet, dass er einfach zu verstehen und zu modifizieren ist. Die wichtigsten benutzerkonfigurierbaren Teile befinden sich oben im Sketch.
Hier ist der Abschnitt des Codes, den Sie höchstwahrscheinlich anpassen möchten:
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 500;//millisecond delay between each touch
int count=0;// variable holding the count numberLass uns erläutern, was jede dieser Einstellungen bewirkt:
- LCD-Adresse:Das
lcd(0x27, 16, 2)Zeile richtet die Anzeige ein. Die0x27ist die I2C-Adresse Ihres spezifischen LCD-Moduls. Die meisten Module verwenden diese Adresse, aber wenn Ihr Display nicht funktioniert, könnte es sein0x3FSie können diesen Wert ändern, um ihn an Ihr Display anzupassen. - touchPin:Dieser Constant definiert den Arduino-Pin, an den der Signalkabel Ihres Berührungssensors angeschlossen ist. Sie können dies ändern, wenn Sie einen anderen Pin verwenden möchten.
- resetPin:Diese Konstante definiert den Arduino-Pin für Ihren Reset-Button. Standardmäßig ist er auf Pin 12 eingestellt.
- touchDelay:Dies ist eine entscheidende Einstellung. Sie steuert die minimale Zeit in Millisekunden zwischen zwei registrierten Berührungen (im Video bei 05:13). Ein Wert von 500 ms verhindert versehentliche Mehrfachzählungen durch einen einzigen Touch oder durch sehr schnelle Taps. Wenn Sie möchten, dass der Zähler reaktionsschneller ist, können Sie diesen Wert auf etwa 100 ms reduzieren (im Video bei 10:31).
DercountDie Variable ist ein Integer, der den aktuellen Zählerstand speichert. Sie wird auf null initialisiert und bei jeder Berührung des Sensors erhöht. Der Code selbst kümmert sich um die Logik des Lesens des Sensors, das Aktualisieren des Displays und das Überprüfen des Rücksetzknopfs, daher müssen Sie sich darüber keine Gedanken machen. Passen Sie einfach die oberen Konstanten an, um Ihre spezifische Konfiguration und das gewünschte Verhalten zu berücksichtigen.
Live-Projektdemonstration
Sobald Sie alles verkabelt haben und den Code auf Ihren Arduino hochgeladen haben, funktioniert das Projekt wie folgt:
Wenn Sie das Gerät einschalten, zeigt das LCD für einige Sekunden "Robojax Touch" und "Counter V2" an, bevor es mit dem Zählen beginnt. Jedes Mal, wenn Sie das Sensorfeld berühren, erhöht sich der Zähler um eins, und der neue Wert wird in der untersten Zeile des LCD neben dem Wort "Touched:" angezeigt (im Video bei 07:51). Dieselben Informationen werden auch im Serial Monitor der Arduino IDE zum Debuggen oder Protokollieren ausgegeben.
Um den Zähler zurückzusetzen, drücken Sie einfach die Taste. Das LCD wird gelöscht und zeigt "Zurückgesetzt" an, und der Zähler wird auf Null zurückgesetzt (im Video bei 08:49). Das Gerät ist jetzt bereit, wieder zu zählen. Diese einfache und klare Rückkopplungsschleife macht es einfach, das Projekt in Echtzeit arbeiten zu sehen.
Kapitel
- [00:00] Einführung und Projektübersicht
- [00:44] Komponenten und wie sie funktionieren
- [02:30] Verdrahtungsanleitung für den Touch-Sensor und den Knopf
- [03:41] Verdrahtungsleitfaden für das LCD-Display
- [04:26] Code-Erklärung und -Einrichtung
- [06:47] Verständnis der Hauptschleife und der Touch-Logik
- [09:25] Live-Demonstration und Testen
- [11:08] Fazit und zukünftige Projektideen
//*
* This is Arduino touch counter V2 using TTP223/TTP223B and LCD1602-I2C
* This program will function as a counter. Every time the touch module is touched,
* the counter increments by 1. The count number is displayed on the LCD1602 display.
* We have a reset button to restart the counting from zero.
*
* Watch video instruction for this video: https://youtu.be/5A9jPD5nUCw
*
* Written by Ahmad Shamshiri on Saturday, 27th of October at 16:28 in Ajax, Ontario, Canada
* Get this code from Robojax.com
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 500;//millisecond delay between each touch
int count=0;// variable holding the count number
void setup() {
// Robojax.com Touch counter 20181027
// initialize the LCD
lcd.begin();
lcd.backlight();// turn the backlight ON for the LCD
lcd.print("Robojax Touch");
lcd.setCursor(0,1);
lcd.print("Counter V2");
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Touch Counter V2");
pinMode(touchPin,INPUT);// define a pin for touch module
pinMode(resetPin,INPUT_PULLUP);// define a pin for reset button
// see video ( link in the video description) on using PULLUP
delay(3000);// give time to user to read the display at the beginning
// Robojax.com Touch counter 20181027
}
void loop() {
// Robojax.com Touch counter 20181027
int touchValue = digitalRead(touchPin);// read touchPin and store it in touchValue
// if touchValue is HIGH
if(touchValue == HIGH)
{
count++;// increment the count
lcd.clear();// clear previous values from screen
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Touched:");
lcd.setCursor(9,1);
lcd.print(count);
Serial.print("Touched ");//print the information
Serial.print(count);//print count
Serial.println(" times.");
delay(touchDelay);// touch delay time
}
// if reset switch is pushed
if(digitalRead(resetPin) == LOW)
{
lcd.clear();// clear previous values from screen
count =0;// reset the counter;
Serial.println("Counter Resetted.");//print the information
lcd.setCursor(0,0);
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Resetted");
}
// Robojax.com Touch counter 20181027
}
Dinge, die Sie vielleicht brauchen
-
Amazon
-
AmazonLCD1602-I2C bei Amazon kaufenamzn.to
-
eBayKaufen Sie LCD1602-I2C bei eBay.ebay.us
-
AliExpressKaufe LCD1602-I2C bei AliExpresss.click.aliexpress.com
-
AliExpressKaufen Sie 10 Stück LCD1602-I2C von AliExpresss.click.aliexpress.com
Ressourcen & Referenzen
Dateien📁
Fritzing-Datei
-
LCD LCD1602-I2C-Modul mit 4 Drähten
LCD1602-I2C.fzpz0.01 MB
Andere Dateien
-
TP223 Datenblatt
robojax-0492_TTP223_Datasheet.pdf0.24 MB -
TTP223B Benutzerhandbuch
robojax-TTP223B_manual.pdf0.15 MB -
LCD1602 LiquidCrystal Bibliothek
robojax-LCD1602_LiquidCrystal.zip