- ฝึกต่อวงจรโดยใช้ใช้ไอซี 74HCT00N เพื่อสร้างเป็นวงจร RS Latch
- ฝึกเขียนโปรแกรมสำหรับ 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 เครื่อง
ขั้นตอนการทดลอง
- ต่อวงจรบนเบรดบอร์ด โดยใช้ไอซี 74HCT00N เพื่อสร้างลอจิกเกต RS Latch ตามผังวงจรในรูปที่ 3.3.1 และป้อนแรงดันไฟเลี้ยง Vcc=5V และ GND จากแหล่งจ่ายควบคุมแรงดัน ให้ไอซีและวงจรบนเบรดบอร์ด
- กำหนดสถานะของสัญญาณอินพุต A และ B ทั้งหมด 4 กรณี โดยการกดปุ่มค้างไว้(LOW)หรือไม่ กดปุ่ม(HIGH) ตามตารางที่ 3.3.1 ใช้มัลติมิเตอร์วัดแรงดันของสัญญาณ Q และ/Q รวมถึงสังเกตสถานะติด/ดับของ LED ทั้งสอง สำหรับแต่ละกรณีของอินพุต แล้วบันทึกผลที่ลงในตาราง
- ต่อวงจรตามผังวงจรในรูปที่ 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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น