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

- Устанавливаем Trema-модуль зуммер в 2 посадочную площадку.

- Устанавливаем Trema-модуль потенциометр в 6 посадочную площадку.

- Устанавливаем Trema-модуль датчик вибрации в 5 посадочную площадку.

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

Код программы:
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) выполняются следующие действия:
- Объявляем пины для работы с Trema-модуль датчик вибрации, Trema-модуль потенциометр, Trema-модуль светодиод, Trema-модуль зуммер.
- Объявляем массив и переменные задействованные в программе.
В коде setup выполняются следующие действия:
- Переводим вывод Arduino для светодиода в режим выхода.
В коде loop выполняются следующие действия:
- Считываем показания с потенциометра в масштабе от 1 до 100.
- Считываем показания с датчика вибрации.
- Усредняем показания с датчика вибрации.
- Если усредненные показания датчика вибрации, умноженные на 100 больше критического значения с потенциометра, то включаем светодиод и зуммер, а так же переходим к функции "Music()", в которой проиграется небольшая мелодия. Функцию "Music()" можно отключить, закомментировав или удалив строчку с функцией в самом скетче. Это строчка обрамлена звездочками. Её легко найти. Если меньше, то выключаем светодиод и зуммер.
Ссылки:
Комплект для повторения проекта
Что понадобится
Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.
6 позиций
Arduino Uno R3 (USB ATmega16U2)
Платформа c микроконтроллером ATmega328P на ядре AVR с чипом USB ATmega16U2 для разработки электронных устройств на языке C++
Открыть в iArduino
Trema Set Shield
Плата расширения, которая упрощает процесс подключения модулей к Arduino.
Открыть в iArduino
Зуммер (Trema-модуль)
Позволяет излучать звук определённой тональности (частоты).
Открыть в iArduino
Светодиод - зеленый (Trema-модуль)
Trema-модуль светодиод
Открыть в iArduino
Потенциометр v2 (Trema-модуль)
Сенсор для настройки скорости вращения двигателя, угол поворота сервопривода, яркости светодиода и т.д.
Открыть в iArduino
Датчик вибрации АНТ-801S (Trema-модуль)
Цифровой модуль, который можно использовать в качестве сигнализаций или для отключения устройств и других проектах
Открыть в iArduino