#define uchar unsigned char #define uint unsigned int const int latchPin = 5, clockPin = 6, dataPin = 3, OE_595 = 4; uchar TUBE_SEG[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // 0-9 0x77, 0x7c, 0x39, 0x58, 0x5e, 0x79, 0x71, 0x76, 0x74, 0x38, // A, b, C, c, d, E, F, H, h, L 0x54, 0x37, 0x5c, 0x73, 0x50, 0x78, 0x3e, 0x40, 0x00 // n, N, o, P, r, t, U, -, (spasi) }; uchar TUBE_NUM[8] = {0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xf7, 0xff}; uchar dat_buf[8], dat, com_num; void TubeDisplayOneBit() { uchar tube_dat = TUBE_SEG[dat], bit_num = TUBE_NUM[com_num]; digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, bit_num); shiftOut(dataPin, clockPin, MSBFIRST, tube_dat); digitalWrite(latchPin, HIGH); } void TubeDisplay4Bit(int num) { if (com_num < 7) com_num++; else com_num = 0; dat = dat_buf[com_num]; TubeDisplayOneBit(); dat_buf[6] = num % 10; num /= 10; dat_buf[4] = num % 10; num /= 10; dat_buf[2] = num % 10; num /= 10; dat_buf[0] = num % 10; } void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(OE_595, OUTPUT); delay(100); digitalWrite(OE_595, LOW); } void loop() { TubeDisplay4Bit(6543); }