Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Курс Arduino - Звук

Пищало

Давайте попробуем реализовать звуковую сигнализацию какого-либо явления. Для этого мы будем использовать пьезодинамик или buzzer.

Нам понадобятся

  • Пьезодинамик
  • Фоторезистор
  • Термистор
  • Резистор 10 кОм
  • Потенциометр
  • Соединительные провода «Папа-Папа»

Пищало V.1

Для начала сделаем устройство, которое выводит по запросу, для каждого датчика его значение и, если значение выше/ниже заданного порога, издает звуковой сигнал.

Соберем схему:

Код к схеме

#define TERM A0
#define FOTO A1
#define POT A2
#define BUZZ 3

void setup()
{
  Serial.begin(9600);
  Serial.println("Privet!");
  
  pinMode(TERM, INPUT);
  pinMode(FOTO, INPUT);
  pinMode(POT, INPUT);
  pinMode(BUZZ, OUTPUT);
}

void loop() 
{
  int temp = analogRead(TERM);
  int light = analogRead(FOTO);
  int value = analogRead(POT);

  
   if(Serial.available() > 0) //Проверяем, пришла ли команда.
  {
   char cmd = Serial.read(); //Объявим переменную, в которую будем запоминать команду.

   //Чтобы услышать звук - зажми термистор пальцами.Одновременно отправь команду
   if (cmd == 'T' || cmd == 't')      //Если пришла команда "Termistor mode"
    {
      Serial.println( temp);  
      
      if(temp < 450)  //Включаем режим термистора.          
          {
            tone(BUZZ, 3000, 1000);  
            delay(600);
          }
     }
      
      //Чтобы услышать звук- закрой фоторезистор рукой.Одновременно отправь команду
      if (cmd == 'f' || cmd == 'F')     //Если пришла команда "Fotorezistor mode"
      {
        Serial.println(light);
         if(light > 400)                //Включаем режим фоторезистора
           {
            
             tone(BUZZ, 4000, 1000);  
             delay(600);
           }
    
      }

      //Чтобы услышать звук выкрути термистор до значения больше 700 и отправь команду.
      if( cmd == 'p' || cmd == 'P')     //Если пришла команда "Potentiometr mode"
      {  
        Serial.println(value);         //Включаем режим потенциометра.
         if( value > 700)
          {
            tone(BUZZ, 5000, 1000);  
            delay(600);
          }
      }
          
  }  
}

Пояснения

Tone – Функция генерирует на пьезопищалке звуковую волну. В общем виде функция записывается так. Tone(Номер пина, Частота, Длительность)

Номер пина – это номер пина, к которому подключен буззер. 

Частота – частота звука, подаваемая на пищалку.

Длительность – длительность подаваемого сигнала в миллисекундах. Ее можно не задавать, но тогда звук не будет прекращаться пока вы не вызовите функцию noTone(Номер пина)

Так себе?

Да, наше устройство не найдет практического применения так как проверка условий производится только по запросу. Давайте немного улучшим наше устройство и сделаем его более правильным.

Пищало V.2

#define TERM A0
#define FOTO A1
#define POT A2
#define BUZZ 3

void setup()
{
  Serial.begin(9600);
  Serial.println("Privet!");
  
  pinMode(TERM, INPUT);
  pinMode(FOTO, INPUT);
  pinMode(POT, INPUT);
  pinMode(BUZZ, OUTPUT);
}

void loop() 
{
  int temp = analogRead(TERM);
  int light = analogRead(FOTO);
  int value = analogRead(POT);

  
 if(temp < 450)
 {
  Serial.println("Achtung!It's too hot!");
  Serial.println("Temperature:");
  Serial.println(temp);
  tone(BUZZ, 3000, 1000);
  delay(2000);
 }

 if(light > 400)
 {
  Serial.println("Night is coming!");
  Serial.println("Light:");
  Serial.println(light);
  tone(BUZZ, 4000, 1000);
  delay(2000);
 }

  if(value > 700)
  {
    Serial.println("Turn it off pls");
    Serial.println("Value:");
    Serial.println(value);
    tone(BUZZ, 3000, 1000);
    delay(2000);
  }
  
}

Лучше?

Теперь звуковой сигнал при критических значениях от нас не зависит. При преодолении нашего порога значений, издается писк, и выводится сообщение в Serial Monitor, причем, подача сигнала не прекратится, пока значение не вернется в нормальные рамки. Таким образом, можно сигнализировать разные ситуации с нашим устройством.

Можно двигаться дальше.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Uno
1 Поиск в магазине ОтронВ блокнот
Резистор
10 кОм
2 Поиск в магазине ОтронВ блокнот
ТермисторB57164-K 103-J1 Поиск в магазине ОтронВ блокнот
ФоторезисторVT90N21 Поиск в магазине ОтронВ блокнот
Соединительные провода"Папа-Папа"1 Поиск в магазине ОтронВ блокнот
Макетная плата"Папа-Папа"1 Поиск в магазине ОтронВ блокнот
Переменный резистор10кОм1 Поиск в магазине ОтронВ блокнот
ПьезоизлучательПассивный1 Поиск в магазине ОтронВ блокнот
Макетная платаBreadboard-half1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Осциллограф DSO138 USB осциллограф DSO-2090
вверх