Kredsløb

En ensom lampe: 5 trin (med billeder)

Лампа - светильник НЛО от Китайцев UFO 20W

Лампа - светильник НЛО от Китайцев UFO 20W

Indholdsfortegnelse:

Anonim

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 #include "Adafruit_MPR121.h"

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.

Trin 5: Demo