วันเสาร์ที่ 27 กันยายน พ.ศ. 2557

การทดลองที่ 4.6 การวัดแรงดันอินพุต-แอนะล็อกและการแสดงค่าโดยใช้ 7-Segment

วัตถุประสงค์ 

     1. ฝึกต่อวงจรและเขียนโปรแกรมสําหรับบอร์ด Arduino เพื่อวัดแรงดันอินพุต-แอนะล็อกและแสดงค่าที่ ได้ผ่านทาง 7-Segment Display 


รายการอุปกรณ์

     1. แผงต่อวงจร (เบรดบอร์ด)                                                        1 อัน
     2. บอร์ด Arduino (ใช้แรงดัน +5V)                                              1 บอร์ด
     3. ตัวต้านทานปรับค่าได้แบบสามขา 10kΩ หรือ 20kΩ                1 ตัว
     4. 7-Segment Display แบบ 2 ตัวเลข (Common-Cathode)         1 ตัว
     5. ทรานซิสเตอร์ NPN (เช่น PN2222A)                                      2 ตัว
     6. ตัวต้านทาน 1kΩ                                                                     2 ตัว
     7. ตัวต้านทาน 330Ω หรือ 470Ω                                                  8 ตัว
     8. สายไฟสําหรับต่อวงจร                                                             1 ชุด
     9. มัลติมิเตอร์                                                                               1 เครื่อง 

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

     1. ออกแบบวงจร วาดผังวงจร และต่อวงจรบนเบรดบอร์ด ร่วมกับบอร์ด Arduino เพื่อวัดแรงดันที่ได้ จากวงจรแบ่งแรงดันที่ใช้ตัวต้านทานปรับค่าได้ (แรงดันอยู่ในช่วง 0V ถึง 5V) เช่น ป้อนเข้าที่ขา A0 ของบอร์ด Arduino แล้วนําคา่ไปแสดงผลโดยใช้ 7-Segment Display จํานวน 2 หลัก และ ให้มีทศนิยมเพยีงหนึ่งตําแหน่ง เช่น ถ้าวัดแรงดันได้ 2.365V จะแสดงผลเป็น “2.4” ถ้าวัดได้ 2.539V  ให้แสดงผลเป็น “2.5” เป็นต้น และให้ใช้แรงดันไฟเลี้ยง VCC=+5V และ Gnd จากบอร์ด Arduino เท่านั้น [ทุกกลุ่มจะต้องวาดวงจรสําหรับการทดลองมาให้แลว้เสร็จ (ให้เตรียมตัวมาก่อนเข้าเรียน วิชาปฏิบัติ]

     2. เขียนโค้ดสําหรับ Arduino เพื่ออ่านค่าจากแรงดันอินพุต-แอนะล็อก แลว้นําไปแสดงผลโดยใช้  7-Segment Display ตามที่กล่าวไป (และให้แสดงค่าทอี่่านได้ออกทาง Serial Monitor ด้วย)  และในการเขยีนโค้ด ห้ามใช้ตัวแปรหรือตัวเลขแบบ float

#define in A6
const byte seven_seg[7]={4,5,6,7,8,9,10};
const byte seven[2]={2,3};
byte digi[10]={B1111110,B0110000,B1101101,B1111001,B0110011,B1011011,B1011111,B1110000,B1111111,B1111011};

void setup() {
  // put your setup code here, to run once:
  for(int i=0;i<7;i++){
    pinMode(seven_seg[i],OUTPUT);
  }
  for(int i=0;i<2;i++){
    pinMode(seven[i],OUTPUT);
  }
  analogReference(DEFAULT);
  Serial.begin(9600);
}

void loop() {
  int tod;
  // put your main code here, to run repeatedly:
  int input=analogRead(in);
  input=map(input,0,1023,0,5000);
  Serial.print(input);
  Serial.print(" ");
  int num_seg1 = input/1000;
  if((input%100>40)){
    tod=1;
  }else{
    tod=0;
  }
  Serial.print(num_seg1);
  Serial.print(" ");
  int num_seg2 = ((input%1000)/100)+tod;
  Serial.println(num_seg2);
  delay(10);
  digitalWrite(seven[0],1);
  digitalWrite(seven[1],0);
  display_seg(num_seg1);
  delay(10);
  digitalWrite(seven[0],0);
  digitalWrite(seven[1],1);
  display_seg(num_seg2);

}

void display_seg(int num_seg){
  byte t=digi[num_seg];
  for(int i=6;i>=0;i--){
   digitalWrite(seven_seg[i],t&1);
   t>>=1;

  }




     3. เขียนรายงานการทดลอง ซงึ่ประกอบด้วยคําอธบิายการทดลองตามขั้นตอน ผงัวงจรที่ถูกต้อง ครบถ้วนตามหลักไฟฟา้ (ให้วาดด้วยโปรแกรม Cadsoft Eagle) รูปถ่ายของการตอ่วงจรบน เบรดบอร์ด โค้ด Arduino ที่ได้ทดลองจริงพร้อมคาํอธิบายโค้ด/การทํางานของโปรแกรม และตัวอย่างผลที่แสดงบน Serial Monitor (Screen Capture)



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

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