En ensom lampe er en lampe, der refererer til folk i storbyen. Folk vil føle sig ensomme, hvis der ikke er støj omkring dem eller ingen taler til dem. På samme måde har denne ensomme lampe også brugernes opmærksomhed. Folk skal hente telefonmodtageren, så denne lampe bliver til ansigt til folk. Hvis folk taler med denne lampe via denne telefonmodtager, tænder denne lampe og ændrer lysstyrken ud fra volumenet. Hvis der ikke er støj i 5 sekunder, vil denne lampe vende tilbage.
forsyninger:
Trin 1: Materialer
De ting du har brug for:
1. Arduino Nano
2. Halvmåtte brødbræt
3. Adafruit 12-Key Kapacitiv Touch Sensor Breakout
4.Electret Mikrofonforstærker
5.USB lightbulb
6. USB Type A Female Breakout
6.Standard servomotor
7.Kobberfoliebånd
8.Container
9. Limpistolen
10. Jumperkabler
Trin 2: Kredsløb
Trin 3: Kode
#omfatte
#omfatte
Adafruit_MPR121 cap = Adafruit_MPR121 ();
int pos = 0; Servo myservo;
const int ledPin1 = 13; const int ledPin2 = 11; bool greenOn = false;
uint16_t lasttouched = 0; uint16_t currtouched = 0;
int soundSensorPin = A0; int soundReading = 0;
unsigned long lastEvent = 0; boolsk ledOn = false; unsigned long lastTalkTime = 0;
void setup () {// sæt din setup kode her, for at køre en gang: Serial.begin (9600); myservo.attach (9); pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT);
mens (! Serial) {// nødvendig for at holde leonardo / micro fra at starte for hurtigt! forsinkelse (10); }
hvis (! cap.begin (0x5A)) {Serial.println ("MPR121 ikke fundet, kontrol ledninger?"); mens (1); }}
void loop () {// sæt din hovedkode her, for at køre gentagne gange: currtouched = cap.touched (); // Serial.println (currtouched);
for (uint8_t i = 0; i <12; i ++) {// det hvis * er * rørt og * var ikke * rørt før, advarsel! if ((currtouched & _BV (i)) &&! (lasttouched & _BV (i))) {Serial.print (i); Serial.println ("touched"); Serial.println (ms () - lastEvent); hvis (millis () - lastEvent> 50) {// skift LED og indstil output ledOn = true; lastTalkTime = millis (); digitalWrite (ledPin1, ledOn? HIGH: LOW); } lastEvent = millis (); } // hvis det * var * rørt og nu * isnt *, varsel! hvis (! (currtouched & _BV (i)) && (lasttouched & _BV (i))) {Serial.print (i); Serial.println ("released"); lastEvent = 0; ledOn = false; }} lasttouched = currtouched; hvis (ledOn) {pos = 180; myservo.write (pos); soundReading = analogRead (soundSensorPin); // Serial.println (soundReading);
hvis (pos = 180 && soundReading> 800) {lastTalkTime = millis (); greenOn = true; } hvis (millis () - lastTalkTime> 8000) {ledOn = false; } else if (millis () - lastTalkTime> 800) {greenOn = false; } // Serial.println (ledOn); } ellers {pos = 0; greenOn = false; myservo.write (pos); digitalWrite (ledPin1, LOW); } // Serial.print (greenOn); Serial.println (soundReading); hvis (greenOn) {int outputValue = map (soundReading, 800, 1023, 0, 255); analogWrite (ledPin2, outputValue); } ellers {digitalWrite (ledPin2, greenOn); } forsinkelse (100); }
Trin 4: Pak det op
Sæt Arduino i bunden.
Lav et andet solidt lag for at stabilisere servomotoren stabilt.
Jeg lavede et telefon håndsæt.
Jeg sætter lydsensoren og jumperkablerne i forbindelse med berøringsføleren inde i håndsættet. Derefter loddede jeg jumperkabler med ledende bånd på håndsættet.
Så brugte jeg uldgarn til at dekorere ledninger.