Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 74HC595 RS485 mbed
Fork of Check_7segLED_driver by
main.cpp@0:b24071fbcbb3, 2018-01-22 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
