สวัสดีครับ ผมได้ทำโปรเจคจบ เเต่ติดที่สวิต ครับ ผมอยากได้เป็น เวลากดสวิต จอ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);
   }																															
						 
												
						
					
ตลับเมตรไร้สาย
นี้โค้ดที่เอามาทำ ตลับเมตรไร้สาย เห็นมีโค้ดสวิตเเต่กดเเล้วหน้าจอเครียไม่ขึ้นระยะให้ครับ พยายามเเก้เองมาหลายเดือนเเล้วก็ไม่ได้ครับ
#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);
}