Используя контроллер Arduino, микрофон и твёрдотельное реле можно собрать устройство, которое услышав громкий звук работы циркулярной пилы — автоматически включит систему фильтрации воздуха (для удаления древестной пыли).
Система AudioBot работает очень просто: используя микрофон (в виде модуля детектирования звука), она реагирует на громкий шум (который указывает на включение пилы) и через твёрдотельное реле (Single Phase DC 3-32V to AC 24-380VAC SSR-40DA 40A Solid State Relay Module), включит систему фильтрации воздуха (на два часа), чтобы очистить воздух от пыли.
Программа (скетч) для Arduino
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27); // set the LCD address to 0x27 for a 16 chars and 2 line display
int relayPin = 2; //fan relay control
int sensorPin = 3; //sound sensor
int onPin = 4; //on button
int offPin = 5; //off button
int ledPin = 13; //onboard led
boolean val = 0;
int show;
int hours = 0; // start hours
int minutes = 0; //start min
int seconds = 30; //start seconds
void setup()
{
Serial.begin (9600);
pinMode(relayPin, OUTPUT);
pinMode(sensorPin, INPUT);
pinMode(onPin, INPUT);
pinMode(offPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(relayPin, LOW); //relay off
digitalWrite(sensorPin, LOW); //microphone
digitalWrite(onPin, HIGH); //on button
digitalWrite(offPin, HIGH); //off button
int error;
Wire.begin();
Wire.beginTransmission(0x27); //Your LCD Address
error = Wire.endTransmission();
if (error == 0) {
Serial.println(": LCD found.");
} else {
Serial.println(": LCD not found.");
}
lcd.begin(16, 2); // initialize the lcd
show = 0;
} // setup()
void loop()
{
//microphone sound detection
val = digitalRead(sensorPin);
if (val == HIGH) //sound detected
{
hours = 2;
minutes = 0;
seconds = 0;
}
else //silence
{
}
//button on
val = digitalRead(onPin);
if (val == LOW) //button pushed
{
hours += 1;
}
else //no push
{
}
//button off
val = digitalRead(offPin);
if (val == HIGH) //button pushed
{
hours = 0; //stop time
minutes = 0; //stop time
seconds = 0; //stop time
}
else //no push
{
}
//time countdown
if (seconds > 0)
{
seconds -= 1;
}
else
{
if (minutes > 0) {
seconds = 59;
minutes -= 1;
}
else
{
if (hours > 0)
{
seconds = 59;
minutes = 59;
hours -= 1;
}
}
}
//fan power
if (hours + minutes + seconds > 0)
{
digitalWrite(relayPin, HIGH); //turn the fan on
lcd.setBacklight(200);
lcd.clear();
lcd.setCursor(0, 0);
if ( (seconds % 2) == 0)
{
lcd.print("FANBOY ACTIVE *");
digitalWrite(ledPin, HIGH); //led on
}
else
{
lcd.print("FANBOY ACTIVE * ");
digitalWrite(ledPin, LOW); //led off
}
lcd.setCursor(0, 1);
lcd.print(" H:");
lcd.print(hours);
lcd.print(" M:");
lcd.print(minutes);
lcd.print(" S:");
lcd.print(seconds);
}
else
{
digitalWrite(relayPin, LOW); //turn the fan off
lcd.clear();
lcd.setBacklight(0);
}
delay(1000);
//Serial.print("Hours: ");
//Serial.print(hours);
//Serial.print(" Minutes: ");
//Serial.print(minutes);
//Serial.print(" Seconds: ");
//Serial.print(seconds);
//Serial.print(" OnPin: ");
//Serial.print(val = digitalRead(onPin));
//Serial.print(" OffPin: ");
//Serial.println(val = digitalRead(offPin));
} // loop()
Ссылки
The AudioBot system
По теме
Обжарка кофейных зёрен при помощи Arduino
Автоматизация стола IKEA SKARSTA при помощи Arduino
Автоматизация токарного станка при помощи Arduino
Система уведомления о готовности кофе на Arduino
Станок для нарезки кабеля на базе Arduino
Arduino
Ардуино что это и зачем?
Arduino, термины, начало работы
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)
