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