Официальный сайт компании Arduino по адресу arduino.cc
Управление светом от хлопков в ладоши.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пт, 16/12/2011 - 12:38
Задача заключается в том чтобы управлять светом от двух хлопков в ладоши.Хочу все это сделать на ардуино но испытываю трудности в написании программы.Сам новичок в программировании.Два хлопка должны включать диод, а два выключать.Вот код программы не судите строго.
void setup(){ pinMode(2,INPUT); pinMode(13,OUTPUT); analogReference(EXTERNAL); } void loop(){ label: unsigned long time; int var = analogRead(2); if(var < x || var > a){ //x и a будут заменены на точные значения. time = millis(); // начать отсчет времени. do{ if(var < x || var > a){ digitalWrite(13,HIGH); } }while(time < 1000); //после получения на входе значений ждать второе значение пока не пройдет секунда. else if(time > 1000){ goto label; } if(var < x || var > a){ time = 0; do{ if(var < x || var > a){ digitalWrite(13,LOW); } }while(time < 1000); }
Попробуй так и посмотри что пишет когда хлопаешь и когда не хлопаешь:)
Мой рогатый код, заинтересовали меня, сделать сразу влёт как думал не вышло. Есть видео - работает. Главное после включения ждать секунду и можно снова 2 раза хлопать.
У меня мега1280 и есть куча всяких шилдов и сенсоров, вот и решил помочь. Итого что в моём случае это мега1280 + DFrobot audio sensor + IO Expansion Shield
Спасибо.Как у вас все получилось просто.
Остается только дописать программу чтобы также 2-ух хлопков выключался.И вопрос зачем вы в конце обнулили данные?
analogData=0//обнуляем данные
ТАк оно и включается и выключается после двух хлопков
В конце можно было бы не обнулять. В ходе экспериментов пробовал разные варианты - это остатки предыдущих вариантов.
Понятно.И еще один вопрос не по теме.Как вы так редактируете код, когда вставляете его на форум я понимаю что есть кнопка "code", но как ею пользоваться?
нажимаете на кнопку код и в пустом поле вставляете весь свой код и всё
Не прокатит.
Во первых вместо || (логического ИЛИ) должно быть логическое И. Потому что ИЛИ - Истина, если хотя бы один операнд истина - у вас получится постоянная истина на выходе проверки, потому что если хлопка нет, analogData=0 и попадает под условие analogData < x - итого истина.
А если поставить логическое И - Истина, если оба операнда истина (true) То получится сравнение, тоесть если analogData попадает между а и х
Во вторых у вас в коде нет конечного элемента, который будет управлять вкл/выкл тоесть digitalWrite(pin,ledstate)
я хотел написать &, но перепутал с ||.
Теперь все исправлено
if(ledstate == 0){
22 digitalWrite(13,LOW)
23 }
24 else if(ledstate == 1){
25 digitalWrite(13,HIGH)
Эти проверки лишние, переменная принимает значения или 0 или 1, соответственно необходимо писать лишь
digitalWrite(13,ledstate)
&& вот так правильно, а не одна &
Я хотел бы задать вопрос о выводе AREF.Мне не совсем понятно, как его использовать.Просто к выводу AREF подключить напряжение например +3в и все?
Его можно вообще не использовать в данной задаче.
Все собрано.Уррраааа.Вот здесь нашел схему микрофонного усилителя : www.cxem.net/sound/soundpred/soundpred5.php
>>Я хотел бы задать вопрос о выводе AREF.Мне не совсем понятно, как его использовать.Просто к выводу AREF подключить напряжение например +3в и все?<<
На ареф подается опорное напряжение АЦП , по умолчанию (когда ареф не подключен) там 5в.
АЦП сравнивает опорное напряжение с поступающим и делает соответствующие выводы.
Если вы хотите подключить к ареф 3в то : эту функцию нужно включить программно , напруга ,
подаваемая на ареф , должна быть супер стабильной иначе получите ложные данные.
Потратил несколько часов на написание кода.
При старте происходит автодетект уровня тишины. После определённого времени есть возможность автоматического отключения нагрузки, также с опцией мигания в конце.
Подключение по этой схеме:
upload.wikimedia.org/wikipedia/commons/4/49/Electret_condenser_microphone_schematic..svg
Полярность микрофона имеет значение!
Вообщем, попробуйте залить этот код:
ДОброго! скажи пожалуйста, что необходимо для того чтобы работала система 2хлопкового вкл выкл..
сам не программер..так что..)
обязателен ли комп включенный при этом? вообще можно ли ардуину как то скрыть от глаз допустим поместить в стену (проштробить и зашпоклевать)?
буду признателен+)
управление хлопком в ладоши (инфракрасным) ИК сигналом
Clap Switch, management claps infrared IR signal
Version 0.1 2013/06/12
Перед тем как начать управление хлопками, нужно ввести звуковой логин и звуковой пароль.
Для защиты от случайного срабатывания - посторонних шумов
1. Вводим звуковой логин в моем примере это три хлопка
Если логин введен правильно Загорается желтый светодиод у нас есть три секунды для ввода звукового пароля
2. Вводим звуковой пароль, в моем примере это два хлопка, если звуковой пароль введен правильно загорается зеленый светодиод, у нас есть пять секунд Для ввода звуковой команды
3. Например хлопаем два раза у нас включается второй pin на ардуино,
или отправляется (инфракрасный) ИК сигнал на телевизор включая второй телеканал.
Нужно заранее прописать в sketch, код кнопки пульта от вашего телевизора
У меня модуль микрофона на LM 393 при подключении выдаёт одни и те же значения, меняется максимум на единичку, если только чем нибудь по самому микрофону постучать, то значения меняются, а так хлопай, кричи и все одно и то же, в чем может быть проблема?