A beginner-friendly Arduino project that turns a button press or touch-sensor input into a short message on a 16×2 LCD. Eight inputs provide six everyday phrases, Repeat, and Clear, with buzzer feedback.
No Arduino? You can run the project in your browser using Wokwi. No physical board, sensors, wiring, or Arduino IDE are needed for the simulation.
Start a new Wokwi project · Watch/download the demo video · Circuit diagram
Actual Wokwi screenshot extracted from the supplied demonstration video:
Open the full demo video — MP4, about 14 seconds
The GIF plays directly in the README. The original MP4 is included in the repository; use the link to open it, or download it if GitHub shows a file page instead of a player. The video is preserved unchanged.
- Displays six fixed phrases on an I2C LCD.
- Prints the same messages in Serial Monitor.
- Beeps when a message is selected, with a longer Help beep.
- Repeats the last message or clears it.
- Requires all inputs to be released between actions.
- Rejects multiple inputs detected together.
- Uses short functions, comments and straightforward
if / elsestatements.
This is a fixed-phrase communication prototype, not a sign-language translator or a Braille keyboard. It may be useful for someone who prefers tactile input, including a blind person who also needs communication assistance. Blindness itself does not imply an inability to speak. The LCD is for the communication partner; raised labels help a user locate inputs. The buzzer acknowledges actions but does not speak the selected phrase.
On GitHub, select Code → Download ZIP, then extract it. If you already have this project ZIP, simply extract it.
Open https://wokwi.com/projects/new/arduino-uno on a computer browser. This is a new-project page, not a saved TouchTalk simulation link.
- Open the downloaded
sketch.inowith Notepad or another text editor. - Copy its complete contents.
- In Wokwi, click the sketch.ino tab.
- Select all the starter code and replace it with the copied code.
Keep this setting:
const bool useWokwi = true;- Open the downloaded
diagram.jsonin a text editor and copy all its contents. - Click Wokwi's diagram.json tab.
- Replace the entire existing JSON with the downloaded contents.
The Uno, LCD, buzzer, eight buttons and connecting wires should appear automatically. You do not need to place each part by hand.
Open Library Manager, press +, search for LiquidCrystal I2C, and add it. Alternatively, create libraries.txt from the editor's file menu and paste the included file contents:
LiquidCrystal I2C
Wire.h is supplied with the Arduino core; no separate installation is required for it.
Click the green ▶ Start simulation button. After startup, the screen shows:
TouchTalk ready
Touch one pad
Click and briefly hold a button, then release it. With the circuit area focused, keyboard keys 1–8 select the same inputs. Hold and release for roughly 0.1 seconds each at normal simulation speed; a slow browser may need longer.
| Button / key | Arduino pin | LCD action |
|---|---|---|
| 1 — YES | D2 | Yes |
| 2 — NO | D3 | No |
| 3 — WATER | D4 | I need water |
| 4 — FOOD | D5 | I need food |
| 5 — TOILET | D6 | Need the toilet |
| 6 — HELP | D7 | Please help me |
| 7 — REPEAT | D8 | Repeat the previous message |
| 8 — CLEAR | D9 | Forget the previous message and return to ready |
Example: choose 3 WATER. The LCD shows My message: / I need water, while Serial Monitor shows:
MESSAGE: I need water
Select 7 REPEAT to send it again. Select 8 CLEAR, then 7 REPEAT: the display shows No message yet.
Wokwi pushbuttons represent the digital outputs of touch modules. This tests the program and simulated circuit, not real capacitive sensitivity. Audio output consists of buzzer tones, not speech.
Use Wokwi's Save button and follow its current account/privacy prompts. After saving, copy your project URL into this README if you want visitors to open your assembled simulation directly. No permanent Wokwi project URL is included in this package.
| Code | Purpose |
|---|---|
setup() |
Initializes the input pins, LCD, Serial Monitor and buzzer once |
loop() |
Repeatedly checks inputs and selects an action |
readButtons() |
Returns 0 for none, 1–8 for one input, or −1 for multiple inputs |
showOnDisplay() |
Prints two lines on the LCD |
sendMessage() |
Remembers and displays the phrase, logs it and beeps |
lastMessage |
Stores the phrase used by Repeat |
waitingForRelease |
Prevents a held input from repeatedly sending |
delay(40) |
Separates two readings for a simple debounce check |
To follow the Water example: readButtons() returns 3, loop() enters else if (button == 3), and sendMessage("I need water") updates the outputs.
The debounce method is intentionally simple and blocking: it compares two readings 40 ms apart. It does not prove the signal was stable throughout that interval. Very short presses can be ignored; an action already sent cannot be undone by a later second touch.
You need an Arduino Uno, eight active-HIGH momentary TTP223 touch modules, a 16×2 LCD with I2C backpack, a small low-current passive piezo buzzer, breadboard, jumper wires and a USB cable.
| Part connection | Destination |
|---|---|
| Touch-module OUT pins 1–8 | D2–D9 respectively |
| All touch-module VCC pins | 5V |
| All touch-module GND pins | GND |
| LCD VCC / GND | 5V / GND |
| LCD SDA / SCL | A4 / A5 |
| Piezo + / − | D12 / GND |
- Disconnect power before wiring. Follow each module's printed pin labels; physical pin order varies.
- Verify the sensors output LOW at rest and HIGH while touched. Use momentary mode, not toggle mode.
- Change
const bool useWokwi = true;toconst bool useWokwi = false;. - For Arduino IDE, create a separate folder named
TouchTalk, copysketch.inointo it asTouchTalk.ino, and open that file. Keep only one.inocopy in that folder. - Install LiquidCrystal I2C by Frank de Brabander, choose Arduino Uno and the connected board's port, then upload.
- Leave sensors untouched while powering on so they can calibrate.
For physical pushbuttons wired to GND instead of touch modules, keep useWokwi = true; that mode also works with real active-low buttons.
Choose raised labels or Braille labels with the intended user. Place labels beside active touch areas, add a clear orientation marker, and leave enough space between pads. Touch sends immediately after the simple debounce check; there is no preview/confirm stage. Actual usability and accidental activation need testing with the user.
This beginner version contains no DFPlayer, MP3 playback, speech recognition or text-to-speech. HELP only displays a local message and beeps; it does not call or alert anyone remotely. It is not a sole emergency communication system and does not provide tactile output for deafblind users.
| Problem | Check |
|---|---|
LiquidCrystal_I2C.h: No such file |
Add LiquidCrystal I2C in Library Manager |
| Only an Uno appears | Replace the complete diagram.json, not only sketch.ino |
| A quick click does nothing | Hold longer, then release all inputs; wait for startup to finish |
| Simulation is slow | Watch simulated time; Ctrl-click (Cmd-click on macOS) can hold a button, and another click releases it |
| Circuit is outside the visible area | Use the circuit menu's Fit option |
| LCD is blank on hardware | Check power, contrast, SDA/SCL and the backpack's I2C address; code uses 0x27 |
| Touch sensor response is reversed | Check useWokwi = false and active-HIGH momentary module configuration |
| No spoken words | Expected: this version only produces tones |
| Wokwi rejects an uploaded file | Starter filenames already exist; replace their text instead |
| File | Purpose |
|---|---|
sketch.ino |
Beginner-friendly Arduino program |
diagram.json |
Complete Wokwi circuit |
libraries.txt |
Display-library dependency |
assets/wokwi-preview.png |
Screenshot from the supplied demo |
assets/wokwi-demo.gif |
README animation derived from the demo |
assets/wokwi-demo.mp4 |
Original supplied video, unchanged |
assets/circuit-diagram.png |
Pin-level wiring diagram for this version |
docs/GITHUB_SETUP.md |
Publishing instructions |
docs/TESTING.md |
Evidence, checks and limitations |
The supplied video shows the beginner sketch running in Wokwi with phrase output in Serial Monitor. The preview is extracted from that recording. See testing notes for separately checked code behavior and remaining physical-hardware checks.
Ankit Kumar Panda


