Ultrasonic sensor

Lab 1


code 1
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM,temp_distCM=0;
void setup()
{
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("Dist =      cm");
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  if (temp_distCM != distCM)
  {
    lcd.setCursor(7,0);
    lcd.print("    ");
  }
  lcd.setCursor(7,0);
  lcd.print(distCM);
  temp_distCM = distCM;
  delay(300);
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดงค่า cm

code 2
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  int x = constrain(distCM,4,19);
  lcd.clear();
  lcd.home();
  for (int i=4;i<=x;i++)
      lcd.print("*");
  delay(150);
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดงค่า * ขึ้นมา

code 3
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
int buzzerpin = 11;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(buzzerpin,OUTPUT);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
  digitalWrite(buzzerpin,HIGH);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  lcd.home();
    if (distCM > 400)
  { 
    lcd.clear();
    lcd.print("**!!!Alarm!!!**");
    tone(buzzerpin,700,500);
    delay(500);
    digitalWrite(buzzerpin,HIGH);
    delay(70);
    lcd.setCursor(0,1);
    lcd.print(distCM); 
  }
  else
  {
    lcd.print("<-------------->");
    lcd.setCursor(0,1);
    lcd.print(distCM);
  }
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดง ("<-------------->") ออกมาพร้อมกับเสียง และตัวเลข ถ้าเกิน 400 LCD จะขึ้นคำว่า ("**!!!Alarm!!!**") และเสียงก็จะเปลี่ยน

code 4
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
int buzzerpin = 11;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(buzzerpin,OUTPUT);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
  digitalWrite(buzzerpin,HIGH);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  lcd.home();
  if ((distCM>=4)&&(distCM<=30))
  { 
    lcd.clear();
    lcd.print("#####Alarm#####");
    int dl = distCM*20;
    tone(buzzerpin,600,dl);
    delay(dl);
    digitalWrite(buzzerpin,HIGH);
    delay(70); 
  }
  else
  {
    lcd.print("  Dist > 30 cm  ");
  }
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดง ("#####Alarm#####") ออกมาพร้อมกับเสียงตอน POT-HG ต่ำสุด ถ้าปรับขึ้นเลยๆๆ LCD จะขึ้นคำว่า ("  Dist > 30 cm  ") และเสียงก็จะเปลี่ยน


Lab 2

code 1
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM,temp_distCM=0;
void setup()
{
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("Dist =      cm");
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  if (temp_distCM != distCM)
  {
    lcd.setCursor(7,0);
    lcd.print("    ");
  }
  lcd.setCursor(7,0);
  lcd.print(distCM);
  temp_distCM = distCM;
  delay(300);
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดงค่า cm

code 2

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  int x = constrain(distCM,4,19);
  lcd.clear();
  lcd.home();
  for (int i=4;i<=x;i++)
      lcd.print("*");
  delay(150);
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดงค่า * ขึ้นมา

code 3

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
int buzzerpin = 11;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(buzzerpin,OUTPUT);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
  digitalWrite(buzzerpin,HIGH);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  lcd.home();
    if (distCM > 400)
  { 
    lcd.clear();
    lcd.print("**!!!Alarm!!!**");
    tone(buzzerpin,700,500);
    delay(500);
    digitalWrite(buzzerpin,HIGH);
    delay(70);
    lcd.setCursor(0,1);
    lcd.print(distCM); 
  }
  else
  {
    lcd.print("<-------------->");
    lcd.setCursor(0,1);
    lcd.print(distCM);
  }
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดง ("<-------------->") ออกมาพร้อมกับเสียง และตัวเลข ถ้าเกิน 400 LCD จะขึ้นคำว่า ("**!!!Alarm!!!**") และเสียงก็จะเปลี่ยน

code 4
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int triggerPin = 13;
int echoPin = 12;
int buzzerpin = 11;
long duration,distCM;
void setup()
{
  lcd.begin(16,2);
  pinMode(buzzerpin,OUTPUT);
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);
  digitalWrite(buzzerpin,HIGH);
}
void loop()
{
  digitalWrite(triggerPin,LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distCM = duration/58;
  lcd.home();
  if ((distCM>=4)&&(distCM<=30))
  { 
    lcd.clear();
    lcd.print("#####Alarm#####");
    int dl = distCM*20;
    tone(buzzerpin,600,dl);
    delay(dl);
    digitalWrite(buzzerpin,HIGH);
    delay(70); 
  }
  else
  {
    lcd.print("  Dist > 30 cm  ");
  }
}
ทดลอง
พอภาษา C ใส่ในArduino จะได้ว่า LCD แสดง ("#####Alarm#####") ออกมาพร้อมกับเสียงตอน POT-HG ต่ำสุด ถ้าปรับขึ้นเลยๆๆ LCD จะขึ้นคำว่า ("  Dist > 30 cm  ") และเสียงก็จะเปลี่ยน

ความคิดเห็น

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

Coin Validator เครื่องรับเหรียญ เครื่องหยอดเหรียญ Multi Coin รุ่น SG-6

Learning 7 Segment + Arduino