![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Temperature
Revision 3:fff97541a6f2, committed 2021-02-09
- Comitter:
- srdjansimic
- Date:
- Tue Feb 09 14:37:03 2021 +0000
- Parent:
- 2:e999eca5c095
- Commit message:
- 7seg display
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
main.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r e999eca5c095 -r fff97541a6f2 main.cpp --- a/main.cpp Tue Feb 09 01:12:23 2021 +0000 +++ b/main.cpp Tue Feb 09 14:37:03 2021 +0000 @@ -1,5 +1,5 @@ #include "mbed.h" - +#include "main.h" /* This basic example just shows how to read the ADC internal channels raw values. Please look in the corresponding device reference manual for a complete @@ -14,42 +14,157 @@ DigitalOut led(LED1); AnalogIn analog_light_sensor_read(A1); -DigitalIn digital_light_sensor_read(D8); +//DigitalIn digital_light_sensor_read(D7); +InterruptIn digital_light_sensor_irq(D7); +DigitalOut seg_g(D8); +DigitalOut seg_f(D9); +DigitalOut seg_a(D10); +DigitalOut seg_b(D11); +DigitalOut seg_e(D12); +DigitalOut seg_d(D4); +DigitalOut seg_c(D14); +DigitalOut seg_dp(D15); +Ticker flipper; + +char number_Pins[] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B}; -int main() +void set_number_code(char code) +{ + seg_a = code & 0x40; + seg_b = code & 0x20; + seg_c = code & 0x10; + seg_d = code & 0x8; + seg_e = code & 0x4; + seg_f = code & 0x2; + seg_g = code & 0x1; +} + +void set_number_dp_on() +{ + seg_dp = 1; +} + +void set_number_dp_off() +{ + seg_dp = 0; +} + +void flip() { int adc_scale = 4096; int sensorValue; float Rsensor; + float f_Temperature; + char c_Temperature; + char last_digit; - printf("\nSTM32 ADC internal channels reading example\n"); - while(1) { - printf("ADC Temp = %f\n", (adc_temp.read()*100)); -// printf("ADC VRef = %f\n", adc_vref.read()); - #if defined(TARGET_DISCO_F051R8) || defined(TARGET_NUCLEO_F030R8) || defined(TARGET_NUCLEO_F031K6) || defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F070RB) || defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_DISCO_F303VC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303ZE) || defined(TARGET_DISCO_F334C8) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_MTS_DRAGONFLY_F411RE) || defined(TARGET_MTS_MDOT_F405RG) || defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_DISCO_F401VC) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_ARCH_MAX) || defined(TARGET_DISCO_F407VG) || defined(TARGET_NUCLEO_F410RB) || defined(TARGET_ELMO_F411RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F439ZI) || defined(TARGET_B96B_F446VE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_F756ZG) || defined(TARGET_NUCLEO_F767ZI) || defined(TARGET_DISCO_F769NI) || defined(TARGET_DISCO_L072CZ_LRWAN1) || defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_L476VG) || defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L486RG) -// printf("ADC VBat = %f\n", adc_vbat.read()); + f_Temperature = (adc_temp.read()*100); + c_Temperature = (char) (f_Temperature + 0.5); + last_digit = c_Temperature % 10; +// printf("ADC Temp = %f | %d | %d\n", f_Temperature, c_Temperature, last_digit); +// printf("ADC VRef = %f\n", adc_vref.read()); +// #if defined(TARGET_DISCO_F051R8) || defined(TARGET_NUCLEO_F030R8) || defined(TARGET_NUCLEO_F031K6) || defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F070RB) || defined(TARGET_NUCLEO_F072RB) || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F207ZG) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_F303K8) || defined(TARGET_DISCO_F303VC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F303ZE) || defined(TARGET_DISCO_F334C8) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_MTS_DRAGONFLY_F411RE) || defined(TARGET_MTS_MDOT_F405RG) || defined(TARGET_MTS_MDOT_F411RE) || defined(TARGET_DISCO_F401VC) || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_ARCH_MAX) || defined(TARGET_DISCO_F407VG) || defined(TARGET_NUCLEO_F410RB) || defined(TARGET_ELMO_F411RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F412ZG) || defined(TARGET_DISCO_F413ZH) || defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI) || defined(TARGET_NUCLEO_F439ZI) || defined(TARGET_B96B_F446VE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F446ZE) || defined(TARGET_DISCO_F469NI) || defined(TARGET_DISCO_F746NG) || defined(TARGET_NUCLEO_F746ZG) || defined(TARGET_NUCLEO_F756ZG) || defined(TARGET_NUCLEO_F767ZI) || defined(TARGET_DISCO_F769NI) || defined(TARGET_DISCO_L072CZ_LRWAN1) || defined(TARGET_NUCLEO_L432KC) || defined(TARGET_DISCO_L476VG) || defined(TARGET_NUCLEO_L476RG) || defined(TARGET_NUCLEO_L486RG) +// printf("ADC VBat = %f\n", adc_vbat.read()); // printf("\033[3A"); - #else +// #else // printf("\033[2A"); - #endif - led = !led; - if ((adc_temp.read()*100) > 20) { - wait(1.0); - } else { - wait(0.25); - } - sensorValue = analog_light_sensor_read.read_u16(); - Rsensor=(float)(adc_scale-sensorValue)*10/sensorValue; - printf("Light Sensor Analog Reading is 0x%X = %d ", sensorValue, sensorValue); - printf("The sensor resistance is %f \n\n\r", Rsensor); - if (digital_light_sensor_read) { - printf("Digital sensor is ON\r\n"); - } else { - printf("Digital sensor is OFF\r\n"); - } +// #endif + led = !led; + set_number_code(number_Pins[last_digit]); +// if (led){ +// set_number_code(0xFF); +// +// } else { +// set_number_code(0x00); +// } +// if (f_Temperature > 25) { +// wait(0.2); +// } else { +// wait(0.2); +// flash_text(); +// } + sensorValue = analog_light_sensor_read.read_u16(); + Rsensor=(float)(adc_scale-sensorValue)*10/sensorValue; +// printf("Light Sensor Analog Reading is 0x%X = %d ", sensorValue, sensorValue); +// printf("The sensor resistance is %f \n\n\r", Rsensor); +/* if (digital_light_sensor_read) { + printf("Digital sensor is ON\r\n"); + set_number_dp_off(); + } else { + printf("Digital sensor is OFF\r\n"); + set_number_dp_on(); + }*/ // digital_light_sensor_read = !digital_light_sensor_read; - - printf("Digital sensor is %d \r\n", digital_light_sensor_read); -// wait(1); // 1s + +// printf("Digital sensor is %d \r\n", digital_light_sensor_read); +} + +int main() +{ + + digital_light_sensor_irq.rise(&set_number_dp_off); + digital_light_sensor_irq.fall(&set_number_dp_on); + flipper.attach(&flip, 1.0); + while(1) { +// wait_ms(200); // 1s + sleep(); } } + +void flash_text() +{ + float delay_ms = 0.25; + + wait(delay_ms); + wait(delay_ms); + + set_number_code(0x37); + wait(delay_ms); + + set_number_code(0x77); + wait(delay_ms); + + set_number_code(0x37); + wait(delay_ms); + + set_number_code(0x77); + wait(delay_ms*4); + + set_number_code(0x0F); + wait(delay_ms); + + set_number_code(0x06); + wait(delay_ms); + + set_number_code(0x4E); + wait(delay_ms); + + set_number_code(0x77); + wait(delay_ms*4); +} + +void flash_all() +{ + float delay_ms = 0.1; + + set_number_code(number_Pins[0]); + wait(delay_ms); + set_number_code(number_Pins[1]); + wait(delay_ms); + set_number_code(number_Pins[2]); + wait(delay_ms); + set_number_code(number_Pins[3]); + wait(delay_ms); + set_number_code(number_Pins[4]); + wait(delay_ms); + set_number_code(number_Pins[5]); + wait(delay_ms); + set_number_code(number_Pins[6]); + wait(delay_ms); + set_number_code(number_Pins[7]); + wait(delay_ms); + set_number_code(number_Pins[8]); + wait(delay_ms); + set_number_code(number_Pins[9]); +} +
diff -r e999eca5c095 -r fff97541a6f2 main.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.h Tue Feb 09 14:37:03 2021 +0000 @@ -0,0 +1,2 @@ +void flash_text(); +void flash_all();