LED แสดงผลดิจิตอลขนาด 8 หลักสีแดง
รายละเอียด Eight digital tube module LED display Eight serial 595 drivers
1. Driven by 2 595 digital tube, need microcontroller IO port 3 road, according to the principle of digital tube dynamic scanning display;
2. Wide working voltage of 3.3 V to 5 V.
3. PCB size: 71 mm * 22 mm
4. Digital tube type: 0.36 four of Yang
ตัวอย่างโคดพร้อมใช้งานใน 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
*/
//กำหนด ขา 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'
// กำหนดค่าที่ต้องการแสดงเริ่มต้น เช่น
char disp_c[]= {
' ','O','N','I','U','D','R','A'}; // = แสดงคำว่า ARDUINO
//char disp_c[]= {' ','N','O',' '}; // = แสดงคำว่า ON
//char disp_c[]= {'F','F','O',' '}; // = แสดงคำว่า OFF
//char disp_c[] = {2,4,16,' '}; // = แสดงค่า 6.42 (ei 16 --> 6.)
int disp[8];
//time values for delay workaround
unsigned long prev =0;
unsigned long waitMS=20;
void setup()
{
pinMode(RCLK_pin,OUTPUT);
pinMode(DIO_pin,OUTPUT);
pinMode(SCLK_pin,OUTPUT);
showDisplay();
}
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
disp_c[0] = 'u';
disp_c[1] = 'd';
disp_c[2] = 'r';
disp_c[3] = 'A';
*/
// ตัวอย่างแสดงค่า 95.42
/*disp_c[0] = 2;
disp_c[1] = 4;
disp_c[2] = '-'; //15; // --> แสดงเลข 5.
disp_c[3] = 9;*/
// ตัวอย่าง การ run เลข
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
*/
//กำหนด ขา 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'
// กำหนดค่าที่ต้องการแสดงเริ่มต้น เช่น
char disp_c[]= {
' ','O','N','I','U','D','R','A'}; // = แสดงคำว่า ARDUINO
//char disp_c[]= {' ','N','O',' '}; // = แสดงคำว่า ON
//char disp_c[]= {'F','F','O',' '}; // = แสดงคำว่า OFF
//char disp_c[] = {2,4,16,' '}; // = แสดงค่า 6.42 (ei 16 --> 6.)
int disp[8];
//time values for delay workaround
unsigned long prev =0;
unsigned long waitMS=20;
void setup()
{
pinMode(RCLK_pin,OUTPUT);
pinMode(DIO_pin,OUTPUT);
pinMode(SCLK_pin,OUTPUT);
showDisplay();
}
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
disp_c[0] = 'u';
disp_c[1] = 'd';
disp_c[2] = 'r';
disp_c[3] = 'A';
*/
// ตัวอย่างแสดงค่า 95.42
/*disp_c[0] = 2;
disp_c[1] = 4;
disp_c[2] = '-'; //15; // --> แสดงเลข 5.
disp_c[3] = 9;*/
// ตัวอย่าง การ run เลข
// แก้ไขตรงนี้ disp_c[0] = n%10; // แสดงผลหลัก 1
disp_c[1] = (n/10)%10; // แสดงผลหลัก 2
disp_c[2] = (n/100)%10+10; // แสดงผลหลัก 3
disp_c[3] = (n/1000)%10; // แสดงผลหลัก 4
// แก้ไขตรงนี้
disp_c[1] = (n/10)%10; // แสดงผลหลัก 2
disp_c[2] = (n/100)%10+10; // แสดงผลหลัก 3
disp_c[3] = (n/1000)%10; // แสดงผลหลัก 4
// แก้ไขตรงนี้
disp_c[4] = 'd';
disp_c[5] = 'c';
disp_c[6] = 'b';
disp_c[7] = 'a';
n++;
if(n>=10000) {
n=0;
}
// หน่วงเวลา
wait(200);
}
}
}
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;
}
disp_c[5] = 'c';
disp_c[6] = 'b';
disp_c[7] = 'a';
n++;
if(n>=10000) {
n=0;
}
// หน่วงเวลา
wait(200);
}
}
}
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;
}
ถ้าต้องการปรับเปลียนโคดแสดงตัวเลขเอง หรือต้องการสร้างวงจรเอง
ลองดูได้ที่เว็บนี้ครับ http://portfolio.girshwin.com/led_shift.php
ลองดูได้ที่เว็บนี้ครับ http://portfolio.girshwin.com/led_shift.php
อ้างอิง
https://www.arduinoall.com/product/128/eight-digital-tube-module-led-display-eight-serial-595-drivers-พร้อมสายไฟ