Check program for 7-segment LED driver [OSL10564-74HC595-x] library
Dependencies: OSL10564_74HC595 mbed
Revision 0:b24071fbcbb3, committed 2018-01-22
- Comitter:
- kenjiArai
- Date:
- Mon Jan 22 10:25:28 2018 +0000
- Commit message:
- check program for 7-segment LED driver [OSL10564-74HC595-x] library
Changed in this revision
diff -r 000000000000 -r b24071fbcbb3 OSL10564_74HC595.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OSL10564_74HC595.lib Mon Jan 22 10:25:28 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/kenjiArai/code/OSL10564_74HC595/#3373357a49f4
diff -r 000000000000 -r b24071fbcbb3 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jan 22 10:25:28 2018 +0000 @@ -0,0 +1,215 @@ +/* + * Mbed Application program / Akizuki 7-segment LED driver [OSL10564-74HC595-x] + * AKIZUKI AE-7SEG-BOARD-KIT-BLUE + * http://akizukidenshi.com/catalog/g/gK-10344/ + * + * Copyright (c) 2018 Kenji Arai / JH1PJL + * http://www.page.sannet.ne.jp/kenjia/index.html + * http://mbed.org/users/kenjiArai/ + * Created: January 7th, 2018 + * Revised: January 22nd, 2018 + */ + +// Include -------------------------------------------------------------------- +#include "mbed.h" +#include "7segLed_HC595.h" + +// Definition ----------------------------------------------------------------- +#define NUM_OF_DIGIT 6 + +#define KEYIN_THEN_EXIT_WHILE() {if(exit_while_loop_when_keyinput()){ break;}} + +// Constructor ---------------------------------------------------------------- +Serial pc(USBTX, USBRX); +#if defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F411RE)\ + || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_L152RE)\ + || defined(TARGET_NUCLEO_L073RZ) || defined(TARGET_NUCLEO_L053R8)\ + || defined(TARGET_NUCLEO_L476RG) +// SPI MOSI,SCLK,any port, PWM, number of digit +SevenSegLed led_7segs(D4, D3, D5, D6, NUM_OF_DIGIT); +#elif defined(TARGET_NUCLEO_F334R8) +// SPI MOSI,SCLK,any port, PWM, number of digit +SevenSegLed led_7segs(D4, D3, D5, D7, NUM_OF_DIGIT); +#elif defined(TARGET_NUCLEO_F303K8) +// SPI MOSI,SCLK,any port, PWM, number of digit +SevenSegLed led_7segs(A6, A4, A5, A3, NUM_OF_DIGIT); +#elif TARGET_Freescale +// SPI MOSI,SCLK,any port, PWM, number of digit +SevenSegLed led_7segs(D11, D13, D12, D10, NUM_OF_DIGIT); +#else +#error "Please set your own SevenSegLed constractor!" +#endif +DigitalOut myled(LED1); +AnalogIn vol(A0); + +// RAM ------------------------------------------------------------------------ +time_t seconds; + +// ROM / Constant data -------------------------------------------------------- + +// Function prototypes -------------------------------------------------------- +bool exit_while_loop_when_keyinput(void); + +//------------------------------------------------------------------------------ +// Control Program +//------------------------------------------------------------------------------ +int main() +{ + //-------------------------------------------------------------------------- + pc.printf("Hit any key to go next step\r\n"); + pc.printf("Step1\r\n"); + { + uint32_t max = 9; + for (uint32_t i = 1; i < NUM_OF_DIGIT; i++) { + max = max * 10 + 9; + } + pc.printf("max = %d\r\n", max); + led_7segs.zero_suppress(true); + int32_t count = 0; + while(true) { + led_7segs = count++; + if (count > max) { + count = 0; + } + float wait_time = 5.0f / (float)(count + 1); + if (wait_time > 0.01f) { + wait(wait_time); + } + KEYIN_THEN_EXIT_WHILE(); + } + } + //-------------------------------------------------------------------------- + pc.printf("Step2\r\n"); + { + char buf[16]; + + led_7segs.zero_suppress(false); + float led_bright = 0.5f; + while(true) { + time_t seconds = time(NULL); + strftime(buf, 10, "%H.%M.%S", localtime(&seconds)); + //strftime(buf, 10, "1.2.3.4.%S", localtime(&seconds)); + pc.printf("%s\r\n", buf); + led_7segs.put_ascii(buf); + led_7segs.brightness(led_bright); + if (led_bright == 0.5f) { + led_bright = 1.0f; + } else { + led_bright = 0.5f; + } + wait(1.0f); + KEYIN_THEN_EXIT_WHILE(); + } + } + //-------------------------------------------------------------------------- + pc.printf("Step3\r\n"); + { + uint8_t seg_bf[6] = { + 0b00000001 // LSB + ,0b00000010 + ,0b10000100 // +Dot + ,0b00001000 + ,0b00010000 + ,0b00100000 // MSB + }; + + led_7segs.zero_suppress(true); + led_7segs.brightness(1.0f); + int32_t count = 0; + while(true) { + count++; + if (count & 0x01) { + led_7segs.put_raw(seg_bf); + } else { + led_7segs.put_ascii("12.34567"); + } + wait(1.0f); + KEYIN_THEN_EXIT_WHILE(); + } + } + //-------------------------------------------------------------------------- + pc.printf("Step4\r\n"); + { + char buf[16]; + + for (uint32_t i = 0; i < sizeof(buf); i++) { + buf[i] = ' '; + } + bool exit_req = false; + while(true) { + for (uint32_t n = ' '; n < '~'; n++) { + for (uint32_t i = 0 ; i < sizeof(buf) - 1; i++) { + buf[i] = buf[i + 1]; + } + buf[NUM_OF_DIGIT - 1] = n; + pc.putc(n); + led_7segs.put_strings(buf); + led_7segs.brightness(vol); + wait(1.0f); + if(exit_while_loop_when_keyinput()) { + exit_req = true; + break; + } + } + if (exit_req == true) { + break; + } + } + for (uint32_t i = 0; i < sizeof(buf); i++) { + buf[i] = ' '; + } + led_7segs.put_strings(buf); + pc.printf("\r\n"); + } + //-------------------------------------------------------------------------- + pc.printf("Step5\r\n"); + { + char buf[16]; + + pc.printf("hit [Esc] to exit the function\r\n"); + for (uint32_t i = 0; i < sizeof(buf); i++) { + buf[i] = ' '; + } + led_7segs.put_strings(buf); + while(true) { + while(pc.readable() == 0) { + ; + } + char c = pc.getc(); + pc.putc(c); + if (c == 0x1b) { // [Esc] + break; + } + for (uint32_t i = 0 ; i < sizeof(buf) - 1; i++) { + buf[i] = buf[i + 1]; + } + buf[NUM_OF_DIGIT - 1] = c; + led_7segs.put_strings(buf); + } + for (uint32_t i = 0; i < sizeof(buf); i++) { + buf[i] = ' '; + } + led_7segs.put_strings(buf); + pc.printf("\r\n"); + } + //-------------------------------------------------------------------------- + pc.printf("Step_END\r\n"); + { + while(true) { + pc.printf("Finished -> Reset then start again\r\n"); + wait(10.0f); + } + } +} + +bool exit_while_loop_when_keyinput(void) +{ + if (pc.readable()) { + while(pc.readable()) { + char c = pc.getc(); + } + return true; + } else { + return false; + } +}
diff -r 000000000000 -r b24071fbcbb3 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Jan 22 10:25:28 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/7130f322cb7e \ No newline at end of file