ใบงานที่ 3 การแสดงค่าความเข้มของแสงด้วย 7-Segmet

นางสาวกิตติญากร ขาวใบไม้ 6031280024
นางสาวกิตติมา อุดมปัญญาศิริกุล 6031280025
ปวส.1/2 คอมพิวเตอร์ซอฟต์แวร์


LDR : Light Dependent Resistor)                    
แอลดีอาร์ (LDR : Light Dependent Resistor)  คือ ความต้านทานชนิดที่ไวต่อแสง กล่าวคือ ตัวความต้านทานนี้สามารถเปลี่ยนสภาพทางความนำไฟฟ้า ได้เมื่อมีแสงมาตกกระทบ บางครั้งเรียกว่าโฟโตรีซีสเตอร์ ( Photo  Resistor)   หรือ โฟโตคอนดัคเตอร์   (Photo Conductor)   เป็นตัวต้านทานที่ทำมาจากสารกึ่งตัวนำ  
LDR เป็นตัวต้านทานที่ปรับค่าได้ตามความเข้มของแสง LDR เราสามารถใช้ Arduino อ่านค่าความต้านทานที่เปลี่ยนแปลงตามความเข้มของแสงเพื่อนำไปใช้งานที่ต้องการได้ โดยค่าที่อ่านได้เป็นแบบ อะนาล็อก
Symbol of LDR:
อุปกรณ์ที่ใช้ วงจรที่ 1
  1. โปรโตบอร์ด
  2. บอร์ดArduino Uno R3
  3. สายไฟผู้ผู้
  4. สายอัพโหลด
  5. ตัวต้านทาน
  6. LDR
  7. หลอดไฟ LED
รูปวงจรที่ 1
https://drive.google.com/open?id=1-b6s03y4aXX3Wilv5rxnLN7reGa37wn8

ตัวอย่าง
ให้ LED แสดงผลตามค่าที่ LDR ดังนี้

  1. ถ้า Serial แสดงผล dark ไปหลอดที่ 1 ติด ไฟหลอดที่เหลือดับ
  2. ถ้า Serial แสดงผล dim ไปหลอดที่ 2 ติด ไฟหลอดที่เหลือดับ
  3. ถ้า Serial แสดงผล medium ไปหลอดที่ 3 ติด ไฟหลอดที่เหลือดับ
  4. ถ้า Serial แสดงผล bright ไปหลอดที่  ติด ไฟหลอดที่เหลือดับ


const int sensorMin = 0; // sensor minimum, discovered through experiment const int sensorMax = 600; // sensor maximum, discovered through experiment int LED1=3; int LED2=4; int LED3=5; int LED4=6; void setup() { pinMode (LED1,OUTPUT); pinMode (LED2,OUTPUT); pinMode (LED3,OUTPUT); pinMode (LED4,OUTPUT); Serial.begin(9600); } void loop() { // read the sensor: int sensorReading = analogRead(A0); // map the sensor range to a range of four options: int range = map(sensorReading, sensorMin, sensorMax, 0, 3); // do something different depending on the range value: switch (range) { case 0: // your hand is on the sensor digitalWrite (LED1,HIGH); digitalWrite (LED2,LOW); digitalWrite (LED3,LOW); digitalWrite (LED4,LOW); Serial.println("dark"); break; case 1: // your hand is close to the sensor digitalWrite (LED1,LOW); digitalWrite (LED2,HIGH); digitalWrite (LED3,LOW); digitalWrite (LED4,LOW); Serial.println("dim"); break; case 2: // your hand is a few inches from the sensor digitalWrite (LED1,LOW); digitalWrite (LED2,LOW); digitalWrite (LED3,HIGH); digitalWrite (LED4,LOW); Serial.println("medium"); break; case 3: // your hand is nowhere near the sensor digitalWrite (LED1,LOW); digitalWrite (LED2,LOW); digitalWrite (LED3,LOW); digitalWrite (LED4,HIGH); Serial.println("bright"); break; } delay(1); // delay in between reads for stability }

วิดีโอวงจรที่ 1



อุปกรณ์ที่ใช้ วงจรที่ 2
  1. โปรโตบอร์ด
  2. บอร์ดArduino Uno R3
  3. สายไฟผู้ผู้
  4. สายอัพโหลด
  5. ตัวต้านทาน
  6. LDR
  7. 7-Segmet
รูปวงจรที่ 2  



Code วงจรที่ 2


const int sensorMin = 0;  
const int sensorMax = 600;    

void setup() {
  Serial.begin(9600);
   for (int thisPin = 2; thisPin < 12; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}

void loop() {
  int sensorReading = analogRead(A0);
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
  switch (range) {
    case 0:    // your hand is on the sensor
      Serial.println("dark");
      digitalWrite(3, LOW);
        digitalWrite(6, LOW);
        digitalWrite(8, HIGH);
        digitalWrite(2, HIGH);
        digitalWrite(5, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(4, HIGH);
        break;
    case 1: 
      Serial.println("dim");
           digitalWrite(2, LOW);
        digitalWrite(8, LOW);
        digitalWrite(8, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(7, HIGH);
        digitalWrite(6, HIGH);
        break;
    case 2:
      Serial.println("medium");
          digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(8, LOW);
        digitalWrite(6, LOW);
        digitalWrite(5, LOW);
         digitalWrite(7, HIGH);
          digitalWrite(4, HIGH);
        break;
    case 3: 
      Serial.println("bright");
         digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        digitalWrite(3, LOW);
        digitalWrite(6, LOW);
         digitalWrite(2, HIGH);
          digitalWrite(4, HIGH);
           digitalWrite(5, HIGH);
        break;
      default:
        for (int thisPin = 2; thisPin < 12; thisPin++) {
          digitalWrite(thisPin, LOW);
        }
  delay(1);  
    }
  }

วิดีโอวงจรที่ 2




 อ้างอิง
https://www.arduinoall.com/product/544/%E0%B8%8A%E0%B8%B8%E0%B8%94%E0%B8%97%E0%B8%94%E0%B8%A5%E0%B8%AD%E0%B8%87%E0%B8%AD%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B8%84%E0%B8%A7%E0%B8%B2%E0%B8%A1%E0%B9%80%E0%B8%82%E0%B9%89%E0%B8%A1%E0%B9%81%E0%B8%AA%E0%B8%87-ldr

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการอินเตอร์เฟส (Interfacing Techich)

ใบงานที่ 1 ไฟวิ่ง 8 ดวง

ใบงานที่ 4 การใช้งานเซนเซอร์วัดระยะทาง HC-SR04