วันพุธที่ 8 มิถุนายน พ.ศ. 2559

Arduino 7segment 1 digit

  Arduino 7segment 1 digit


การทำงาน
        เป็นวงจรนับโดยจะนับจาก 0-9 และทำงานซ้ำไปเรื่อยๆ
 
โดย 7segment เป็น common Anode  

โครงสร้างและการทำงานของหลอดแสดงผล LED 7 ส่วน
    หลอด แสดงผล LED 7 ส่วน เป็นการนำเอาหลอด แสดงผล  LED จำนวน 7 ตัวมาต่อกันเป็นรูปตัวเลขโดยมีชื่อเรียกแต่ละส่วน คือ a,b,c,d,e,f,g และ dp แสดงดังรูปที่ 1.1



 









รูปที่ 1.1 โครงสร้างและขาของหลอดแสดงผล LED 7-Segment

     หลอดแสดงผล LED 7-Segment สามารถแบ่งตามลักษณะการต่อหลอดแสดงผล LED ทั้ง 7 หลอดได้ 2 ชนิด ดังนี้

     1. ชนิดต่อแบบแอโนดร่วม หรือ คอมมอนแอโนด (Common Anode)
     2. ชนิดต่อแบบแคโทดร่วม หรือ คอมมอนแคโทด (Common Cathode)

โดยโครงสร้างการต่อหลอดแสดงผล LED 7-Segment ทั้ง 2 ชนิด ดังรูปที่ 1.2


รูปที่ 1.2 โครงสร้างการต่อหลอดแสดงผล LED 7-Segment

     รูปที่ 1.2(ก) เป็นการต่อหลอดแสดงผล LED 7-Segment แบบแอโนดร่วม โดยต้องป้อนไฟบวกที่ขาร่วมที่หรือขาคอมมอน (Common) และถ้าต้องการให้หลอดแสดงผล LED 7-Segment แสดงผลหรือให้สว่าง ต้องป้อนไฟลบหรือส่งลอจิก "0" มาที่ขาแคโทด 
     ส่วนรูปที่ 1.2(ข) เป็นการต่อหลอดแสดงผล LED 7-Segment แบบแคโทดร่วม โดยต้องป้อนไฟลบหรือกราวด์ที่ขาร่วมหรือขาคอมมอน และถ้าต้องการให้หลอดแสดงผล LED 7-Segment แสดงผลหรือสว่างต้องป้อนไฟบวกหรือส่งลอจิก "1" มาที่ขาแอโนด
 
การต่อวงจร 
 
 
 
 
 
Code Program
 
#define segA 2// connecting segment A to PIN2
#define segB 3// connecting segment B to PIN3
#define segC 4// connecting segment C to PIN4
#define segD 5// connecting segment D to PIN5
#define segE 6// connecting segment E to PIN6
#define segF 7// connecting segment F to PIN7
#define segG 8// connecting segment G to PIN8

int COUNT=0;//count integer for 0-9 increment

void setup()
{
 for (int i=2;i<9;i++)
   {
   pinMode(i, OUTPUT);// taking all pins from 2-8 as output
   }
}

void loop()
{
   switch (COUNT)
   {
     case 0://when count value is zero show”0” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, HIGH);
                break;
      case 1:// when count value is 1 show”1” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;

       case 2:// when count value is 2 show”2” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, HIGH);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, LOW);
                break;

        case 3:// when count value is 3 show”3” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, LOW);
                break;

         case 4:// when count value is 4 show”4” on disp
                digitalWrite(segA, HIGH);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;

         case 5:// when count value is 5 show”5” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;

          case 6:// when count value is 6 show”6” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, HIGH);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;

    case 7:// when count value is 7 show”7” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, HIGH);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, HIGH);
                digitalWrite(segG, HIGH);
                break;

     case 8:// when count value is 8 show”8” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, LOW);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;

    case 9:// when count value is 9 show”9” on disp
                digitalWrite(segA, LOW);
                digitalWrite(segB, LOW);
                digitalWrite(segC, LOW);
                digitalWrite(segD, LOW);
                digitalWrite(segE, HIGH);
                digitalWrite(segF, LOW);
                digitalWrite(segG, LOW);
                break;
                }

       if (COUNT<10)
          {
          COUNT++;
          delay(1000);///increment count integer for every second
          }
       if (COUNT==10)
          {
          COUNT=0;
          }
 
ผลการทดลอง 
 
 เพื่อการเรียนรู้...^^
 
ขอบคุณข้อมูลดีดีจาก ที่นี่