Earthquake Detector Alarm
อุปกรณ์
- Arduino UNO
- Accelerometer ADXL335
- 16x2 LCD
- Buzzer
- BC547 transistor
- 1k Resistors
- 10K POT
- LED
- Power Supply 9v/12v
- Berg sticks male/female
Diagram
Code
#include<LiquidCrystal.h> // ประกาศเมื่อใช้LCD
LiquidCrystal lcd(9,8,7,6,5,4); // กำหนดขาที่ต่อกับจอ
LiquidCrystal lcd(9,8,7,6,5,4); // กำหนดขาที่ต่อกับจอ
#define buzzer 12 // ขาที่ต่อลำโพง
#define led 13 //ขาที่ต่อกับLED
#define led 13 //ขาที่ต่อกับLED
#define x A0 // ขาOutputของแกนx
#define y A1 // ขาOutputของแกนy
#define z A2 // ขาOutputของแกนz
#define y A1 // ขาOutputของแกนy
#define z A2 // ขาOutputของแกนz
/*variables*/
int xsample=0;
int ysample=0;
int zsample=0;
long start;
int buz=0;
int xsample=0;
int ysample=0;
int zsample=0;
long start;
int buz=0;
/*Macros*/
#define samples 50
#define maxVal 20 // ค่าที่เปลี่ยนแปลงทาง+มากที่สุด
#define minVal -20 // ค่าที่เปลี่ยนแปลงทาง-มากที่สุด
#define buzTime 5000 // เวลาที่ลำโพงดัง
#define samples 50
#define maxVal 20 // ค่าที่เปลี่ยนแปลงทาง+มากที่สุด
#define minVal -20 // ค่าที่เปลี่ยนแปลงทาง-มากที่สุด
#define buzTime 5000 // เวลาที่ลำโพงดัง
void setup()
{
lcd.begin(16,2); //ตำแหน่งlcd
Serial.begin(9600); // ค่าการรับส่งข้อมูลserial
delay(1000);
lcd.print("EarthQuake ");
lcd.setCursor(0,1);
lcd.print("Detector ");
delay(2000);
lcd.clear();
lcd.print("Circuit Digest ");
lcd.setCursor(0,1);
lcd.print("Saddam Khan ");
delay(2000);
lcd.clear();
lcd.print("Calibrating.....");
lcd.setCursor(0,1);
lcd.print("Please wait...");
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
buz=0;
digitalWrite(buzzer, buz);
digitalWrite(led, buz);
for(int i=0;i<samples;i++) // นำตัวอย่างไปเปรียบเทียบ
{
xsample+=analogRead(x);
ysample+=analogRead(y);
zsample+=analogRead(z);
}
{
lcd.begin(16,2); //ตำแหน่งlcd
Serial.begin(9600); // ค่าการรับส่งข้อมูลserial
delay(1000);
lcd.print("EarthQuake ");
lcd.setCursor(0,1);
lcd.print("Detector ");
delay(2000);
lcd.clear();
lcd.print("Circuit Digest ");
lcd.setCursor(0,1);
lcd.print("Saddam Khan ");
delay(2000);
lcd.clear();
lcd.print("Calibrating.....");
lcd.setCursor(0,1);
lcd.print("Please wait...");
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
buz=0;
digitalWrite(buzzer, buz);
digitalWrite(led, buz);
for(int i=0;i<samples;i++) // นำตัวอย่างไปเปรียบเทียบ
{
xsample+=analogRead(x);
ysample+=analogRead(y);
zsample+=analogRead(z);
}
xsample/=samples; // รับค่า avg ให้ x
ysample/=samples; // รับค่า avg ให้ y
zsample/=samples; // รับค่า avg ให้ z
delay(3000);
lcd.clear();
lcd.print("Calibrated");
delay(1000);
lcd.clear();
lcd.print("Device Ready");
delay(1000);
lcd.clear();
lcd.print(" X Y Z ");
}
ysample/=samples; // รับค่า avg ให้ y
zsample/=samples; // รับค่า avg ให้ z
delay(3000);
lcd.clear();
lcd.print("Calibrated");
delay(1000);
lcd.clear();
lcd.print("Device Ready");
delay(1000);
lcd.clear();
lcd.print(" X Y Z ");
}
void loop()
{
int value1=analogRead(x); // อ่านค่า x ที่ได้
int value2=analogRead(y); //อ่านค่า y ที่ได้
int value3=analogRead(z); //อ่านค่า z ที่ได้
{
int value1=analogRead(x); // อ่านค่า x ที่ได้
int value2=analogRead(y); //อ่านค่า y ที่ได้
int value3=analogRead(z); //อ่านค่า z ที่ได้
int xValue=xsample-value1; // หาค่าการเปลี่ยนแปลงของ x
int yValue=ysample-value2; // หาค่าการเปลี่ยนแปลงของ y
int zValue=zsample-value3; // หาค่าการเปลี่ยนแปลงของ z
int yValue=ysample-value2; // หาค่าการเปลี่ยนแปลงของ y
int zValue=zsample-value3; // หาค่าการเปลี่ยนแปลงของ z
/*แสดงค่าที่เปลี่ยนแปลงบนจอLcd*/
lcd.setCursor(0,1);
lcd.print(zValue);
lcd.setCursor(6,1);
lcd.print(yValue);
lcd.setCursor(12,1);
lcd.print(zValue);
delay(100);
lcd.setCursor(0,1);
lcd.print(zValue);
lcd.setCursor(6,1);
lcd.print(yValue);
lcd.setCursor(12,1);
lcd.print(zValue);
delay(100);
/* คำนวณค่าการเปลี่ยนแปลงกับค่ามากสุดที่เตรียมไว้*/
if(xValue < minVal || xValue > maxVal || yValue < minVal || yValue > maxVal || zValue < minVal || zValue > maxVal)
{
if(buz == 0)
start=millis(); // เวลาที่เริ่ม
buz=1; // ลำโพง / led ทำงาน
}
if(xValue < minVal || xValue > maxVal || yValue < minVal || yValue > maxVal || zValue < minVal || zValue > maxVal)
{
if(buz == 0)
start=millis(); // เวลาที่เริ่ม
buz=1; // ลำโพง / led ทำงาน
}
else if(buz == 1) // ลำโพงทำงานเมื่อมีแ่นดินไหว
{
lcd.setCursor(0,0);
lcd.print("Earthquake Alert ");
if(millis()>= start+buzTime)
buz=0;
}
else
{
lcd.clear();
lcd.print(" X Y Z ");
}
{
lcd.setCursor(0,0);
lcd.print("Earthquake Alert ");
if(millis()>= start+buzTime)
buz=0;
}
else
{
lcd.clear();
lcd.print(" X Y Z ");
}
digitalWrite(buzzer, buz); // ลำโพงเปิดปิดตามคำสั่ง
digitalWrite(led, buz); // ledเปิดปิดตามคำสั่ง
digitalWrite(led, buz); // ledเปิดปิดตามคำสั่ง
/*ส่งค่าทีคำนวณได้เอาไปลงบนกราฟ*/
Serial.print("x=");
Serial.println(xValue);
Serial.print("y=");
Serial.println(yValue);
Serial.print("z=");
Serial.println(zValue);
Serial.println(" $");
}
Serial.print("x=");
Serial.println(xValue);
Serial.print("y=");
Serial.println(yValue);
Serial.print("z=");
Serial.println(zValue);
Serial.println(" $");
}
Credit By : https://circuitdigest.com/microcontroller-projects/arduino-earthquake-detector-alarm-circuit
ความคิดเห็น
แสดงความคิดเห็น