ข้ามไปที่เนื้อหาหลัก

ส่งงานครั้งที่ 14

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);   // กำหนดขาที่ต่อกับจอ
#define buzzer 12 // ขาที่ต่อลำโพง
#define led 13  //ขาที่ต่อกับLED
#define x A0  // ขาOutputของแกนx
#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;
/*Macros*/
#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);
  }
  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   ");
}
void loop()
{
    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
  /*แสดงค่าที่เปลี่ยนแปลงบนจอLcd*/
    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 ทำงาน
    } 
   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   ");
    }
    digitalWrite(buzzer, buz);    // ลำโพงเปิดปิดตามคำสั่ง
    digitalWrite(led, buz);   // ledเปิดปิดตามคำสั่ง
  /*ส่งค่าทีคำนวณได้เอาไปลงบนกราฟ*/
    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

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ส่งงานครั้งที่ 16

Smoke Detector Using MQ2 อุปกรณ์ Arduino UNO Smoke Detector Arduino Shield (Self Designed) Power Supply Smoke Sensor (MQ2) Resistors (10K and 1K) Buzzer 16x2 LCD 10k POT LED LM358 Burg strips Diagram Code #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define buzzer 9 #define sensor A0   #define load_Res 10   #define air_factor 9.83                                                   float SmokeCurve[3] ={2.3,0.53,-0.44};    // (x, y, slope) x,y พิกัดของจุดหนึ่งและความลาดชันระหว่างสองจุด                                                                                     ...

ส่งงานครั้งที่ 9

Gyro Sensor Interfacing Gyro Sensor  คือเซ็นเซอร์ที่มีไว้สำหรับตรวจจับลักษณะการหมุน โ ดยเป็นการตรวจจับแบบ  3  แกน  (3-Axes) อุปกรณ์ Arduino Uno MPU-6050 10K POT Jumper wire Breadboard USB cable Power supply Diagram Code #include<LiquidCrystal.h> //ประกาศเมื่อใช้จอ LiquidCrystal lcd(8,9,10,11,12,13); //ขาที่ต่อจอ #include <Wire.h> #include <MPU6050.h> #define period 10000 MPU6050 mpu; int count=0; char okFlag=0; byte degree[8] = {   0b00000,   0b00110,   0b01111,   0b00110,   0b00000,   0b00000,   0b00000,   0b00000 }; void setup()  {   lcd.begin(16,2);   lcd.createChar(0, degree);   Serial.begin(9600);   Serial.println("Initialize MPU6050");   while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))   {     lcd.clear();     lcd.print("Device not Found"...

ส่งงานครั้งที่ 15

Arduino Solar Tracker อุปกรณ์ Servo Motor (sg90) Solar panel Arduino Uno LDR’s X 2 (Light Dependent Resistor) 10K resistors X 2 Battery (6 to 12V) Diagram Code #include <Servo.h>      //ประกาศเมื่อมีการใช้Servo Servo sg90;             //ตั้งค่าServoด้วยตัวแปรsg90 int initial_position = 90;   //ประกาศตัวแปรไว้ที่ค่า 90 int LDR1 = A0;          //ขาที่LDRต่อไว้ int LDR2 = A1;          //ขาที่LDR2ต่อไว้ int error = 5;          //ตั้งค่าเริ่มต้นของ error ที่ 5 int servopin=9; void setup() {    sg90.attach(servopin);  // ให้ servo ที่ขา 9   pinMode(LDR1, INPUT);   //ให้ขาที่ต่อกับLDRเป็นInput   pinMode(LDR2, INPUT);   sg90.write(initial_position);   //ขยับServoไว้ที่90องศา   delay(2000);            // กำหนดdelay2วินาที } void loop() {   int ...