Главная » Arduino
Призовой фонд
на сентябрь 2017 г.
1. 1000 руб
PCBWay
2. Осциллограф DSO138
Паяльник
3. Тестер компонентов MG328
Паяльник
4. 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 Поиск в LCSCВ блокнот
Резистор
10 кОм
2 Поиск в LCSCВ блокнот
ТермисторB57164-K 103-J1 Поиск в LCSCВ блокнот
ФоторезисторVT90N21 Поиск в LCSCВ блокнот
Соединительные провода"Папа-Папа"1 Поиск в LCSCВ блокнот
Макетная плата"Папа-Папа"1 Поиск в LCSCВ блокнот
Переменный резистор10кОм1 Поиск в LCSCВ блокнот
ПьезоизлучательПассивный1 Поиск в LCSCВ блокнот
Макетная платаBreadboard-half1 Поиск в LCSCВ блокнот
Добавить все

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

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

Теги:

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

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

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

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

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

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

Arduino UNO
Arduino UNO
Конструктор - Гитарная педаль Remote Delay 2.5 Модуль измерения тока на ACS712 (30А)
вверх