การใช้งาน โมดูลแสดงค่าตัวเลข 4 หลัก Four digital tube module LED display

การใช้งาน โมดูลแสดงค่าตัวเลข 4 หลัก Four digital tube module LED display

โมดูลแสดงตัวเลขแบบ 7 segment ใช้แสดงเลขแบบดิจิตอล 4 หลัก ใช้ไฟได้ระหว่างช่วง 3.3-5 โวลต์ เหมาะกับแสดงผลตัวเลขที่เห็นสว่างได้อย่างชัดเจน ใช้ IC เบอร์ 595 เป็นตัวขับ 7 segment led display

วิธีใช้งาน โมดูลแสดงค่าตัวเลข 4 หลัก Four digital tube module LED display
่โมดูล แสดงเลข 7 segment แบบดิจิตอล 4 หลักนี้ มีขั้วอยู่ 5 เส้น ประกอบด้วย

  • ขั้วไฟบวก 3.3-5 โวลต์
  • ขั้วกราวน์
  • ขั้วสัญญาณ  SCLK สำหรับใหสัญญาณนาฬิกา
  • ขั้วสัญญาณ RCLK สำหรับแลตสัญญาณข้อมูล
  • ขั้วสัญญาณ DIO สำหรับส่งข้อมูลที่จะแสดงผล

ดังนั้นเราจึงใช้ Arduino 3 ขาในการควบคุม SCLK , RCLK , DIO ซึ่งสามารถกำหนดขาที่เราต้องการได้เองตามใจชอบ

วิธีใช้งานง่ายมาก สามารถทำได้ในเวลาเพียง 1 นาทีจากโคดตัวอย่างนี้

/*
written by Jason Berger ,arduinoall, พ.ไพศาล
reedited by Phaisarn Te. @060614

8-Digit 7-Segment display driver.
2x 74HC595 wired to 2x 4-digit 7-segment displays
bits 0-7 select a digit
bits 8-14 A-G

*/
char disp_c[8] ;

//กำหนด ขา pin
const int SCLK_pin= 4;
const int RCLK_pin= 5;
const int DIO_pin = 6;

// 0-9   –> ใช้ค่า 0-9
// 0.-9. –> ใช้ค่า 10-19
// space –> ‘ ‘
// A-Z, a-z –> ‘A’ ‘B’ … ‘a’ ‘b’

int  disp[8];

//time values for delay workaround
unsigned long prev =0;
unsigned long waitMS=0;

void setup()
{

pinMode(RCLK_pin,OUTPUT);
pinMode(DIO_pin,OUTPUT);
pinMode(SCLK_pin,OUTPUT);

showText(‘O’,’P’,’E’,’N’); // แสดงข้อความต้อนรับ
}

int n;
unsigned long start=millis();
byte b = 0;
void loop()
{
showDisplay();
if(b==0){
b++;
wait(3000);     // หน่วงเวลาแสดงข้อความต้อนรับ
}
else{
if ( millis() > (prev + waitMS))
{
//code to loop in here

//ระหว่าง loop แก้ไขแสดงค่าอื่นๆได้

// แสดงผลแบบตัวอักษร ตัวอย่างแสดงคำว่า Ardu
// showText(‘A’,’r’,’d’,’u’); //  แก้ค่าที่จะให้แสดงผลตรงนี้

// แสดงผลแบบตัวเลข ตัวอย่างแสดงค่า 95.42
// showText(9,15,4,2); //15 –> แสดงเลข 5.

// แสดงผลตัวอย่าง การ run เลข
showText((n/1000)%10,(n/100)%10+10,(n/10)%10,n%10);  //แก้ค่าที่จะให้แสดงผลตรงนี้
n++;
if(n>10000) {
n=0;
}

// หน่วงเวลา
wait(1000);
}
}
}

void showText(char a, char b , char c,char d){
disp_c[0] = d;
disp_c[1] = c;
disp_c[2] = b;
disp_c[3] = a;
}
void showDisplay()
{
setDisp();
for(int i=0; i<8; i++)
{
setDigit(i,disp[i]);
}
}

void setDigit(int dig, int character)
{
int digits[]= {
128,64,32,16,8,4,2,1        };

//character set (0-9)0-9
//            (10-19)0.-9.
//            (20-45)A-Z
//            (46-71)a-z
//            (72)- (73) space
int characters[]= {
3,159,37,13,153,73,65,31,1,9,
2,158,36,12,152,72,64,30,0,8,
17,1,99,3,97,113,67,145,243,135,145,227,85,19,3,49,25,115,73,31,129,129,169,145,137,37,
5,193,229,133,33,113,9,209,247,143,81,227,85,213,197,49,25,245,73,225,199,199,169,145,137,37,
253,255        };

digitalWrite(RCLK_pin, LOW);
shiftOut(DIO_pin, SCLK_pin, LSBFIRST, characters[character]);
shiftOut(DIO_pin, SCLK_pin, LSBFIRST, digits[dig]);
digitalWrite(RCLK_pin, HIGH);
}

void setDisp()
{
for (int i=0; i<8;i++)
{
int val = disp_c[i];
if((val >= 32)&&(val <= 47)){ // ! ถึง / ไม่ให้แสดง
switch (val){
case 45 :
val = 72;
break;  // เครื่องหมาย –
default :
val = 73;
break;  // ค่าอื่นระหว่างนี้ ไม่ให้แสดง
}
}
else if((val >= 48)&&(val <= 57)) //0-9
{
val -= 48;
}
else if((val >= 65)&&(val <= 90)) //A-Z
{
val -= 45;
}
else if((val >= 97)&&(val <= 122)) //a-z
{
val -= 51;
}

disp[i] = val;

}
}
void wait( unsigned long milsec)
{
prev = millis();
waitMS = milsec;
}

 

//ขั้นที่ 1 กำหนด ขา pin โดยนำขาของโมดูลไปต่อกับขาของ Arduino ดังรูป 
const int SCLK_pin=4; // ขา SCLK ไปต่อกับ Arduino ขา 4
const int RCLK_pin=5; // ขา RCLKไปต่อกับ Arduino ขา 5
const int DIO_pin =6; // ขา DIO ไปต่อกับ Arduino ขา 6

 

// ขั้นที่ 2 กำหนดข้อความต้อนรับในการณีที่เราต้องการแสดงข้อความต้อนรับสามารถแก้ได้ที่โคดนี้

showText(‘O’,’P’,’E’,’N’); // แสดงข้อความต้อนรับคำว่า OPEN



wait(3000);     // หน่วงเวลาแสดงข้อความต้อนรับ

 

// ขั้นที่ 3 กำหนดข้อความแสดงผล สามารถกำหนดให้เป็นตัวเลขหรือตัวอักษรได้ตามข้อมูลนี้

//character set (0-9)0-9
//            (10-19)0.-9.
//            (20-45)A-Z
//            (46-71)a-z
//            (72)- (73) space

เช่น     // แสดงผลแบบตัวอักษร ตัวอย่างแสดงคำว่า Ardu
// showText(‘A’,’r’,’d’,’u’); //  แก้ค่าที่จะให้แสดงผลตรงนี้

// แสดงผลแบบตัวเลข ตัวอย่างแสดงค่า 95.42
// showText(9,15,4,2); //15 –> แสดงเลข 5.

// แสดงผลตัวอย่าง การ run เลข
showText((n/1000)%10,(n/100)%10+10,(n/10)%10,n%10);  //แก้ค่าที่จะให้แสดงผลตรงนี้
n++;
if(n>10000) {
n=0;
}

// หน่วงเวลาแสดงผล
// wait(1000);

 

รายละเอียดเพิ่มเติม ข้อมูลอุปกรณ์ โมดูลแสดงค่าตัวเลข 4 หลัก  Four digital tube module LED display คลิกที่นี่