Проект 7. Сигнализация

Устройство оповестит вас о вибрации самого устройство, а так же каких-либо приспособлений.

Описание работы:

Для начала работы подключите питание к Arduino. Закрепите устройство на какой-либо предмет. С помощью потенциометра выставите критический уровень тряски. Если крутить влево, то будет установлен максимальный критический уровень тряски. Устройство никак не будет реагировать на тряску. Если крутить потенциометр вправо, то будет установлен минимальный критический уровень тряски и при малейшем движении, устройство будет сигнализировать небольшой мелодией и включенным светодиодом. Теперь устройство можно использовать для переноски любых предметов. Устройство оповестит о сильной тряске.

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

Для реализации проекта нам не нужно устанавливать никаких библиотеки.

Схема сборки:

  • Полученные результат представлен ниже на рисунке.

Код программы:

int pinDatZ = 11;                                                // Объявляем пин для работы с датчиком звука.
int pinPot = A3;                                                 // Объявляем пин для работы с потенциометром.
int pinLed = 6;                                                  // Объявляем пин для работы со светодиодом.
const uint8_t pinZum =  A0;                                      // Объявляем пин для работы с зуммером.
                                                                 //
float potVolue;                                                  // Переменная для чтения показаний с потенциометра.
float datZVolue;                                                 // Переменная для усредненных показаний с датчика вибрации.
float readDatZ;                                                  // Переменная для чтения показаний с датчика вибрации.
float average = 2;                                               // Определяем константу усреднения показаний датчика (чем выше значение, тем выше инерционность выводимых показаний).
                                                                 //
void Music();                                                    // Функция музыки с зуммера.
                                                                 //
void setup()                                                     //
{                                                                //
  pinMode(pinLed, OUTPUT);                                       // Переводим вывод pinLedRed в режим выхода.
}                                                                //
                                                                 //
void loop()                                                      //
{                                                                //
  potVolue = map(analogRead(pinPot), 0, 1023, 100, 0);           // Читаем показания с потенциометра и масштабируем значения в диапазон от 1 до 100.
  readDatZ = digitalRead(pinDatZ);                               // Читаем показания с датчика вибрации.
                                                                 //
  datZVolue *= average-1;                                        // Умножаем предыдущее значение датчика звука на коэффициент усреднения-1.
  datZVolue += readDatZ;                                         // Добавляем к полученному значению новые показания датчика звука.
  datZVolue /= average;                                          // Делим полученное значение на коэффициент усреднения.
                                                                 //
  while (datZVolue*100 > potVolue)                               // Усредненные показания с датчика вибрации умножаем на сто и выполняем цикл, если они больше показаний с потенциометра.
  {                                                              //
    digitalWrite(pinLed, HIGH);                                  // Включаем светодиод.
    digitalWrite(pinZum, HIGH);                                  // Включаем зуммер.
//***************************************************************//
    Music();                                                     // Переходим к функции музыки с зуммера.
//***************************************************************//
  }                                                              //
  digitalWrite(pinLed, LOW);                                     // Выключаем светодиод.
  digitalWrite(pinZum, LOW);                                     // Выключаем зуммер.
}                                                                //
                                                                 //
void Music()                                                     // Функция музыки с зуммера.
{                                                                //
  datZVolue = 0;                                                 // Обнуляем переменную усреднения показаний с датчика вибрации.
  tone(pinZum, 2048, 500);                                       // Выводим звуковой сигнал с частотой 2048 Гц и длительностью 0,1 сек.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 1024, 500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 512,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 256,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 128,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 64,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 32,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 16,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 8,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 4,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 2,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 1,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 2,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 4,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 8,    500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 16,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 32,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 64,   500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 128,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 256,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 512,  500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 1024, 500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
  tone(pinZum, 2048, 500);                                       // Выводим звуковой сигнал длительностью 0,1 сек с частотой 2048 Гц.
  delay(200);                                                    // Не выводим звук в течении 0,1 сек (см. ниже).
}                                                                //

Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим вывод Arduino для светодиода в режим выхода.

В коде loop выполняются следующие действия:

  • Считываем показания с потенциометра в масштабе от 1 до 100.
  • Считываем показания с датчика вибрации.
  • Усредняем показания с датчика вибрации.
  • Если усредненные показания датчика вибрации, умноженные на 100 больше критического значения с потенциометра, то включаем светодиод и зуммер, а так же переходим к функции "Music()", в которой проиграется небольшая мелодия. Функцию "Music()" можно отключить, закомментировав или удалив строчку с функцией в самом скетче. Это строчка обрамлена звездочками. Её легко найти. Если меньше, то выключаем светодиод и зуммер.

Ссылки:

Обсуждение