วันศุกร์ที่ 5 กันยายน พ.ศ. 2557

การทดลองที่ 3.3 การจำลองการทำงานของลอจิกเกต

วัตถุประสงค์
  1. ฝึกต่อวงจรโดยใช้ใช้ไอซี 74HCT00N เพื่อสร้างเป็นวงจร RS Latch
  2. ฝึกเขียนโปรแกรมสำหรับ Arduino เพื่อเลียนแบบการทำงานของ RS Latch     
รายการอุปกรณ์
         1.แผงวงจร(เบรดบอร์ด)                               1 อัน
         2.บอร์ด Arduino(ใช้แรงดัน +5V)                  1 บอร์ด
         3. ไอซี 74HCT00N                                     1 ตัว
         4.ไดโอดเปล่งแสงขนาด 5 มม.                     2 ตัว
         5.ปุ่มกดแบบสี่ขา                                         2 ตัว
         6.ตัวต้านทาน 330Ω หรือ 470Ω                     2 ตัว
         7.ตัวต้านทาน 10kΩ                                     2 ตัว
         8.สายไฟสำหรับต่อวงจร                               1 ชุด
         9.แหล่งจ่ายควบคุมแรงดัน                            1 ชุด
       10.มัลติมิเตอร์                                               1 เครื่อง

ขั้นตอนการทดลอง

  1. ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี 74HCT00N เพื่อสร้างลอจิกเกต RS Latch ตามผังวงจรในรูปที่ 3.3.1 และป้อนแรงดันไฟเลี้ยง Vcc=5V และ GND จากแหล่งจ่ายควบคุมแรงดัน ให้ไอซีและวงจรบนเบรดบอร์ด
  2. กำหนดสถานะของสัญญาณอินพุต A และ B ทั้งหมด 4 กรณี โดยการกดปุ่มค้างไว้(LOW)หรือไม่ กดปุ่ม(HIGH) ตามตารางที่ 3.3.1 ใช้มัลติมิเตอร์วัดแรงดันของสัญญาณ Q และ/Q รวมถึงสังเกตสถานะติด/ดับของ LED ทั้งสอง สำหรับแต่ละกรณีของอินพุต แล้วบันทึกผลที่ลงในตาราง
  3. ต่อวงจรตามผังวงจรในรูปที่ 3.3.2 โดยใช้บอร์ด Arduino ปุ่มกดแบบสี่ขา ไดโอดเปล่งแสง และตัวต้านทาน และให้เขียนโปรแกรมสำหรับ Arduino เพื่อเลียนแบบพฤติกรรมการทำงานของ RS Latch (ความสัมพันธ์ระหว่างอินพุตและเอาต์พุต) ตามที่โจทย์การทดลองในข้อที่ 2

รูปที่ 3.3.1 :ผังวงจรสำหรับสร้าง RS Latch โดยใช้เกต NAND2


             กรณีที่1 ไม่กดปุ่ม                                                                  กรณีที่2 กดปุ่ม S2


           กรณีที่3กดปุ่ม S1                                                                กรณีที่4กดปุ่ม S1 และ S2






รูปที่ 3.3.2 : ผังวงจรสำหรับใฃ้บอร์ด Arduino เลียนแบบการทำงานของ RS Latch


โค้ด Arduino

const byte S1 = 2;   //กำหนดให้ตัวแปรเก็บค่า เลขของขาdigital ของ Arduino
const byte S2 = 3;
const byte LED[2] = {4, 5};

void setup(){
  pinMode(S1, INPUT);   //กำหนดให้ขา D2 เป็นขา input โดยรับค่าเข้ามาจาก ปุ่มกดที่1
  pinMode(S2, INPUT);   //กำหนดให้ขา D3 เป็นขา input โดยรับค่าเข้ามาจาก ปุ่มกดที่2
  for (int i = 0 ; i < 2 ; i++) {
    pinMode(LED[i], OUTPUT) ;  //กำหนดให้ขา D4-D5 เป็นขา OUTPUT ซึ่งเป็น LED1 และ 2
   }
   digitalWrite(LED[0], HIGH);   //กำหนดให้เมื่อเริ่มต้น ให้LEDตัวที่ 1 ไฟติด

}

void loop(){
  contal(digitalRead(S1),digitalRead(S2) ); //เรียกใช้ฟังก์ชัน contal โดยส่งค่าที่ อ่านได้จากปุ่มกด S1และS2
}
void contal(int buttonStat1, int buttonStat2) {
   
  if ( buttonStat2 == LOW) {   //กรณีกดปุ่มที่2
    if( buttonStat1==LOW){         //กรณีกดปุ่มทั่ง2ปุ่ม
     digitalWrite(LED[0], HIGH);    //LEDตัวที่ 1 ไฟติด
     digitalWrite(LED[1], HIGH);    //LEDตัวที่ 2 ไฟติด
    } 
    else{    
    digitalWrite(LED[0], LOW);    //LEDตัวที่ 1 ไฟดับ
    digitalWrite(LED[1], HIGH);   //LEDตัวที่ 2 ไฟติด 
    }  
  }
     //กรณีกดปุ่มที่1
  if ( buttonStat1 == LOW) {
    digitalWrite(LED[0], HIGH);   //LEDตัวที่ 1 ไฟติด
    digitalWrite(LED[1], LOW);    //LEDตัวที่ 2 ไฟดับ
  }
}

          กรณีที่ ไม่กดปุ่ม                                                              กรณีที่กดปุ่ม S2 

   
  กรณีที่กดปุ่ม S1                                                                     กรณีที่กดปุ่ม S1 และ S2  

ไม่มีความคิดเห็น:

แสดงความคิดเห็น