Shivanand Gowda / Mbed 2 deprecated Multiple_7SegDisplays

Dependencies:   74HC595 RS485 mbed

Fork of Check_7segLED_driver by Kenji Arai

Committer:
kenjiArai
Date:
Mon Jan 22 10:25:28 2018 +0000
Revision:
0:b24071fbcbb3
Child:
1:69423a344fe4
check program for  7-segment LED driver [OSL10564-74HC595-x] library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:b24071fbcbb3 1 /*
kenjiArai 0:b24071fbcbb3 2 * Mbed Application program / Akizuki 7-segment LED driver [OSL10564-74HC595-x]
kenjiArai 0:b24071fbcbb3 3 * AKIZUKI AE-7SEG-BOARD-KIT-BLUE
kenjiArai 0:b24071fbcbb3 4 * http://akizukidenshi.com/catalog/g/gK-10344/
kenjiArai 0:b24071fbcbb3 5 *
kenjiArai 0:b24071fbcbb3 6 * Copyright (c) 2018 Kenji Arai / JH1PJL
kenjiArai 0:b24071fbcbb3 7 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:b24071fbcbb3 8 * http://mbed.org/users/kenjiArai/
kenjiArai 0:b24071fbcbb3 9 * Created: January 7th, 2018
kenjiArai 0:b24071fbcbb3 10 * Revised: January 22nd, 2018
kenjiArai 0:b24071fbcbb3 11 */
kenjiArai 0:b24071fbcbb3 12
kenjiArai 0:b24071fbcbb3 13 // Include --------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 14 #include "mbed.h"
kenjiArai 0:b24071fbcbb3 15 #include "7segLed_HC595.h"
kenjiArai 0:b24071fbcbb3 16
kenjiArai 0:b24071fbcbb3 17 // Definition -----------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 18 #define NUM_OF_DIGIT 6
kenjiArai 0:b24071fbcbb3 19
kenjiArai 0:b24071fbcbb3 20 #define KEYIN_THEN_EXIT_WHILE() {if(exit_while_loop_when_keyinput()){ break;}}
kenjiArai 0:b24071fbcbb3 21
kenjiArai 0:b24071fbcbb3 22 // Constructor ----------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 23 Serial pc(USBTX, USBRX);
kenjiArai 0:b24071fbcbb3 24 #if defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F411RE)\
kenjiArai 0:b24071fbcbb3 25 || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_L152RE)\
kenjiArai 0:b24071fbcbb3 26 || defined(TARGET_NUCLEO_L073RZ) || defined(TARGET_NUCLEO_L053R8)\
kenjiArai 0:b24071fbcbb3 27 || defined(TARGET_NUCLEO_L476RG)
kenjiArai 0:b24071fbcbb3 28 // SPI MOSI,SCLK,any port, PWM, number of digit
kenjiArai 0:b24071fbcbb3 29 SevenSegLed led_7segs(D4, D3, D5, D6, NUM_OF_DIGIT);
kenjiArai 0:b24071fbcbb3 30 #elif defined(TARGET_NUCLEO_F334R8)
kenjiArai 0:b24071fbcbb3 31 // SPI MOSI,SCLK,any port, PWM, number of digit
kenjiArai 0:b24071fbcbb3 32 SevenSegLed led_7segs(D4, D3, D5, D7, NUM_OF_DIGIT);
kenjiArai 0:b24071fbcbb3 33 #elif defined(TARGET_NUCLEO_F303K8)
kenjiArai 0:b24071fbcbb3 34 // SPI MOSI,SCLK,any port, PWM, number of digit
kenjiArai 0:b24071fbcbb3 35 SevenSegLed led_7segs(A6, A4, A5, A3, NUM_OF_DIGIT);
kenjiArai 0:b24071fbcbb3 36 #elif TARGET_Freescale
kenjiArai 0:b24071fbcbb3 37 // SPI MOSI,SCLK,any port, PWM, number of digit
kenjiArai 0:b24071fbcbb3 38 SevenSegLed led_7segs(D11, D13, D12, D10, NUM_OF_DIGIT);
kenjiArai 0:b24071fbcbb3 39 #else
kenjiArai 0:b24071fbcbb3 40 #error "Please set your own SevenSegLed constractor!"
kenjiArai 0:b24071fbcbb3 41 #endif
kenjiArai 0:b24071fbcbb3 42 DigitalOut myled(LED1);
kenjiArai 0:b24071fbcbb3 43 AnalogIn vol(A0);
kenjiArai 0:b24071fbcbb3 44
kenjiArai 0:b24071fbcbb3 45 // RAM ------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 46 time_t seconds;
kenjiArai 0:b24071fbcbb3 47
kenjiArai 0:b24071fbcbb3 48 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:b24071fbcbb3 49
kenjiArai 0:b24071fbcbb3 50 // Function prototypes --------------------------------------------------------
kenjiArai 0:b24071fbcbb3 51 bool exit_while_loop_when_keyinput(void);
kenjiArai 0:b24071fbcbb3 52
kenjiArai 0:b24071fbcbb3 53 //------------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 54 // Control Program
kenjiArai 0:b24071fbcbb3 55 //------------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 56 int main()
kenjiArai 0:b24071fbcbb3 57 {
kenjiArai 0:b24071fbcbb3 58 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 59 pc.printf("Hit any key to go next step\r\n");
kenjiArai 0:b24071fbcbb3 60 pc.printf("Step1\r\n");
kenjiArai 0:b24071fbcbb3 61 {
kenjiArai 0:b24071fbcbb3 62 uint32_t max = 9;
kenjiArai 0:b24071fbcbb3 63 for (uint32_t i = 1; i < NUM_OF_DIGIT; i++) {
kenjiArai 0:b24071fbcbb3 64 max = max * 10 + 9;
kenjiArai 0:b24071fbcbb3 65 }
kenjiArai 0:b24071fbcbb3 66 pc.printf("max = %d\r\n", max);
kenjiArai 0:b24071fbcbb3 67 led_7segs.zero_suppress(true);
kenjiArai 0:b24071fbcbb3 68 int32_t count = 0;
kenjiArai 0:b24071fbcbb3 69 while(true) {
kenjiArai 0:b24071fbcbb3 70 led_7segs = count++;
kenjiArai 0:b24071fbcbb3 71 if (count > max) {
kenjiArai 0:b24071fbcbb3 72 count = 0;
kenjiArai 0:b24071fbcbb3 73 }
kenjiArai 0:b24071fbcbb3 74 float wait_time = 5.0f / (float)(count + 1);
kenjiArai 0:b24071fbcbb3 75 if (wait_time > 0.01f) {
kenjiArai 0:b24071fbcbb3 76 wait(wait_time);
kenjiArai 0:b24071fbcbb3 77 }
kenjiArai 0:b24071fbcbb3 78 KEYIN_THEN_EXIT_WHILE();
kenjiArai 0:b24071fbcbb3 79 }
kenjiArai 0:b24071fbcbb3 80 }
kenjiArai 0:b24071fbcbb3 81 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 82 pc.printf("Step2\r\n");
kenjiArai 0:b24071fbcbb3 83 {
kenjiArai 0:b24071fbcbb3 84 char buf[16];
kenjiArai 0:b24071fbcbb3 85
kenjiArai 0:b24071fbcbb3 86 led_7segs.zero_suppress(false);
kenjiArai 0:b24071fbcbb3 87 float led_bright = 0.5f;
kenjiArai 0:b24071fbcbb3 88 while(true) {
kenjiArai 0:b24071fbcbb3 89 time_t seconds = time(NULL);
kenjiArai 0:b24071fbcbb3 90 strftime(buf, 10, "%H.%M.%S", localtime(&seconds));
kenjiArai 0:b24071fbcbb3 91 //strftime(buf, 10, "1.2.3.4.%S", localtime(&seconds));
kenjiArai 0:b24071fbcbb3 92 pc.printf("%s\r\n", buf);
kenjiArai 0:b24071fbcbb3 93 led_7segs.put_ascii(buf);
kenjiArai 0:b24071fbcbb3 94 led_7segs.brightness(led_bright);
kenjiArai 0:b24071fbcbb3 95 if (led_bright == 0.5f) {
kenjiArai 0:b24071fbcbb3 96 led_bright = 1.0f;
kenjiArai 0:b24071fbcbb3 97 } else {
kenjiArai 0:b24071fbcbb3 98 led_bright = 0.5f;
kenjiArai 0:b24071fbcbb3 99 }
kenjiArai 0:b24071fbcbb3 100 wait(1.0f);
kenjiArai 0:b24071fbcbb3 101 KEYIN_THEN_EXIT_WHILE();
kenjiArai 0:b24071fbcbb3 102 }
kenjiArai 0:b24071fbcbb3 103 }
kenjiArai 0:b24071fbcbb3 104 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 105 pc.printf("Step3\r\n");
kenjiArai 0:b24071fbcbb3 106 {
kenjiArai 0:b24071fbcbb3 107 uint8_t seg_bf[6] = {
kenjiArai 0:b24071fbcbb3 108 0b00000001 // LSB
kenjiArai 0:b24071fbcbb3 109 ,0b00000010
kenjiArai 0:b24071fbcbb3 110 ,0b10000100 // +Dot
kenjiArai 0:b24071fbcbb3 111 ,0b00001000
kenjiArai 0:b24071fbcbb3 112 ,0b00010000
kenjiArai 0:b24071fbcbb3 113 ,0b00100000 // MSB
kenjiArai 0:b24071fbcbb3 114 };
kenjiArai 0:b24071fbcbb3 115
kenjiArai 0:b24071fbcbb3 116 led_7segs.zero_suppress(true);
kenjiArai 0:b24071fbcbb3 117 led_7segs.brightness(1.0f);
kenjiArai 0:b24071fbcbb3 118 int32_t count = 0;
kenjiArai 0:b24071fbcbb3 119 while(true) {
kenjiArai 0:b24071fbcbb3 120 count++;
kenjiArai 0:b24071fbcbb3 121 if (count & 0x01) {
kenjiArai 0:b24071fbcbb3 122 led_7segs.put_raw(seg_bf);
kenjiArai 0:b24071fbcbb3 123 } else {
kenjiArai 0:b24071fbcbb3 124 led_7segs.put_ascii("12.34567");
kenjiArai 0:b24071fbcbb3 125 }
kenjiArai 0:b24071fbcbb3 126 wait(1.0f);
kenjiArai 0:b24071fbcbb3 127 KEYIN_THEN_EXIT_WHILE();
kenjiArai 0:b24071fbcbb3 128 }
kenjiArai 0:b24071fbcbb3 129 }
kenjiArai 0:b24071fbcbb3 130 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 131 pc.printf("Step4\r\n");
kenjiArai 0:b24071fbcbb3 132 {
kenjiArai 0:b24071fbcbb3 133 char buf[16];
kenjiArai 0:b24071fbcbb3 134
kenjiArai 0:b24071fbcbb3 135 for (uint32_t i = 0; i < sizeof(buf); i++) {
kenjiArai 0:b24071fbcbb3 136 buf[i] = ' ';
kenjiArai 0:b24071fbcbb3 137 }
kenjiArai 0:b24071fbcbb3 138 bool exit_req = false;
kenjiArai 0:b24071fbcbb3 139 while(true) {
kenjiArai 0:b24071fbcbb3 140 for (uint32_t n = ' '; n < '~'; n++) {
kenjiArai 0:b24071fbcbb3 141 for (uint32_t i = 0 ; i < sizeof(buf) - 1; i++) {
kenjiArai 0:b24071fbcbb3 142 buf[i] = buf[i + 1];
kenjiArai 0:b24071fbcbb3 143 }
kenjiArai 0:b24071fbcbb3 144 buf[NUM_OF_DIGIT - 1] = n;
kenjiArai 0:b24071fbcbb3 145 pc.putc(n);
kenjiArai 0:b24071fbcbb3 146 led_7segs.put_strings(buf);
kenjiArai 0:b24071fbcbb3 147 led_7segs.brightness(vol);
kenjiArai 0:b24071fbcbb3 148 wait(1.0f);
kenjiArai 0:b24071fbcbb3 149 if(exit_while_loop_when_keyinput()) {
kenjiArai 0:b24071fbcbb3 150 exit_req = true;
kenjiArai 0:b24071fbcbb3 151 break;
kenjiArai 0:b24071fbcbb3 152 }
kenjiArai 0:b24071fbcbb3 153 }
kenjiArai 0:b24071fbcbb3 154 if (exit_req == true) {
kenjiArai 0:b24071fbcbb3 155 break;
kenjiArai 0:b24071fbcbb3 156 }
kenjiArai 0:b24071fbcbb3 157 }
kenjiArai 0:b24071fbcbb3 158 for (uint32_t i = 0; i < sizeof(buf); i++) {
kenjiArai 0:b24071fbcbb3 159 buf[i] = ' ';
kenjiArai 0:b24071fbcbb3 160 }
kenjiArai 0:b24071fbcbb3 161 led_7segs.put_strings(buf);
kenjiArai 0:b24071fbcbb3 162 pc.printf("\r\n");
kenjiArai 0:b24071fbcbb3 163 }
kenjiArai 0:b24071fbcbb3 164 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 165 pc.printf("Step5\r\n");
kenjiArai 0:b24071fbcbb3 166 {
kenjiArai 0:b24071fbcbb3 167 char buf[16];
kenjiArai 0:b24071fbcbb3 168
kenjiArai 0:b24071fbcbb3 169 pc.printf("hit [Esc] to exit the function\r\n");
kenjiArai 0:b24071fbcbb3 170 for (uint32_t i = 0; i < sizeof(buf); i++) {
kenjiArai 0:b24071fbcbb3 171 buf[i] = ' ';
kenjiArai 0:b24071fbcbb3 172 }
kenjiArai 0:b24071fbcbb3 173 led_7segs.put_strings(buf);
kenjiArai 0:b24071fbcbb3 174 while(true) {
kenjiArai 0:b24071fbcbb3 175 while(pc.readable() == 0) {
kenjiArai 0:b24071fbcbb3 176 ;
kenjiArai 0:b24071fbcbb3 177 }
kenjiArai 0:b24071fbcbb3 178 char c = pc.getc();
kenjiArai 0:b24071fbcbb3 179 pc.putc(c);
kenjiArai 0:b24071fbcbb3 180 if (c == 0x1b) { // [Esc]
kenjiArai 0:b24071fbcbb3 181 break;
kenjiArai 0:b24071fbcbb3 182 }
kenjiArai 0:b24071fbcbb3 183 for (uint32_t i = 0 ; i < sizeof(buf) - 1; i++) {
kenjiArai 0:b24071fbcbb3 184 buf[i] = buf[i + 1];
kenjiArai 0:b24071fbcbb3 185 }
kenjiArai 0:b24071fbcbb3 186 buf[NUM_OF_DIGIT - 1] = c;
kenjiArai 0:b24071fbcbb3 187 led_7segs.put_strings(buf);
kenjiArai 0:b24071fbcbb3 188 }
kenjiArai 0:b24071fbcbb3 189 for (uint32_t i = 0; i < sizeof(buf); i++) {
kenjiArai 0:b24071fbcbb3 190 buf[i] = ' ';
kenjiArai 0:b24071fbcbb3 191 }
kenjiArai 0:b24071fbcbb3 192 led_7segs.put_strings(buf);
kenjiArai 0:b24071fbcbb3 193 pc.printf("\r\n");
kenjiArai 0:b24071fbcbb3 194 }
kenjiArai 0:b24071fbcbb3 195 //--------------------------------------------------------------------------
kenjiArai 0:b24071fbcbb3 196 pc.printf("Step_END\r\n");
kenjiArai 0:b24071fbcbb3 197 {
kenjiArai 0:b24071fbcbb3 198 while(true) {
kenjiArai 0:b24071fbcbb3 199 pc.printf("Finished -> Reset then start again\r\n");
kenjiArai 0:b24071fbcbb3 200 wait(10.0f);
kenjiArai 0:b24071fbcbb3 201 }
kenjiArai 0:b24071fbcbb3 202 }
kenjiArai 0:b24071fbcbb3 203 }
kenjiArai 0:b24071fbcbb3 204
kenjiArai 0:b24071fbcbb3 205 bool exit_while_loop_when_keyinput(void)
kenjiArai 0:b24071fbcbb3 206 {
kenjiArai 0:b24071fbcbb3 207 if (pc.readable()) {
kenjiArai 0:b24071fbcbb3 208 while(pc.readable()) {
kenjiArai 0:b24071fbcbb3 209 char c = pc.getc();
kenjiArai 0:b24071fbcbb3 210 }
kenjiArai 0:b24071fbcbb3 211 return true;
kenjiArai 0:b24071fbcbb3 212 } else {
kenjiArai 0:b24071fbcbb3 213 return false;
kenjiArai 0:b24071fbcbb3 214 }
kenjiArai 0:b24071fbcbb3 215 }