วันพุธที่ 8 กุมภาพันธ์ พ.ศ. 2560

Eight digital tube module LED display Eight serial 595 drivers พร้อมสายไฟ

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 เลข
      // แก้ไขตรงนี้      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[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;
}
ถ้าต้องการปรับเปลียนโคดแสดงตัวเลขเอง หรือต้องการสร้างวงจรเอง 
ลองดูได้ที่เว็บนี้ครับ http://portfolio.girshwin.com/led_shift.php

อ้างอิง


https://www.arduinoall.com/product/128/eight-digital-tube-module-led-display-eight-serial-595-drivers-พร้อมสายไฟ

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

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