const int LDRPin = A0;  //กำหนดขาที่ต่อ LDR

void setup() 
{
  Serial.begin(9600);   //ตั้ง Serial ให้ใช้ความเร็วที่ 9600 : http://www.ayarafun.com/2011/02/arduino-tutorial-2-how-to-use-serial/
}

void loop() {
  int sensorValue = 1024 - analogRead(LDRPin);  //อ่านค่า ADC ที่ขา LDRPin เก็บลงตัวแปร sensorValue
  //แต่ค่าเดิมๆ ที่อ่านได้ แสงมาก = ค่าน้อย | แสงน้อย = ค่ามาก เลยทำการ ค่าที่อ่านได้สูงสุด (1024) - ค่าที่อ่านได้ ก็จะกลายเป็น
  //แสงมาก = ค่ามาก | แสงน้อย = ค่าน้อย

  float lux;    //สร้างตัวแปรสำหรับเก็บค่าความสว่าง

  //ทำการปรับค่า sensorValue เป็น lux ตาม gain(อัตราขยาย)
  //่ช่วง 0  - 600 จะอ่านค่าได้ราวๆ 0.1 - 200 lux
  //่ช่วง 600  - 1000 จะอ่านค่าได้ราวๆ 200 - 2000 lux
  //่ช่วง 1000  - 1023 จะอ่านค่าได้ราวๆ 2000 - 1000000 lux
  if(sensorValue < 200) lux = sensorValue * (5.0 / 1023.0) * 10.0;
  else if(sensorValue < 300) lux = sensorValue * (5.0 / 1023.0) * 15.0;
  else if(sensorValue < 400) lux = sensorValue * (5.0 / 1023.0) * 23.0;
  else if(sensorValue < 500) lux = sensorValue * (5.0 / 1023.0) * 35.0;
  else if(sensorValue < 550) lux = sensorValue * (5.0 / 1023.0) * 42.0;
  else if(sensorValue < 600) lux = sensorValue * (5.0 / 1023.0) * 53.0;
  else if(sensorValue < 650) lux = sensorValue * (5.0 / 1023.0) * 64.0;
  else if(sensorValue < 700) lux = sensorValue * (5.0 / 1023.0) * 76.0;
  else if(sensorValue < 720) lux = sensorValue * (5.0 / 1023.0) * 85.0;
  else if(sensorValue < 740) lux = sensorValue * (5.0 / 1023.0) * 96.0;
  else if(sensorValue < 760) lux = sensorValue * (5.0 / 1023.0) * 103.0;
  else if(sensorValue < 780) lux = sensorValue * (5.0 / 1023.0) * 110.0;
  else if(sensorValue < 800) lux = sensorValue * (5.0 / 1023.0) * 136.0;
  else if(sensorValue < 820) lux = sensorValue * (5.0 / 1023.0) * 150.0;
  else if(sensorValue < 840) lux = sensorValue * (5.0 / 1023.0) * 180.0;
  else if(sensorValue < 860) lux = sensorValue * (5.0 / 1023.0) * 220.0;
  else if(sensorValue < 880) lux = sensorValue * (5.0 / 1023.0) * 260.0;
  else if(sensorValue < 900) lux = sensorValue * (5.0 / 1023.0) * 310.0;
  else if(sensorValue < 920) lux = sensorValue * (5.0 / 1023.0) * 380.0;
  else if(sensorValue < 940) lux = sensorValue * (5.0 / 1023.0) * 420.0;
  else if(sensorValue < 960) lux = sensorValue * (5.0 / 1023.0) * 675.0;
  else if(sensorValue < 980) lux = sensorValue * (5.0 / 1023.0) * 1250.0;
  else if(sensorValue < 1000) lux = sensorValue * (5.0 / 1023.0) * 2500.0;
  else if(sensorValue < 1010) lux = sensorValue * (5.0 / 1023.0) * 5000.0;
  else if(sensorValue < 1012) lux = sensorValue * (5.0 / 1023.0) * 10000.0;
  else if(sensorValue < 1016) lux = sensorValue * (5.0 / 1023.0) * 14000.0;
  else if(sensorValue < 1020) lux = sensorValue * (5.0 / 1023.0) * 20000.0;
  else lux = sensorValue * (5.0 / 1023.0) * 1500.0;

  Serial.print("Raw value: ");
  Serial.println(lux);      //ส่งข้อความไปยัง Serial Monitor

  delay(1000);    //หน่วงเวลา 1 วินาที
}