กลับไปหน้ารวมไฟล์
project-on-tap-sensor-b498f4-en.md
const int  buttonPin = 3;    // the pin that the pushbutton is attached to
const int led1 = 12;
const int led2 = 11;
const int led3 = 10;
const int led4 = 9;
// the pin that the LED is attached to
// Variables will change:
int PushCounter = 0;
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(led1, OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
buttonCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonCounter);
}
else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println("off");
}
}
// save the current state as the last state,
//for next time through the loop
lastButtonState = buttonState;
// turns on the LED every four button pushes by
// checking the modulo of the button push counter.
// the modulo function gives you the remainder of
// the division of two numbers:
if (buttonCounter % 2 == 0) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
} else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}
}

EXPANDED TECHNICAL DETAILS

Tactile Pulse Detection Interaction

This project explores the use of a simple "Tap" or knock sensor to create a touchless, vibration-based interface for home appliances.

  • Piezoelectric Vibration Sensing: Uses a Piezo element as an analog input. When the surface is tapped, the Piezo generates a small voltage spike ($V_{out}$). The Arduino samples this using its ADC and applies a "Signal Threshold" to filter out background noise.
  • Toggle State Machine: A single tap is programmed to flip a software "State." This state then drives a 5V Relay, allowing the user to turn a desk lamp or a fan on/off just by knocking on the table.

Sensitivity Calibration

  • Automatic Baseline Nulling: Includes a "Self-Calibration" routine on startup; the Arduino samples the room's ambient vibration level (e.g., from a nearby PC fan) and sets the trigger threshold just above it.

ข้อมูล Frontmatter ดั้งเดิม

title: "Project on tap sensor"
description: "Magical code"
author: "stt4236"
category: ""
tags:
  - "audio"
  - "communication"
  - "internet of things"
views: 2736
likes: 4
price: 1499
difficulty: "Intermediate"
components:
  - "1x Breadboard (generic)"
  - "1x tap module"
  - "1x Jumper wires (generic)"
  - "1x Arduino UNO"
  - "3x LED (generic)"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "26cff26a455b560785513042dbb889a9b6b1648e3dd309d49ee998b34700d911"
encryptedPayload: "U2FsdGVkX19TjTxhUjWRrbnEj/QtS9pUYp7MYna0RXH0ciYCLW8whQNYNlUrbKsBy8jJvbRaUOI0Kdzoto/W9pTSl+qZz/8x9n14MSqIpA4="
seoDescription: "Build a tap Sensor project with Arduino featuring magical code for high-precision detection. Ideal for DIY electronics makers."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/project-on-tap-sensor-b498f4_cover.jpg"
lang: "en"