Перейти к содержимому


Фотография

Урок №3. Arduino и зуммер

Зуммер

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 21 Ноябрь 2014 - 14:50

  Следующий пример- использование зуммера. Arduino  будет подавать тройной сигнал «бип-бип-бииип» при нажатии на кнопку. Источником звука будет вот такой зуммер. Принцип его работы очень простой- на более длинный вывод подключить «+» от батарейки, на короткий вывод «-» от батарейки и вы услышите звуковой сигнал.   Нам понадобится кнопка из набора и два резистора 220 Ом и 10 кОм.

 

Прикрепленный файл  3.JPG   14,83К   5 скачиваний

 

Прикрепленный файл  2.JPG   14,41К   4 скачиваний

 

Прикрепленный файл  PB12N23P20.jpg   123,72К   4 скачиваний

 

  Алгоритм работы следующий. Вывод 6 Arduino настраивается в программе как «вход». Небольшое отступление- порты на плате могут работать в двух режимах- «входа» и»и «выхода». Режим «входа» (INPUT)-  Arduino отслеживает  изменение напряжения у себя на выводе, на который может подаваться какое-то напряжения с кнопки, переменного резистора, всевозможных датчиков. Напряжение на вход может подаваться разной величины, но Arduino четко фиксирует два состояния- логический ноль и логическую единицу.  За логический ноль принято считать напряжение величиной от  нуля до 1,3 Вольт. За логическую единицу принято принимать напряжение величиной от  2,3 Вольт до 5 Вольт. Режим «выхода» (OUTPUT)- это режим, когда  Arduino подает на вывод либо логический ноль, либо логическую единицу. В  случае логического нуля напряжения на выводе не хватает, что бы зажечь светодиод.  При логической единице на выходе светодиод вполне ярко будет светиться.

  Так вот, в данном ниже примере, Arduino постоянно контролирует уровень напряжения на этом входе. Нужно заметить, что входы Arduino довольно чувствительны к различным внешним помехам, поэтому ножку 6 через резистор 10 кОм подключаем к выводу 5 V. Этот гарантирует высокий уровень напряжения на ножке 6 . Также между выводом 6 и GND (общим проводом) подключим нормально разомкнутую кнопку. При нажатии на кнопку контакты замкнутся, вывод 6 окажется замкнут на общий провод и Arduino обнаружит падения уровня напряжения с 5 Вольт  до нуля, и воспримет это как переход с логической единицы на логический ноль. В этот момент микроконтроллер начнет выполнять функцию передачи сигнала SOS. Зуммер через резистор 220 Ом подключим к выводу  5 Arduino, который настроим в режим «выхода», и общему проводу. Соберем такую схему:

 

Прикрепленный файл  3.JPG   59,41К   4 скачиваний

 

Прикрепленный файл  PHT_6465.JPG   115,73К   5 скачиваний

 

Текст программы будет следующий:

// выбор выводов
int knopka = 6; // кнопка на 6-ый вывод
int zummer = 5; // зуммер на  5-ый вывод
int knopkaStatus = 0; // первоначальный статус кнопки- не нажата.

void setup ()
{
  pinMode (knopka , INPUT); // вывод кнопки настраиваем как "вход"
  pinMode (zummer, OUTPUT); // вывод зуммера настраиваем как "выход"
  digitalWrite(zummer, LOW); // сначала зуммер молчит
}

//выполение основной программы
void loop()
{
  knopkaStatus = digitalRead(knopka);  // считываем уровень на входе 6 и обновляем статус кнопки
  if (knopkaStatus == LOW) // если кнопка нажата
  {
    digitalWrite(zummer, HIGH);  // выполняем Бип-бпи-биип
    delay (50);
    digitalWrite(zummer, LOW);
    delay (300);
    digitalWrite(zummer, HIGH);
    delay (50);
    digitalWrite(zummer, LOW);
    delay (300);
    digitalWrite(zummer, HIGH);
    delay (100);
    digitalWrite(zummer, LOW);
    delay (300);
  }
  else //если кнопка отжата
  {
    digitalWrite(zummer, LOW);  // зуммер молчит
  }

}


#2 Гость_Марина_*

Гость_Марина_*
  • Гости

Отправлено 16 Январь 2015 - 04:26

Спасибо большое за уроки !!!! А вот тут небольшая опечатка knopkaStatus = digitalReadт(knopka);



#3 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 22 Февраль 2015 - 12:18

Спасибо, исправили. :)



#4 daniil

daniil

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 12 Июль 2015 - 14:28

Подскажите что делать. Пишет что в программе void loop() действие knopkaStatus = digitalReadt(knopka); не объявлено что делать?



#5 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 13 Июль 2015 - 11:54

Маленькая опечатка- "digitalReadt(knopka);" нужно как "digitalRead(knopka);"



#6 Геннрих

Геннрих

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 14 Январь 2016 - 11:13

  1. knopkaStatus = digitalRead(knopka);
  2. if (knopkaStatus == LOW)
  3. помогите что писать в этих строках
  4.  


#7 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 21 Январь 2016 - 09:26

писать команды, которые будут выполняться при нажатии на кнопку.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных