ตลับเมตรไร้สาย

กระทู้คำถาม
สวัสดีครับ ผมได้ทำโปรเจคจบ เเต่ติดที่สวิต ครับ ผมอยากได้เป็น เวลากดสวิต จอLCDกับเลเซอร์ ติด ครับเเต่มันยากมาก มีไครเเนะนำได้บ้างครับ
นี้โค้ดที่เอามาทำ ตลับเมตรไร้สาย เห็นมีโค้ดสวิตเเต่กดเเล้วหน้าจอเครียไม่ขึ้นระยะให้ครับ พยายามเเก้เองมาหลายเดือนเเล้วก็ไม่ได้ครับ

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);   //Module IIC/I2C Interface บางรุ่นอาจจะใช้ 0x3f
const int s1 = D3;
#define trigPin D5
#define echoPin D6
const int Laser = D0;
void setup() {
  pinMode (D3,INPUT);
  pinMode(D0, OUTPUT);
  pinMode(Laser, OUTPUT);
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  lcd.begin();
  lcd.backlight();
  lcd.home();
  lcd.print("Distance ");
}
void loop()
{
 if(digitalRead(D3)==1)
  digitalWrite (D0, HIGH); // open the laser head
  Serial.println("Laser_ON");
  long duration, distance;
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  
while(digitalRead(D3)==0);
  digitalWrite (D0, LOW); // open the laser head
  Serial.println("Laser_OFF");
  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  lcd.setCursor(0,1);
 if (distance >= 400 || distance <= 0){
    Serial.println("Out of range400 ");
    lcd.print("Out of range400 ");
      goto a;
}else {
   a:
 Serial.print(distance);
 Serial.println(" cm");
 lcd.print(distance);
 lcd.print(" CM       ");
  }
  delay(500);
   }
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่