พอดีผมกำลังเขียนโปรแกรมดเปิดปิดไฟกลางคืน ของ Ardunino โดยการ ใช้ LDR รับค่าแสง คือ เมือแสงน้อย ทำให้ led ติดด และเมือแสงมาก ให้ LED ไม่ติดและมีเสียงเตือนออกลำโพง และแสดงผลออกทาง จอ LCD แบบในโค้ดที่ผมได้เขียนลงไป แต่ติดปัญหาที่ว่า ผมต้องการนำตัว Switch มาควบคุมไฟอีกที่ คือ เมือแสงมากไฟจะดับแต่ผมผมอยากให้ไฟติดโดยการกด Switch อีกทีและกด Switch เพื่อดับไฟ (คือ เวลาแสงมากไฟจะดับแต่ผมต้องการจะเปิดไฟ อะไรแบบนี้อ่ะครับ)
"ขอ Switch เป็นแบบ กดติด กดดับนะครับ"
นี้โค้ดที่ผมได้เขียนไว้แล้วครับ แนะนำเพิ่มเติมได้นะครับ (ขาดโค้ค Switch ที่ต้องหารคุ้มไฟอีกที)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int ledPin =12;
int ldrPin = A0;
int SOUND_PIN =4 ;
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(ldrPin,INPUT);
pinMode(SOUND_PIN,OUTPUT);
}
void loop() {
int ldrStatus = analogRead(ldrPin);
Serial.println(ldrStatus);
lcd.begin();
if (ldrStatus <=350){
{
digitalWrite(ledPin,HIGH);
Serial.println("LED is ON");
{
lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = ON ");
}
}
}
else{
digitalWrite(ledPin,LOW);
tone(SOUND_PIN,500,300);
Serial.println("LED OFF");
{lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = OFF ");
}
}
}
ช่วยหน่อยนะครับ
"ขอ Switch เป็นแบบ กดติด กดดับนะครับ"
นี้โค้ดที่ผมได้เขียนไว้แล้วครับ แนะนำเพิ่มเติมได้นะครับ (ขาดโค้ค Switch ที่ต้องหารคุ้มไฟอีกที)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int ledPin =12;
int ldrPin = A0;
int SOUND_PIN =4 ;
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(ldrPin,INPUT);
pinMode(SOUND_PIN,OUTPUT);
}
void loop() {
int ldrStatus = analogRead(ldrPin);
Serial.println(ldrStatus);
lcd.begin();
if (ldrStatus <=350){
{
digitalWrite(ledPin,HIGH);
Serial.println("LED is ON");
{
lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = ON ");
}
}
}
else{
digitalWrite(ledPin,LOW);
tone(SOUND_PIN,500,300);
Serial.println("LED OFF");
{lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = OFF ");
}
}
}