โคมไฟ Lonely เป็นโคมไฟที่บ่งบอกถึงผู้คนในเมือง ผู้คนจะรู้สึกเหงาหากไม่มีเสียงรบกวนรอบข้างหรือไม่มีใครพูดคุยกับพวกเขา เช่นเดียวกับที่โคมไฟอันโดดเดี่ยวนี้ต้องการความสนใจจากผู้คน ผู้คนต้องไปรับโทรศัพท์จากนั้นโคมไฟนี้จะหันไปหาคน หากผู้คนพูดคุยกับโคมไฟนี้ผ่านตัวรับสัญญาณโทรศัพท์หลอดไฟนี้จะเปิดและเปลี่ยนความสว่างตามระดับเสียง หากไม่มีสัญญาณรบกวนเป็นเวลา 5 วินาทีหลอดไฟนี้จะหันกลับ
วัสดุ:
ขั้นตอนที่ 1: วัสดุ
สิ่งที่คุณต้องการ:
1. Arduino Nano
2. เขียงหั่นขนมขนาดครึ่ง
3. ฝ่าวงล้อมเซ็นเซอร์เซนเซอร์แบบสัมผัส 12 คีย์ของ Adafruit
4. เครื่องขยายเสียงไมโครโฟนไฟฟ้า
หลอดไฟ 5.USB
6. USB Type A การฝ่าวงล้อมหญิง
6. เซอร์โวมอเตอร์มาตรฐาน
7. เทปฟอยล์ทองแดง
8.Container
9. ปืนกาว
10. สายจัมเปอร์
ขั้นตอนที่ 2: วงจร
ขั้นตอนที่ 3: รหัส
#include
#include
Adafruit_MPR121 cap = Adafruit_MPR121 ();
int pos = 0; Servo myservo;
const int ledPin1 = 13; const int ledPin2 = 11; บูล greenOn = false;
uint16_t lasttouched = 0; uint16_t currtouched = 0;
int soundSensorPin = A0; int soundReading = 0;
lastEvent ที่ไม่ได้ลงชื่อยาว = 0; บูลีน ledOn = false; lastTalkTime = 0 ที่ไม่ได้ลงชื่อ
การตั้งค่าเป็นโมฆะ () {// ใส่รหัสการตั้งค่าของคุณที่นี่เพื่อทำงานครั้งเดียว: Serial.begin (9600); myservo.attach (9); pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT);
ในขณะที่ (! อนุกรม) {// จำเป็นเพื่อป้องกันการเริ่มต้นเร็วเกินไป! ล่าช้า (10); }
ถ้า (! cap.begin (0x5A)) {Serial.println ("ไม่พบ MPR121 ตรวจสอบสายไฟหรือไม่"); ในขณะที่ (1); }}
void loop () {// ใส่รหัสหลักของคุณที่นี่เพื่อทำงานซ้ำ ๆ : currtouched = cap.touched (); // Serial.println (currtouched);
สำหรับ (uint8_t i = 0; i <12; i ++) {// ถ้าเป็น * * * * * * * * สัมผัสและ * ไม่ได้ * สัมผัสก่อนแจ้งเตือน! ถ้า ((ต่อคิว & _BV (i)) &&! (ล่าสุด & _BV (i)))) {Serial.print (i); Serial.println ("สัมผัส"); Serial.println (มิลลิวินาที () - lastEvent); if (millis () - lastEvent> 50) {// toggle LED และตั้งค่าเอาท์พุท ledOn = true; lastTalkTime = millis (); digitalWrite (ledPin1, ledOn? HIGH: LOW); } lastEvent = millis (); } // ถ้ามัน * ถูก * แตะแล้วตอนนี้ * ไม่ใช่ *, แจ้งเตือน! if (! (currtouched & _BV (i)) && (lasttouched & _BV (i))) {Serial.print (i); Serial.println ("ปล่อยตัว"); lastEvent = 0; ledOn = false; }} lasttouched = currtouched; if (ledOn) {pos = 180; myservo.write (POS); soundReading = analogRead (soundSensorPin); // Serial.println (soundReading);
if (pos = 180 && soundReading> 800) {lastTalkTime = millis (); greenOn = true; } if (millis () - lastTalkTime> 8000) {ledOn = false; } ถ้า if (millis () - lastTalkTime> 800) {greenOn = false; } // Serial.println (ledOn); } else {pos = 0; greenOn = false; myservo.write (POS); digitalWrite (ledPin1, LOW); } // Serial.print (greenOn); Serial.println (soundReading); if (greenOn) {int outputValue = map (soundReading, 800, 1023, 0, 255); analogWrite (ledPin2, outputValue); } else {digitalWrite (ledPin2, greenOn); } ล่าช้า (100); }
ขั้นตอนที่ 4: สรุป
ใส่ Arduino ที่ด้านล่าง
สร้างเลเยอร์ที่สองสำหรับกาวเซอร์โวมอเตอร์อย่างเสถียร
ฉันทำเครื่องโทรศัพท์
ฉันใส่เซ็นเซอร์เสียงและสายจัมเปอร์ที่เชื่อมต่อกับเซ็นเซอร์สัมผัสภายในโทรศัพท์ จากนั้นฉันก็บัดกรีสายจัมเปอร์พร้อมเทปนำไฟฟ้าบนโทรศัพท์มือถือ
จากนั้นฉันก็ใช้ไหมพรมเพื่อตกแต่งสายไฟ