Одинокая лампа - это лампа, намекающая на людей в мегаполисе. Люди будут чувствовать себя одинокими, если вокруг них нет шума или никто с ними не разговаривает. Точно так же, эта одинокая лампа также требует внимания людей. Люди должны взять телефонную трубку, тогда эта лампа повернется лицом к людям. Если люди разговаривают с этой лампой через этот телефонный приемник, эта лампа включится и изменит яркость в зависимости от громкости. Если в течение 5 секунд не будет шума, эта лампа погаснет.
Расходные материалы:
Шаг 1: Материалы
Вещи, которые вам нужны:
1. Ардуино Нано
2. Половинный макет
3. Отключение емкостного сенсорного датчика с 12 клавишами Adafruit
Усилитель микрофона 4.Electret
5.USB лампочка
6. USB Type A Female Breakout
6. Стандартный серводвигатель
7. медная фольга
8.Container
9. Клеевой пистолет
10. Перемычки
Шаг 2: Схема
Шаг 3: Код
#включают
#включают
Adafruit_MPR121 cap = Adafruit_MPR121 ();
int pos = 0; Сервомеханизм;
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; логическое значение ledOn = false; unsigned long lastTalkTime = 0;
void setup () {// поместите здесь свой установочный код, чтобы запустить его один раз: Serial.begin (9600); myservo.attach (9); pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT);
while (! Serial) {// необходимо, чтобы leonardo / micro не запускался слишком быстро! задержка (10); }
if (! cap.begin (0x5A)) {Serial.println ("MPR121 не найден, проверьте подключение?"); пока (1); }}
void loop () {// поместите ваш основной код здесь для повторного запуска: currtouched = cap.touched (); // Serial.println (currtouched);
for (uint8_t i = 0; i <12; i ++) {// если оно * было * затронуто и * не было * затронуто ранее, будьте осторожны! if ((currtouched & _BV (i)) &&! (lasttouched & _BV (i))) {Serial.print (i); Serial.println ("тронут"); Serial.println (Миллис () - lastEvent); if (millis () - lastEvent> 50) {// переключаем светодиод и устанавливаем выход 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 (позы); soundReading = analogRead (soundSensorPin); // Serial.println (soundReading);
if (pos = 180 && soundReading> 800) {lastTalkTime = millis (); greenOn = правда; } if (millis () - lastTalkTime> 8000) {ledOn = false; } else if (millis () - lastTalkTime> 800) {greenOn = false; } // Serial.println (ledOn); } else {pos = 0; greenOn = ложь; myservo.write (позы); 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 внизу.
Сделайте второй твердый слой, чтобы стабильно клеить серводвигатель.
Я сделал телефонную трубку.
Я положил датчик звука и провода-перемычки, которые соединяются с датчиком касания внутри телефонной трубки. Затем я спаял проволочные перемычки с токопроводящими лентами на телефонной трубке.
Тогда я использовал шерстяную пряжу для украшения проводов.