/*******************************************************************
* Mr.Narin Damnuy (KruRin)
* Technology Computer
* Phatthalung Technical College
* fb.com/damnuy : LineID:damnuy27
* Free License
*******************************************************************/
#define ledG 12 //ประกาศตัวแปร LED Green
#define ledY 14 //ประกาศตัวแปร LED Yellow
#define ledR 27 //ประกาศตัวแปร LED Red
#define LDR 35 //ประกาศตัวแปร LDR
int ledPin[] = {ledG, ledY, ledR}; //ประกาศตัวแปร Array LED
void setup()
{
for(int i=0;i<=2;i++) //วนลูป 3 รอบ กำหนด LED เป็น OUTPUT
pinMode(ledPin[i],OUTPUT); //คำสั่งบรรทัดเดียวไม่ต้องใส่ {}
Serial.begin(9600);
}
void loop()
{
Serial.print("LUX Meter : ");
Serial.print(lux_meter()); //เรียกใช้ฟังก์ชั่น lux_meter()
Serial.println(" lux");
if(lux_meter()>= 90)
{
digitalWrite(ledG,LOW);
digitalWrite(ledY,LOW);
digitalWrite(ledR,HIGH);
}
else if(lux_meter()>= 50)
{
digitalWrite(ledG,LOW);
digitalWrite(ledY,HIGH);
digitalWrite(ledR,LOW);
}
else
{
digitalWrite(ledG,HIGH);
digitalWrite(ledY,LOW);
digitalWrite(ledR,LOW);
}
delay(500);
}
int lux_meter(){ //ฟังก์ชั่นแปลงค่าดิจิทัลเป็นค่า Lux
int LDR_Val = analogRead(LDR)+f(analogRead(LDR));
float Vout = float(LDR_Val) * (3.3 / float(4096));
float RLDR = (10000 * (3.3 - Vout))/Vout;
int lux = 500/(RLDR/1000);
return lux;
}
/* //ฟังก์ชั่นแปลงค่าเป็น Linear
Mode: normal
Polynomial degree 6, 2365 x,y data pairs
Correlation coefficient (r^2) = 9,907187626418e-01
Standard error = 1,353761109831e+01
Output form: C/C++ function:
Copyright © 2012, P. Lutus -- http://www.arachnoid.com.
All Rights Reserved. */
double f(double x) {
return 2.202196968876e+02
+ 3.561383996027e-01 * x
+ 1.276218788985e-04 * pow(x, 2)
+ -3.470360275448e-07 * pow(x, 3)
+ 2.082790802069e-10 * pow(x, 4)
+ -5.306931174991e-14 * pow(x, 5)
+ 4.787659214703e-18 * pow(x, 6);
}