วันพุธที่ 28 มีนาคม พ.ศ. 2561

ใบงานที่ 6 การควบคุม Servo Motor (SG90) ด้วย Arduino UNO R3

ผู้จัดทำ

                                                  นาย  คมสันต์  รั่วลี 1 สทค 1 6031280004
                                                  นาย  ชัยวัฒน์  มาลาเอี่ยม  1 สทค 1 6031280010


อุปกรณ์ที่ใช้
  
1.  บอร์ด Arduino
2.  สาย USB
3.  Servo SG90
4. สายไฟ 3 เส้น




รูปวงจร



ดาวโหลด : คลิก!

------------------------------------------------------------------------------------- 

                                                         Code 0-180 องศา



#include <Servo.h>



Servo servo;

int angle = 0;



void setup() {

  servo.attach(8);

  servo.write(angle);

}


void loop() 
 // scan from 0 to 180 degrees
  for(angle = 0; angle < 180; angle++)  
  {                                  
    servo.write(angle);               
    delay(15);                   
  } 
  // now scan back from 180 to 0 degrees
  for(angle = 180; angle > 0; angle--)    
  {                                
    servo.write(angle);           
    delay(15);       
  } 

ดาวโหลด Code : คลิก!
------------------------------------------------------------------------------------- 

                                                                  คำอธิบาย

Servo ทำหน้าที่หมุดจาก ซ้าย-ขวา 180 องศา แล้วกลับ ขวา-ซ้าย 0 องศา และหมุดวนไปเรื่อยๆ




วีดีโอ


                                           


                                            Code 45-135 องศา

#include <Servo.h>

Servo servo;

int angle = 45;
void setup() {
  servo.attach(8);
  servo.write(angle);
}


void loop() 
 // scan from 45 to 135 degrees
  for(angle = 45; angle < 135; angle++)  
  {                                  
    servo.write(angle);               
    delay(15);                   
  } 
  // now scan back from 135 to 45 degrees
  for(angle = 135; angle > 45; angle--)    
  {                                
    servo.write(angle);           
    delay(15);       
  } 


ดาวโหลด Code : คลิก!
------------------------------------------------------------------------------------- 
                                                                 คำอธิบาย


Servo ทำหน้าที่หมุดจาก ซ้าย-ขวา 135 องศา แล้วกลับ ขวา-ซ้าย 45 องศา และหมุดวนไปเรื่อยๆ



วีดีโอ


                                           Code 90-180 องศา

#include <Servo.h>

Servo servo;

int angle = 90;
void setup() {
  servo.attach(8);
  servo.write(angle);
}


void loop() 
 // scan from 90 to 180 degrees
  for(angle = 90; angle < 180; angle++)  
  {                                  
    servo.write(angle);               
    delay(15);                   
  } 
  // now scan back from 180 to 90 degrees
  for(angle = 180; angle > 90; angle--)    
  {                                
    servo.write(angle);           
    delay(15);       
  } 


                                                                 คำอธิบาย


Servo ทำหน้าที่หมุดจาก ซ้าย-ขวา 180 องศา แล้วกลับ ขวา-ซ้าย 90 องศา และหมุดวนไปเรื่อยๆ



วีดีโอ






วันจันทร์ที่ 26 มีนาคม พ.ศ. 2561

ใบงานที่ 5 HC-SR04 with Buzzer

ผู้จัดทำ

                                                  นาย  คมสันต์  รั่วลี 1 สทค 1 6031280004
                                                  นาย  ชัยวัฒน์  มาลาเอี่ยม  1 สทค 1 6031280010


อุปกรณ์ที่ใช้

1.  ตัวต้านทาน 220R 1ตัว 
2.  สายไฟ 8 เส้น
3.  บอร์ด Arduino
4.  สาย USB
5.  โฟโต้บอร์ด
6.  HC - SR04
7.  Buzzer


                  


Speaker&Buzzer


ลำโพงขนาดเล็กที่ใช้ต่อกับไมโครคอนโทรลเลอร์
ลำโพงแบบ Magnetic-diaphragm ขนาดเล็ก
- ให้เสียงดัง แต่มีความต้านทานต่ำ ต้องมีทรานซิสเตอร์ช่วยขับอีกทีหนึ่ง
แบบ diaphragm โลหะ
ข้างในประกอบด้วย diaphragm, ขดลวด, และแม่เหล็กถาวร
- ลำโพงแบบนี้จะมีขนาดเล็ก ให้ระดับเสียงสูงได้ดี แต่ระดับเสียงต่ำไม่ค่อยดีนัก
แบบ diaphragm พลาสติค
- ลำโพงแบบนี้จะให้ระดับเสียงต่ำได้ดีขึ้น

ลำโพงแบบเปียโซ (Piezo)
- มีความต้านทานสูงสามารถต่อกับไมโครคอนโทรลเลอร์ได้โดยตรง
- แผ่นลำโพงแบบเปียโซ มีคุณสมบัติเมื่อป้อนแรงดันไฟฟ้าจะทำให้เกิดการบิดงอไปมาทำให้เกิดเสียงขึ้น
- คุณสมบัติของเสียงขึ้นอยู่กับขนาดของแผ่น Piezo และกล่องกำทอน (resonance box)
แผ่น diaphragm ของลำโพงแบบเปียโซ
ลำโพงแบบเปียโซเมื่ออยู่ในกล่องกำทอน (resonance box)
ลำโพงแบบเปียโซเมื่ออยู่ในกล่องกำทอน (resonance box) อีกลักษณะหนึ่ง

บัซเซอร์ (Buzzer )
- คือลำโพงแบบแม่เหล็กหรือ แบบเปียโซที่มีวงจรกำเนิดความถี่ (oscillator ) อยู่ภายในตัว
เมื่อป้อนแรงดันสามารถกำเนิดเสียงได้ด้วยตัวเอง แต่ไม่สามารถเปลี่ยนความถี่ของเสียงได้
Buzzer แบบ diaphragm -แม่เหล็ก
Buzzer แบบ diaphragm -Peizo


                                                   Code


const int trigPin = 9;
const int echoPin = 10;
int buzzer = 5;
int LED1 = 2;


float duration, distance;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode (LED1,OUTPUT);
  pinMode (buzzer,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = (duration*.0343)/2;
  Serial.print("ระยะวัตถุ: ");
  Serial.print(distance);
  Serial.println("ซม.");
   Serial.print("ระยะวัตถุ :");
   Serial.print(distance*0.39270);
   Serial.println("นิ้ว");
  delay(500);
  if(distance >= 31)//ระยะวัตถุ ตั้งแต่ 31 ซม. 
  {
    digitalWrite (LED1,LOW);
    digitalWrite (buzzer,LOW);
  }
  if(distance <= 30 && distance >= 21)//ระยะวัตถุ ตั้งแต่ 21-30 ซม.
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (buzzer,HIGH);
    delay (1000);
    digitalWrite (LED1,LOW);
    digitalWrite (buzzer,LOW);
    delay (1000);
  }
 else
 {
 digitalWrite (LED1,LOW);
 digitalWrite (buzzer,LOW);
 }
  if(distance <= 20 && distance >= 11)//ระยะวัตถุ ตั้งแต่ 11-20 ซม.
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (buzzer,HIGH);
    delay (500);
    digitalWrite (LED1,LOW);
    digitalWrite (buzzer,LOW);
    delay (500);
  }
 else
 {
 digitalWrite (LED1,LOW);
 digitalWrite (buzzer,LOW);
 }
 if(distance <= 10 && distance >= 6)//ระยะวัตถุ ตั้งแต่ 6-10 ซม.
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (buzzer,HIGH);
    delay (200);
    digitalWrite (LED1,LOW);
    digitalWrite (buzzer,LOW);
    delay (200);
  }
 else
 {
 digitalWrite (LED1,LOW);
 digitalWrite (buzzer,LOW);
 }
 if(distance < 6)//ระยะวัตถุ ตั้งแต่ 5 ซม.
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (buzzer,HIGH);
 }
 else
 {
  digitalWrite (LED1,LOW);
 digitalWrite (buzzer,LOW);
 }
}

ดาวโหลด Code : คลิก!
-------------------------------------------------------------------------------------

คำอธิบาย

-ถ้า ระยะวัตถุ ตั้งแต่ 21-30 ซม. ให้ Buzzer ส่งเสียงเตือนเป็นจังหวะ ติด 1 วินาที - ดับ 1 วินาที -ถ้า ระยะวัตถุ ตั้งแต่ 11-20 ซม. ให้ Buzzer ส่งเสียงเตือนเป็นจังหวะ ติด 0.5 วินาที - ดับ 0.5 วินาที -ถ้า ระยะวัตถุ ตั้งแต่ 6-10 ซม. ให้ Buzzer ส่งเสียงเตือนเป็นจังหวะ ติด 0.2 วินาที - ดับ 0.2 วินาที
-ถ้า ระยะวัตถุ ตั้งแต่ 5 ซม. ลงมา ให้ Buzzer ส่งเสียงเตือนติดยาวตลอด -ถ้า ระยะวัตถุ ตั้งแต่ 31 ซม. ให้ Buzzer ไม่เสียงเตือน และให้ LED แสดงผลตามจังหวะเสียงของ Buzzer ทั้งนี้ให้ Serial Monitor แสดงค่าระยะทาง หน่วยเป็น cm และ inch (นิ้ว)

                                                 

                                                รูปภาพ


ดาวโหลด : คลิก!
-------------------------------------------------------------------------------------



วีดีโอ





วันอาทิตย์ที่ 25 มีนาคม พ.ศ. 2561

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

ผู้จัดทำ

                                                  นาย  คมสันต์  รั่วลี 1 สทค 1 6031280004
                                                  นาย  ชัยวัฒน์  มาลาเอี่ยม  1 สทค 1 6031280010


อุปกรณ์ที่ใช้

1.  ตัวต้านทาน 220R 6 ตัว 
2.  สายไฟ 11 เส้น
3.  บอร์ด Arduino
4.  สาย USB
5.  โฟโต้บอร์ด
6.  HC - SR04


Code
const int trigPin = 9;
const int echoPin = 10;
int LED1=3;
int LED2=4;
int LED3=5;
int LED4=6;
int LED5=7;
int LED6=8;

float duration, distance;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode (LED1,OUTPUT);
  pinMode (LED2,OUTPUT);
  pinMode (LED3,OUTPUT);
  pinMode (LED4,OUTPUT);
  pinMode (LED5,OUTPUT);
  pinMode (LED6,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = (duration*.0343)/2;
  Serial.print("Distance: ");
  Serial.println(distance);
  delay(100);
  if(distance <= 30)
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (LED2,HIGH);
  }
  if(distance > 30)
  {
    digitalWrite (LED1,LOW);
    digitalWrite (LED2,LOW);
  }
   if(distance <= 20)
  {
    digitalWrite (LED3,HIGH);
    digitalWrite (LED4,HIGH);
  }
     if(distance > 20)
  {
    digitalWrite (LED3,LOW);
    digitalWrite (LED4,LOW);
  }
   if(distance <= 10)
  {
    digitalWrite (LED5,HIGH);
    digitalWrite (LED6,HIGH);
  }
     if(distance > 10)
  {
    digitalWrite (LED5,LOW);
    digitalWrite (LED6,LOW);
  }
  if(distance <= 6)
  {
    digitalWrite (LED1,HIGH);
    digitalWrite (LED2,HIGH);
    digitalWrite (LED3,HIGH);
    digitalWrite (LED4,HIGH);
    digitalWrite (LED5,HIGH);
    digitalWrite (LED6,HIGH);
    delay(300);
    digitalWrite (LED1,LOW);
    digitalWrite (LED2,LOW);
    digitalWrite (LED3,LOW);
    digitalWrite (LED4,LOW);
    digitalWrite (LED5,LOW);
    digitalWrite (LED6,LOW);
    delay(300);
  }
  delay(300);

}


ดาวโหลด Code : คลิก!
------------------------------------------------------------------------------------- 

คำอธิบาย

ถ้าระยะทางตั้งแต่ 21-30 ซม. LED สีเขียวติด 2 ดวง ถ้าระยะทางตั้งแต่ 11-20 ซม. LED สีเหลืองติด 2 ดวง(สีเขียว ยังคงติด) ถ้าระยะทางตั้งแต่ 6-10 ซม. LED สีแดงติด 2 ดวง(สีเขียวและสีเหลือง ยังคงติด) ถ้าระยะ น้อยกว่า 6 ให้ LE กระพริบทั้ง 6 ดวง (ติด 0.3 วินาที ดับ 0.3 วินาที)



รูปภาพ







ดาวโหลด : คลิก!

------------------------------------------------------------------------------------- 


วีดีโอ











วันพฤหัสบดีที่ 22 มีนาคม พ.ศ. 2561

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

ผู้จัดทำ

                                                  นาย  คมสันต์  รั่วลี 1 สทค 1 6031280004
                                                  นาย  ชัยวัฒน์  มาลาเอี่ยม  1 สทค 1 6031280010

อุปกรณ์ที่ใช้

1.  7  segment
2.  ตัวต้านทาน 220R 1 ตัว , 10k
3.  สายไฟ 12 เส้น
4.  บอร์ด Arduino
5.  สาย USB
6.  โฟโต้บอร์ด
7.  LDR

                                                 LDR  คือ


LDR : Light Dependent Resistor)                    
แอลดีอาร์ (LDR : Light Dependent Resistor)  คือ ความต้านทานชนิดที่ไวต่อแสง กล่าวคือ ตัวความต้านทานนี้สามารถเปลี่ยนสภาพทางความนำไฟฟ้า ได้เมื่อมีแสงมาตกกระทบ บางครั้งเรียกว่าโฟโตรีซีสเตอร์ ( Photo  Resistor)   หรือ โฟโตคอนดัคเตอร์   (Photo Conductor)   เป็นตัวต้านทานที่ทำมาจากสารกึ่งตัวนำ  
(Semiconductor)   ประเภทแคดเมี่ยมซัลไฟด์ ( Cds : Cadmium Sulfide)   หรือแคดเมี่ยมซิลินายส์ ( CdSe : Cadmium Selenide)   ซึ่งทั้งสองตัวนี้ก็เป็นสารประเภทกึ่งตัวนำ เอามาฉาบลงบนแผ่นเซรามิกที่ใช้เป็นฐานรองแล้วต่อขาจากสารที่ฉาบ ไว้ออกมา
รูปที่ 1 โครงสร้าง LDR

รูปร่างของ LDR ในรูปที่ 1 ส่วนที่ขดเป็นแนวเล็กๆสี ดำทำหน้าที่เป็นตัวต้านทานไวแสง และ แนวสีดำ นั้นจะแบ่งพื้นที่ของตัวมันออกเป็น 2 ข้าง สีทองนั้น เป็นตัวนำไฟฟ้าที่ทำหน้าที่สัมผัส กับตัวต้านทานไวแสง เป็นที่สำหรับต่อขาออกมาภายนอก หรือ เรียกว่าอิเล็กโทรด ที่เหลือก็จะเป็นฐานเซรามิก และ อุปกรณ์ สำหรับห่อหุ้มมัน ซึ่งมีได้หลายแบบ
สมบัติทางแสง การทำงานของ LDR เพราะว่าเป็นสารกึ่งตัวนำ เวลามีแสงตกกระทบลงไปก็จะถ่ายทอดพลังงาน ให้กับสาร ที่ฉาบอยู่ ทำให้เกิดโฮลกับอิเล็กตรอนวิ่งกันพล่าน. การที่มีโฮล กับอิเล็กตรอนอิสระนี้มากก็เท่ากับ ความต้านทานลดลงนั่นเอง ยิ่ง ความเข้มของแสงที่ตกกระทบมากเท่าไร ความต้านทานก็ยิ่งลดลงมากเท่านั้น
รูปที่ 2 ตัวอย่างกราฟแสดงความไวต่อแสงความถี่ต่าง ๆ ของ LDR ทั้ง 2 แบบ เมื่อเทียบกับความไวของตาคน
ในส่วนที่ว่าแสงตกกระทบนั้น มิใช่ว่าจะเป็นแสงอะไรก็ได้ เฉพาะแสงในช่วงความยาวคลื่นประมาณ 4,000 อังสตรอม ( 1 อังสตรอม เท่ากับ 10 - 10 เมตร ) ถึงแระมาณ 10,000 อังสตรอมเท่านั้นที่จะใช้ได้ ( สายตาคนจะเห็นได้ ในช่วงประมาณ 4,000 อังสตรอม ถึง 7,000 อังสตรอม ) ซึ่งคิดแล้วก็เป็นช่วงคลื่นเพียงแคบ ๆ


เมื่อเทียบกับการทำงาน ของอุปกรณ์ไวแสง ประเภทอื่น ๆ แต่ถึงอย่างไรแสงในช่วงคลื่นนี้ ก็มีอยู่ในแสงอาทิตย์ แสงจากหลอดไฟแบบไส้ และ แสงจากหลอดฟลูออเรสเซนต์ ด้วย หรือ ถ้าจะคิดถึงความยาวคลื่น ที่ LDR จะตอบสนองไวที่สุดแล้ว ก็มีอยู่หลาย ความยาวคลื่น โดยทั่วไป LDR ที่ทำจากแคดเมียมซัลไฟด์ จะไวต่อแสงที่มีความยาวคลื่นในช่วง 5,000 กว่า อังสตรอม. ซึ่งเราจะเห็นเป็นสีเขียว ไปจนถึงสีเหลือง สำหรับ บางตัวแล้ว ความ ยาวคลื่นที่ไวที่สุดของมันใกล้เคียงกับความยาวคลื่นที่ไวที่สุดของตาคนมาก ( ตาคนไวต่อความ ยาวคลื่น ประมาณ 5,550 อังสตรอม ) จึงมักจะใช้ทำเป็นเครื่องวัดแสง ในกล้องถ่ายรูป ถ้า LDR ทำจาก แคดเมียมซีลิไนด์ก็จะไวต่อ ความ ยาวคลื่นในช่วง 7,000 กว่า อังสตรอม ซึ่งไปอยู่ใน ช่วงอินฟราเรดแล้ว
ผลตอบสนองทางไฟฟ้า
อัตราส่วนระหว่างความต้านทานของ LDR ในขณะที่ไม่มีแสง กับขณะที่มีแสง อาจจะเป็นได้ตั้งแต่ 100 เท่า 1,000 เท่า หรือ 10,000 เท่า แล้วแต่รุ่น แต่โดยทั่วไปแล้วค่าความต้านทานในขณะที่ไม่มีแสงจะอยู่ในช่วง ประมาณ 0.5 MW ขึ้นไป ในที่มืดสนิทอาจขึ้นไปได้มากกว่า 2 MW และ ในขณะที่มีแสงจะเป็นประมาณ 10 - 20kW ลง ไป อาจจะเหลือเพียงไม่กี่โอห์ม หรือ ไม่ถึงโอห์มก็ได้. ทนแรงดันสูงสุดได้ไม่ต่ำกว่า 100 V และ กำลังสูญเสีย อย่างต่ำประมาณ 50 mW
รูปที่ 3 ผลของการเปลี่ยนความเข้มแสงในทันทีทันใดกับ LDR
นอกเหนือจากลักษณะสมบัติต่างๆ เหล่านี้แล้วยังมีอีกอย่างหนึ่งที่สำคัญ คือ ปรากฏการณ์ที่เกิดขึ้นจากความ เข้มแสดง เปลี่ยนแปลงอย่างฉับพลัน ซึ่งจะดูตัวอย่างได้ในรูปที่ 3 ถ้า LDR ได้รับแสงที่มีความเข้มสูงดังเส้น ( ก ) ความต้านทานจะมีค่า ต่ำ และ ในทันทีที่ความเข้มของแสงถูกลดลงหลือเพียงระดับอ้างอิง ความต้านทานก็จะค่อยๆ เพิ่มขึ้นไปจนถึงค่าความต้านทาน ที่มันควรจะเป็นในระดับอ้างอิง. แต่แทนที่มันจะไปหยุดอยู่ระดับอ้างอิง มันกลับ เพิ่มเลยขึ้นไปอีกแล้วจึงจะลดลงมาอยู่ในระดับ อ้างอิง เหมือนกับว่า เบรกมันไม่ค่อยดี และ ในทำนองเดียวกันถ้า เก็บมันไว้ในที่ความเข้มแสงน้อยๆ แล้วเปลี่ยนความเข้มเป็นระดับ อ้างอิงทันที ดังในรูป (ข ) ความต้านทานก็จะลด เลยต่ำลงมาจากระดับอ้างอิงแล้วจึงขึ้นไปใหม่ ยิ่งความเข้มของแสงเท่ากัน LDR แบบแคดเมียมซีนิไนด์ จะใช้เวลา ในการเข้าสู่สภาวะที่มันควรจะเป็นน้อยกว่า แบบ แคดเมียมซัลไฟต์ แต่ก็จะวิ่งเลยไปไกลกว่าด้วย และ อีกอย่างหนึ่ง ความเร็วในการเปลี่ยนระดับความต้านทานจากค่าหนึ่งไปอีกค่า

หนึ่งช้ามาก. ซึ่งจะอยู่ในช่วงของมิลลิวินาทีหรือ บาง ทีก็เป็นวินาที เลย จึงทำให้ LDR ใช้ได้ กับงานความถี่ต่ำๆ เท่านั้น
ทำเป็นเครื่องวัดแสง ในรูปที่ 4 เป็นวงจรเครื่องวัดแสงแบบง่ายจริงๆ LDR ที่ใช้ก็ควรจะมีอัตราส่วนของค่าความต้านทาน ระหว่างไม่มีแสง กับมีแสงมากๆ หน่อย เวลาใช้ต้องระวังอย่าให้เข็มมิเตอร์ตีเกินสเกล ของแพงมาเสียง่ายๆ อย่าง นี้มันน่าเจ็บใจตัวเอง
รูปที่ 4 เครื่องวัดแสงแบบง่ายที่สุด
อีกวงจรหนึ่งในรูปที่ 5 เป็นวงจรที่ดัดแปลงให้ดีขึ้นแล้วโดยเอาออปแอมป์เบอร์ 741 เข้ามาช่วยทำให้ไวขึ้น มาก จะเอา ดิจิตอลมัลติมิเตอร์มาต่อแทนแบบเข็มก็ได้ แต่ต้องระวังแสงจาก LED จะไปกวนการทำงานของ LDR
รูปที่ 5 วงจรเครื่องวัดแสงที่ปรับปรุงขึ้นแล้ว
สวิตซ์ทำงานด้วยแสง การใช้ LDR ทำงานในวงจรปิดเปิดสวิตซ์ เราก็ จะใช้เพียง 2 อย่างเท่านั้น คือ มีแสง หรือ ไม่มีแสง. โดย ทั่วไปเราจะ ใช้วิธีเอามาอนุกรมกับตัวต้านทานตัวหนึ่ง แล้วต่อเป็นวงจรแบ่งแรงดันออกมาตามรูปที่ 6 อย่างในรูป ( ก ) จะทำงานดังนี้ คือ ถ้ามีแสงสว่าง LDR จะมีความต้านทานต่ำ ทำให้แรงดันส่วนใหญ่มาตกคร่อม R 1

เสียหมด แรงดันเอาต์พุต จึงสูงเกือบเท่า แรงดันไฟเลี้ยง และ ถ้าไม่มี แสง LDR จะมีความต้านทานสูง แรงดันส่วนใหญ่จะ ไปตกที่ LDR แรงดันเอาต์พุต จึงเกือบเป็น 0 โวลต์
รูปที่ 6 หลักการใช้ LDR ในวงจรปิดเปิดสวิตซ์
ในรูปที่ 6 ( ข ) วงจรจะทำงาน ในทางตรงข้าม เพียงแต่สลับที่ระหว่าง LDR กับ R 1 เวลามีแสงสว่าง เอาต์พุตก็จะเกือบ เป็น 0 โวลต์ เวลาไม่มีแสงสว่างเอาต์พุตก็เกือบเท่าแรงดันไฟเลี้ยงจะเห็นได้ว่ากลับกับกรณีแรก
รูปที่ 7 ตัวอย่างวงจรควบคุมสวิตซ์โดยรีเลย์จะทำงานเมื่อไม่มีแสงสว่าง
ทั้ง 2 กรณี จะมีวงจรที่ต่อออกไปสำหรับจับสัญญาณว่ามีแสงสว่างหรือไม่. แล้วนำไปควบคุมสวิตช์ อีกทีให้ ทำงานใน กรณีที่ต้องการ. ในรูปที่ 7 เป็นตัวอย่างวงจรซึ่งรีเลย์จะทำงานเมื่อไม่มีแสงสว่าง ซึ่งถ้าเราไม่ต้องการแบบนี้ และ อยากให้รีเลย์ ทำงาน เมื่อมีแสงสว่างก็เพียงแต่สลับที่ระหว่าง LDR กับความต้านทานปรับค่าได้ 100 kW เท่านั้น
รูปที่ 8 วงจรเตือนภัยเป็นเสียงเมื่อมีแสงสว่างกระทบ LDR
ในรูปที่ 8 ก็เป็น ตัวอย่างวงจรอีกอันหนึ่งทำงานเมื่อมีแสงสว่าง ตัวอย่างอื่นๆ ก็ได้แก่ วงจรจับควันไฟ , วงจรกะพริบ เพื่อความปลอดภัยเมื่อมีรถยนต์แล่นผ่านมา. ซึ่งโดยหลักการแล้วไม่ยาก คงจะนำไปดัดแปลงใช้กันได้
ใช้ LDR ตลอดช่วง
รูปที่ 9 ตัวอย่างวงจรเปลี่ยนสัญญาณแสงเป็นสัญญาณเสียง
นอกจากวงจรเครื่องวัดแสง ซึ่งเป็นที่รู้จักกันดีในการประยุกต์ LDR ให้ใช้งานแบบทุกช่วงการเปลี่ยนแปลงแล้ว ยังมีคน ดัดแปลงไปใช้ในวงจรอื่นๆ อีก เช่น วงจรแปลงสัญญาณอะนาลอก เป็นสัญญาณดิจิตอล เพื่อเชื่อมต่อส่วนที่เป็น วงจรอะนาล็อก ให้ส่งสัญญาณผ่านเข้าไปทำงานในวงจรดิจิตอลได้ ดังเช่น รูปที่ 9 เป็นวงจรแปลงระดับความเข้มแสง ซึ่งเป็นสัญญาณ อะนาล็อกให้ออกมาเป็นจำนวนลูกคลื่นสี่เหลี่ยม ยิ่งความเข้มแสงมากเท่าไหร่ จำนวนลูกคลื่น สี่เหลี่ยมก็จะยิ่งออกมามากเท่านั้น วงจรนี้ ใช้ไอซี 555 ความถี่ของคลื่นที่ออกมาจะได้ประมาณ 22kHz ถ้าเอาไป รับแสงใกล้ๆ หลอดไฟขนาด 60 วัตต์ แต่จะ เหลือเพียงประมาณ 1Hz ในที่มืด ถ้าเอาลำโพงอนุกรมกับตัวต้านทาน 220W ไปต่อเข้ากับขา 3 และ ไฟบวกก็จะได้ยินเสียง สูงๆ

ต่ำๆ ตามความเข้มของแสง ลองดูก็ได้คงจะสนุกไม่เลว และ ตัวอย่างอีกอันหนึ่งจะเห็นได้ในรูปที่ 10 เป็นวงจรเปิด - หรี่ - ปิดไฟ ซึ่งจะควบคุมให้หลอดไฟสว่างขึ้นในขณะ ที่แสงสว่างของสภาพแวดล้อมลดลงเป็นตัวอย่างที่ดีเหมือนกัน
รูปที่ 10 วงจรเปิด-หรี่-ปิดไฟ



                                                รูปวงจร 1



  Code 1


/*
  Switch statement

  Demonstrates the use of a switch statement. The switch statement allows you
  to choose from among a set of discrete values of a variable. It's like a
  series of if statements.

  To see this sketch in action, put the board and sensor in a well-lit room,
  open the Serial Monitor, and move your hand gradually down over the sensor.

  The circuit:
  - photoresistor from analog in 0 to +5V
  - 10K resistor from analog in 0 to ground

  created 1 Jul 2009
  modified 9 Apr 2012
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/SwitchCase
*/

// these constants won't change. They are the lowest and highest readings you
// get from your sensor:

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() {
  // initialize serial communication:
  Serial.begin(9600);
for (int thisPin = 2; thisPin < 9; thisPin++) {
    pinMode(thisPin, OUTPUT);
}
}
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);
  if (Serial.available() > 0) {
    int inByte = Serial.read();
  // do something different depending on the range value:
  switch (range) {
    case 0:    // your hand is on the sensor
      Serial.println("dark");
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(2, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      digitalWrite(8, HIGH);
      break;

    case 1:    // your hand is a few inches from the sensor
      Serial.println("medium");
      digitalWrite (LED1,LOW);
      digitalWrite (LED2,HIGH);
      digitalWrite (LED3,LOW);
      digitalWrite (LED4,LOW);
      break;
    case 2:    // your hand is nowhere near the sensor
      Serial.println("Dim");
      digitalWrite (LED1,LOW);
      digitalWrite (LED2,LOW);
      digitalWrite (LED3,HIGH);
      digitalWrite (LED4,LOW);
      break;
    case 4:    // your hand is nowhere near the sensor
      Serial.println("bright");
      digitalWrite (LED1,LOW);
      digitalWrite (LED2,LOW);
      digitalWrite (LED3,LOW);
      digitalWrite (LED4,HIGH);
      break;
      default:
      for (int thisPin = 2; thisPin < 9; thisPin++) {
          digitalWrite(thisPin, LOW);
        }
  }
  delay(1);        // delay in between reads for stability
}
}




                                                  วีดีโอ




                                                รูปวงจร 2






                                             ดาวโหลด : คลิก!


-------------------------------------------------------------------------------------                                                                                
                                                                Code 2


int LED1=2;
int LED2=3;
int LED3=4;
int LED4=5;
int LED5=6;
int LED6=7;
int LED7=8;

const int sensorMin = 0;      // sensor minimum, discovered through experiment
const int sensorMax = 600;    // sensor maximum, discovered through experiment

void setup() {
  pinMode (LED1,OUTPUT);
  pinMode (LED2,OUTPUT);
  pinMode (LED3,OUTPUT);
  pinMode (LED4,OUTPUT);
  pinMode (LED5,OUTPUT);
  pinMode (LED6,OUTPUT);
  pinMode (LED7,OUTPUT);
  
  // initialize serial communication:
  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
      Serial.println("dark");  //1
        digitalWrite(8, HIGH);
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
      break;
    case 1:    // your hand is close to the sensor
      Serial.println("dim"); //2
        digitalWrite(8, LOW);
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, HIGH);
        digitalWrite(5, LOW);
        digitalWrite(6, LOW);
        digitalWrite(7, HIGH); 
      break;
    case 2:    
      Serial.println("medium");//3
        digitalWrite(8, LOW);
        digitalWrite(2, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(7, HIGH);
      break;
    case 3:   
      Serial.println("bright");//4
       digitalWrite(8, LOW);
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, HIGH);
        digitalWrite(6, HIGH);
        digitalWrite(7, LOW);
      break;
  }
  delay(1);        

}

ดาวโหลล Code : คลิก!
------------------------------------------------------------------------------------- 
วีดีโอ