พอดีผมกำลังเขียนโปรแกรมดเปิดปิดไฟกลางคืน ของ 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;
#define REF 300
#define SOUND_PIN 4
#define SW1 10
boolean buttonState;
boolean lastState;
boolean state = HIGH;
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(ldrPin,INPUT);
pinMode(SOUND_PIN,OUTPUT);
pinMode(SW1,INPUT);
}
void loop()
{
int val = analogRead(ldrPin);
Serial.println(val);
lcd.begin();
if (val<=REF)
{
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 is OFF");
lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = OFF ");
}
delay(1000);
}
ช่วยหน่อยนะครับ
"ขอ Switch เป็นแบบ กดติด กดดับนะครับ"
นี้โค้ดที่ผมได้เขียนไว้แล้วครับ แนะนำเพิ่มเติมได้นะครับ (ขาดโค้ค Switch ที่ต้องหารคุ้มไฟอีกที)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int ledPin =12;
int ldrPin = A0;
#define REF 300
#define SOUND_PIN 4
#define SW1 10
boolean buttonState;
boolean lastState;
boolean state = HIGH;
void setup() {
Serial.begin(9600);
pinMode(ledPin,OUTPUT);
pinMode(ldrPin,INPUT);
pinMode(SOUND_PIN,OUTPUT);
pinMode(SW1,INPUT);
}
void loop()
{
int val = analogRead(ldrPin);
Serial.println(val);
lcd.begin();
if (val<=REF)
{
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 is OFF");
lcd.print("Smart Home");
lcd.setCursor(2,1);
lcd.print("Status LED = OFF ");
}
delay(1000);
}