From 293a8303740f5b224a2a25468209ed57ab642267 Mon Sep 17 00:00:00 2001 From: Borja Garcia Date: Mon, 6 Apr 2020 21:54:47 +0200 Subject: [PATCH 1/3] Adds more symbols for 7 segment displays --- src/LedControl.h | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/LedControl.h b/src/LedControl.h index cdfaa1f5..7a72670b 100644 --- a/src/LedControl.h +++ b/src/LedControl.h @@ -40,22 +40,22 @@ * 7-Segment Displays */ const static byte charTable [] PROGMEM = { - B01111110,B00110000,B01101101,B01111001,B00110011,B01011011,B01011111,B01110000, - B01111111,B01111011,B01110111,B00011111,B00001101,B00111101,B01001111,B01000111, - B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B00000000,B00000000,B00000000,B10000000,B00000001,B10000000,B00000000, - B01111110,B00110000,B01101101,B01111001,B00110011,B01011011,B01011111,B01110000, - B01111111,B01111011,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B01110111,B00011111,B00001101,B00111101,B01001111,B01000111,B00000000, - B00110111,B00000000,B00000000,B00000000,B00001110,B00000000,B00000000,B00000000, - B01100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00001000, - B00000000,B01110111,B00011111,B00001101,B00111101,B01001111,B01000111,B00000000, - B00110111,B00000000,B00000000,B00000000,B00001110,B00000000,B00010101,B00011101, - B01100111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, - B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000 + /* */B01111110,/* */B00110000,/* */B01101101,/* */B01111001,/* */B00110011,/* */B01011011,/* */B01011111,/* */B01110000, + /* */B01111111,/* */B01111011,/* */B01110111,/* */B00011111,/* */B00001101,/* */B00111101,/* */B01001111,/* */B01000111, + /* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000, + /* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000,/* */B00000000, + /* */B00000000,/*!*/B00000000,/*"*/B00000000,/*#*/B00000000,/*$*/B00000000,/*%*/B00000000,/*&*/B00000000,/*'*/B00000000, + /*(*/B00000000,/*)*/B00000000,/***/B00000000,/*+*/B00000000,/*,*/B10000000,/*-*/B00000001,/*.*/B10000000,/*/*/B00000000, + /*0*/B01111110,/*1*/B00110000,/*2*/B01101101,/*3*/B01111001,/*4*/B00110011,/*5*/B01011011,/*6*/B01011111,/*7*/B01110000, + /*8*/B01111111,/*9*/B01111011,/*:*/B00000000,/*;*/B00000000,/*<*/B00000000,/*=*/B00000000,/*>*/B00000000,/*?*/B00000000, + /*@*/B00000000,/*A*/B01110111,/*B*/B00011111,/*C*/B01001110,/*D*/B00111101,/*E*/B01001111,/*F*/B01000111,/*G*/B01011110, + /*H*/B00110111,/*I*/B00110000,/*J*/B00111000,/*K*/B00000000,/*L*/B00001110,/*M*/B00000000,/*N*/B00000000,/*O*/B01111110, + /*P*/B01100111,/*Q*/B00000000,/*R*/B00000000,/*S*/B01011011,/*T*/B00000000,/*U*/B00111110,/*V*/B00000000,/*W*/B00000000, + /*X*/B00000000,/*Y*/B00000000,/*Z*/B00000000,/*[*/B00000000,/*\*/B00000000,/*]*/B00000000,/*^*/B00000000,/*_*/B00001000, + /*`*/B00000000,/*a*/B01110111,/*b*/B00011111,/*c*/B00001101,/*d*/B00111101,/*e*/B01001111,/*f*/B01000111,/*g*/B01011110, + /*h*/B00010111,/*i*/B00010000,/*j*/B00000000,/*k*/B00000000,/*l*/B00001110,/*m*/B00000000,/*n*/B00010101,/*o*/B00011101, + /*p*/B01100111,/*q*/B00000000,/*r*/B00000101,/*s*/B01011011,/*t*/B00000000,/*u*/B00011100,/*v*/B00000000,/*w*/B00000000, + /*x*/B00000000,/*y*/B00000000,/*z*/B00000000,/*{*/B00000000,/*|*/B00000000,/*}*/B00000000,/*~*/B00000000,/* */B00000000 }; class LedControl { From a7b1f41dabefc19c18463a1d9818d8438f99c33b Mon Sep 17 00:00:00 2001 From: Borja Garcia Date: Tue, 7 Apr 2020 00:08:57 +0200 Subject: [PATCH 2/3] Adds setnumber fn to show an integer in a 7s display --- src/LedControl.cpp | 33 +++++++++++++++++++++++++++++++++ src/LedControl.h | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/src/LedControl.cpp b/src/LedControl.cpp index e43211fd..a07f8b55 100644 --- a/src/LedControl.cpp +++ b/src/LedControl.cpp @@ -168,6 +168,39 @@ void LedControl::setDigit(int addr, int digit, byte value, boolean dp) { spiTransfer(addr, digit+1,v); } +#define NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, pos, mask) { \ + if (flag) \ + setDigit(addr, pos, digit##pos, points & mask); \ + else { \ + if (digit##pos) { \ + setDigit(addr, pos, digit##pos, points & mask); \ + flag = true; \ + } \ + else setChar(addr, pos, ' ', points & mask); \ + } \ +} + +void LedControl::setNumber(int addr, unsigned long value, byte points) { + bool flag = false; + int trimmed = value % 100000000; + int digit0 = (trimmed % 10) / 1; + int digit1 = (trimmed % 100) / 10; + int digit2 = (trimmed % 1000) / 100; + int digit3 = (trimmed % 10000) / 1000; + int digit4 = (trimmed % 100000) / 10000; + int digit5 = (trimmed % 1000000) / 100000; + int digit6 = (trimmed % 10000000) / 1000000; + int digit7 = (trimmed % 100000000) / 10000000; + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 7, 0x80) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 6, 0x40) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 5, 0x20) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 4, 0x10) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 3, 0x08) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 2, 0x04) + NON_SIGNIFICANT_ZEROS_AWARE_SET(addr, 1, 0x02) + setDigit(addr, 0, digit0, points & 0x01); +} + void LedControl::setChar(int addr, int digit, char value, boolean dp) { int offset; byte index,v; diff --git a/src/LedControl.h b/src/LedControl.h index 7a72670b..dbd2248f 100644 --- a/src/LedControl.h +++ b/src/LedControl.h @@ -182,6 +182,10 @@ class LedControl { * dp sets the decimal point. */ void setChar(int addr, int digit, char value, boolean dp); + + /* + */ + void setNumber(int addr, unsigned long value, byte points); }; #endif //LedControl.h From 8b7fe70fcab40dc92be4828224dd9c13767e99d6 Mon Sep 17 00:00:00 2001 From: Borja Garcia Date: Tue, 7 Apr 2020 00:46:47 +0200 Subject: [PATCH 3/3] Adds setString to set an string right away --- src/LedControl.cpp | 10 ++++++++++ src/LedControl.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/LedControl.cpp b/src/LedControl.cpp index a07f8b55..af4518e0 100644 --- a/src/LedControl.cpp +++ b/src/LedControl.cpp @@ -222,6 +222,16 @@ void LedControl::setChar(int addr, int digit, char value, boolean dp) { spiTransfer(addr, digit+1,v); } +void LedControl::setString(int addr, char* value, byte points) { + short valuel = strlen(value); + for (int i=0; i<8-valuel; i++) { + setChar(addr, 7-i, ' ', points&(0x01<<(7-i))); + } + for (int i=0; i<8 && i