สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
คุณเคยมีปัญหานี้ไหมว่าเมื่อคุณเดินไปตามถนนขณะถือของหนัก (เช่น ของชำ) และผู้หญิงเดินผ่านมาที่คุณอยากจะให้ทิป fedora ของคุณเพื่อทักทายเธอ แต่ถ้าคุณทำอย่างนั้น คุณจะล้ม สิ่งที่คุณแบก? ฉันไม่ใช่ แต่ในกรณีที่คุณทำ นี่เป็นวิธีแก้ปัญหาที่เรียบง่ายแต่สง่างามสำหรับปัญหานี้
ขั้นตอนที่ 1: วัสดุ
- ตัวควบคุม Arduino
- เซอร์โวมอเตอร์
- สวิตช์ปุ่มกด
- ตัวต้านทานโอห์ม 10k สีน้ำตาล-ดำ-ส้ม
- จำนวนสายไฟที่เพียงพอกับความยาวของคุณ
ขั้นตอนที่ 2: การเชื่อมต่อปุ่มกด
- สายสีดำบนไดอะแกรมเชื่อมต่อพิน 1 ของสวิตช์ (ทางด้านซ้าย) กับพิน GND บน Arduino
- สายสีเหลืองบนไดอะแกรมเชื่อมต่อพิน 2 ของสวิตช์ (ทางด้านขวา) กับพิน 8 บน Arduino
- เชื่อมต่อตัวต้านทาน 10kΩ (สีน้ำตาล-ดำ-ส้ม) กับพิน 2 (ด้านขวา) และเทอร์มินัลอื่น ๆ กับพิน 3.3V บน Arduino
ขั้นตอนที่ 3: การเชื่อมต่อเซอร์โวมอเตอร์
- สายสีขาว (สีเหลืองในแผนภาพ) เชื่อมต่อจากพินสัญญาณของเซอร์โวมอเตอร์ไปยังพิน ~9 ของ Arduino
- สายสีแดงเชื่อมต่อจากพินสัญญาณของเซอร์โวมอเตอร์กับพิน 5V ของ Arduino
- สายสีเหลือง (สีดำในแผนภาพ) เชื่อมต่อจากพินกราวด์ของเซอร์โวมอเตอร์กับพิน GND ของ Arduino
ขั้นตอนที่ 4: การติดเซอร์โวมอเตอร์
- ฉันแกะสลักวงแหวนด้วยดินสอเพื่อผูกไว้กับส่วนที่หมุนของเซอร์โวมอเตอร์ คุณสามารถใช้ลวดหนามในการทำเช่นนั้นได้ แต่ฉันพบว่าการผูกมันด้วยเชือกนั้นปลอดภัยกว่าและแข็งแรงกว่าเล็กน้อย
- ปลายดินสออีกด้านติดหมวกด้านหลัง ฉันดันคลิปหนีบกระดาษเข้าไปที่ขอบหมวกแล้วดัดให้เป็นรูปทรงเพื่อให้มันจับดินสอเข้าที่
- ตัวมอเตอร์เองนั้นจะต้องติดเข้ากับเพลท (หรืออย่างอื่นที่สามารถวางบนหัวของคุณได้โดยไม่ขยับมากเกินไป) ซึ่งฉันละทิ้งไว้ในภาพเพื่อความชัดเจน
ขั้นตอนที่ 5: รหัส
#รวม;
// หมุดปุ่มกด
const int buttonPin = 8;
// เซอร์โวพิน
const int servoPin = 9;
เซอร์โวเซอร์โว;
//สร้างตัวแปรเพื่อเก็บตัวนับและตั้งค่าเป็น0
ตัวนับ int = 0;
การตั้งค่าเป็นโมฆะ ()
{
servo.attach (เซอร์โวพิน);
// ตั้งค่าหมุดปุ่มกดให้เป็นอินพุต:
pinMode (ปุ่มพิน, อินพุต);
}
วงเป็นโมฆะ ()
{
// ตัวแปรท้องถิ่นเพื่อเก็บสถานะปุ่มกด
int buttonState;
// อ่านสถานะดิจิทัลของ buttonPin ด้วยฟังก์ชัน digitalRead () และเก็บค่าไว้ในตัวแปร buttonState buttonState = digitalRead (buttonPin);
//ถ้ากดปุ่ม ให้เพิ่มตัวนับและรอสักครู่เพื่อให้เวลาเราปล่อยปุ่ม
ถ้า (buttonState == ต่ำ)
//จุดไฟ LED
{
เคาน์เตอร์++; ล่าช้า (150);
}
ถ้า (ตัวนับ == 0)
servo.write (20);
// ศูนย์องศา
อื่น ๆ ถ้า (ตัวนับ == 1)
servo.write (80);
// มิฉะนั้นรีเซ็ตตัวนับเป็น 0 ซึ่งรีเซ็ต thr เซอร์โวเป็น 0 องศา
อื่น
ตัวนับ = 0;
}
ขั้นตอนที่ 6: ซ่อนอุปกรณ์อิเล็กทรอนิกส์
- เพื่อให้โครงสร้างดูไม่เด่นขึ้น คุณสามารถดัน Arduino และแผ่นที่มีปุ่มเข้าไปในกล่องเล็กๆ (เช่น ซองซิกาเร็ตต์หรือกล่องการ์ดหนึ่งซอง) แล้วเจาะรูเข้าไป วิธีนี้จะทำให้คุณมองเห็นสิ่งปลูกสร้างได้ชัดเจนโดยที่ไม่ต้องสงสัยว่ามีอะไรเกิดขึ้นอีก