![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Temperature
main.cpp@3:fff97541a6f2, 2021-02-09 (annotated)
- Committer:
- srdjansimic
- Date:
- Tue Feb 09 14:37:03 2021 +0000
- Revision:
- 3:fff97541a6f2
- Parent:
- 2:e999eca5c095
7seg display
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
srdjansimic | 0:1ffbfe56f438 | 1 | #include "mbed.h" |
srdjansimic | 3:fff97541a6f2 | 2 | #include "main.h" |
srdjansimic | 0:1ffbfe56f438 | 3 | /* |
srdjansimic | 0:1ffbfe56f438 | 4 | This basic example just shows how to read the ADC internal channels raw values. |
srdjansimic | 0:1ffbfe56f438 | 5 | Please look in the corresponding device reference manual for a complete |
srdjansimic | 0:1ffbfe56f438 | 6 | description of how to make a temperature sensor, VBat or Vref measurement. |
srdjansimic | 0:1ffbfe56f438 | 7 | */ |
srdjansimic | 0:1ffbfe56f438 | 8 | |
srdjansimic | 0:1ffbfe56f438 | 9 | AnalogIn adc_temp(ADC_TEMP); |
srdjansimic | 0:1ffbfe56f438 | 10 | AnalogIn adc_vref(ADC_VREF); |
srdjansimic | 0:1ffbfe56f438 | 11 | #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) |
srdjansimic | 0:1ffbfe56f438 | 12 | AnalogIn adc_vbat(ADC_VBAT); // Warning: Not available on all devices |
srdjansimic | 0:1ffbfe56f438 | 13 | #endif |
srdjansimic | 0:1ffbfe56f438 | 14 | |
srdjansimic | 0:1ffbfe56f438 | 15 | DigitalOut led(LED1); |
srdjansimic | 1:57ff098da1dd | 16 | AnalogIn analog_light_sensor_read(A1); |
srdjansimic | 3:fff97541a6f2 | 17 | //DigitalIn digital_light_sensor_read(D7); |
srdjansimic | 3:fff97541a6f2 | 18 | InterruptIn digital_light_sensor_irq(D7); |
srdjansimic | 3:fff97541a6f2 | 19 | DigitalOut seg_g(D8); |
srdjansimic | 3:fff97541a6f2 | 20 | DigitalOut seg_f(D9); |
srdjansimic | 3:fff97541a6f2 | 21 | DigitalOut seg_a(D10); |
srdjansimic | 3:fff97541a6f2 | 22 | DigitalOut seg_b(D11); |
srdjansimic | 3:fff97541a6f2 | 23 | DigitalOut seg_e(D12); |
srdjansimic | 3:fff97541a6f2 | 24 | DigitalOut seg_d(D4); |
srdjansimic | 3:fff97541a6f2 | 25 | DigitalOut seg_c(D14); |
srdjansimic | 3:fff97541a6f2 | 26 | DigitalOut seg_dp(D15); |
srdjansimic | 3:fff97541a6f2 | 27 | Ticker flipper; |
srdjansimic | 3:fff97541a6f2 | 28 | |
srdjansimic | 3:fff97541a6f2 | 29 | char number_Pins[] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B}; |
srdjansimic | 0:1ffbfe56f438 | 30 | |
srdjansimic | 3:fff97541a6f2 | 31 | void set_number_code(char code) |
srdjansimic | 3:fff97541a6f2 | 32 | { |
srdjansimic | 3:fff97541a6f2 | 33 | seg_a = code & 0x40; |
srdjansimic | 3:fff97541a6f2 | 34 | seg_b = code & 0x20; |
srdjansimic | 3:fff97541a6f2 | 35 | seg_c = code & 0x10; |
srdjansimic | 3:fff97541a6f2 | 36 | seg_d = code & 0x8; |
srdjansimic | 3:fff97541a6f2 | 37 | seg_e = code & 0x4; |
srdjansimic | 3:fff97541a6f2 | 38 | seg_f = code & 0x2; |
srdjansimic | 3:fff97541a6f2 | 39 | seg_g = code & 0x1; |
srdjansimic | 3:fff97541a6f2 | 40 | } |
srdjansimic | 3:fff97541a6f2 | 41 | |
srdjansimic | 3:fff97541a6f2 | 42 | void set_number_dp_on() |
srdjansimic | 3:fff97541a6f2 | 43 | { |
srdjansimic | 3:fff97541a6f2 | 44 | seg_dp = 1; |
srdjansimic | 3:fff97541a6f2 | 45 | } |
srdjansimic | 3:fff97541a6f2 | 46 | |
srdjansimic | 3:fff97541a6f2 | 47 | void set_number_dp_off() |
srdjansimic | 3:fff97541a6f2 | 48 | { |
srdjansimic | 3:fff97541a6f2 | 49 | seg_dp = 0; |
srdjansimic | 3:fff97541a6f2 | 50 | } |
srdjansimic | 3:fff97541a6f2 | 51 | |
srdjansimic | 3:fff97541a6f2 | 52 | void flip() |
srdjansimic | 0:1ffbfe56f438 | 53 | { |
srdjansimic | 1:57ff098da1dd | 54 | int adc_scale = 4096; |
srdjansimic | 1:57ff098da1dd | 55 | int sensorValue; |
srdjansimic | 1:57ff098da1dd | 56 | float Rsensor; |
srdjansimic | 3:fff97541a6f2 | 57 | float f_Temperature; |
srdjansimic | 3:fff97541a6f2 | 58 | char c_Temperature; |
srdjansimic | 3:fff97541a6f2 | 59 | char last_digit; |
srdjansimic | 1:57ff098da1dd | 60 | |
srdjansimic | 3:fff97541a6f2 | 61 | f_Temperature = (adc_temp.read()*100); |
srdjansimic | 3:fff97541a6f2 | 62 | c_Temperature = (char) (f_Temperature + 0.5); |
srdjansimic | 3:fff97541a6f2 | 63 | last_digit = c_Temperature % 10; |
srdjansimic | 3:fff97541a6f2 | 64 | // printf("ADC Temp = %f | %d | %d\n", f_Temperature, c_Temperature, last_digit); |
srdjansimic | 3:fff97541a6f2 | 65 | // printf("ADC VRef = %f\n", adc_vref.read()); |
srdjansimic | 3:fff97541a6f2 | 66 | // #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) |
srdjansimic | 3:fff97541a6f2 | 67 | // printf("ADC VBat = %f\n", adc_vbat.read()); |
srdjansimic | 2:e999eca5c095 | 68 | // printf("\033[3A"); |
srdjansimic | 3:fff97541a6f2 | 69 | // #else |
srdjansimic | 2:e999eca5c095 | 70 | // printf("\033[2A"); |
srdjansimic | 3:fff97541a6f2 | 71 | // #endif |
srdjansimic | 3:fff97541a6f2 | 72 | led = !led; |
srdjansimic | 3:fff97541a6f2 | 73 | set_number_code(number_Pins[last_digit]); |
srdjansimic | 3:fff97541a6f2 | 74 | // if (led){ |
srdjansimic | 3:fff97541a6f2 | 75 | // set_number_code(0xFF); |
srdjansimic | 3:fff97541a6f2 | 76 | // |
srdjansimic | 3:fff97541a6f2 | 77 | // } else { |
srdjansimic | 3:fff97541a6f2 | 78 | // set_number_code(0x00); |
srdjansimic | 3:fff97541a6f2 | 79 | // } |
srdjansimic | 3:fff97541a6f2 | 80 | // if (f_Temperature > 25) { |
srdjansimic | 3:fff97541a6f2 | 81 | // wait(0.2); |
srdjansimic | 3:fff97541a6f2 | 82 | // } else { |
srdjansimic | 3:fff97541a6f2 | 83 | // wait(0.2); |
srdjansimic | 3:fff97541a6f2 | 84 | // flash_text(); |
srdjansimic | 3:fff97541a6f2 | 85 | // } |
srdjansimic | 3:fff97541a6f2 | 86 | sensorValue = analog_light_sensor_read.read_u16(); |
srdjansimic | 3:fff97541a6f2 | 87 | Rsensor=(float)(adc_scale-sensorValue)*10/sensorValue; |
srdjansimic | 3:fff97541a6f2 | 88 | // printf("Light Sensor Analog Reading is 0x%X = %d ", sensorValue, sensorValue); |
srdjansimic | 3:fff97541a6f2 | 89 | // printf("The sensor resistance is %f \n\n\r", Rsensor); |
srdjansimic | 3:fff97541a6f2 | 90 | /* if (digital_light_sensor_read) { |
srdjansimic | 3:fff97541a6f2 | 91 | printf("Digital sensor is ON\r\n"); |
srdjansimic | 3:fff97541a6f2 | 92 | set_number_dp_off(); |
srdjansimic | 3:fff97541a6f2 | 93 | } else { |
srdjansimic | 3:fff97541a6f2 | 94 | printf("Digital sensor is OFF\r\n"); |
srdjansimic | 3:fff97541a6f2 | 95 | set_number_dp_on(); |
srdjansimic | 3:fff97541a6f2 | 96 | }*/ |
srdjansimic | 2:e999eca5c095 | 97 | // digital_light_sensor_read = !digital_light_sensor_read; |
srdjansimic | 3:fff97541a6f2 | 98 | |
srdjansimic | 3:fff97541a6f2 | 99 | // printf("Digital sensor is %d \r\n", digital_light_sensor_read); |
srdjansimic | 3:fff97541a6f2 | 100 | } |
srdjansimic | 3:fff97541a6f2 | 101 | |
srdjansimic | 3:fff97541a6f2 | 102 | int main() |
srdjansimic | 3:fff97541a6f2 | 103 | { |
srdjansimic | 3:fff97541a6f2 | 104 | |
srdjansimic | 3:fff97541a6f2 | 105 | digital_light_sensor_irq.rise(&set_number_dp_off); |
srdjansimic | 3:fff97541a6f2 | 106 | digital_light_sensor_irq.fall(&set_number_dp_on); |
srdjansimic | 3:fff97541a6f2 | 107 | flipper.attach(&flip, 1.0); |
srdjansimic | 3:fff97541a6f2 | 108 | while(1) { |
srdjansimic | 3:fff97541a6f2 | 109 | // wait_ms(200); // 1s |
srdjansimic | 3:fff97541a6f2 | 110 | sleep(); |
srdjansimic | 0:1ffbfe56f438 | 111 | } |
srdjansimic | 0:1ffbfe56f438 | 112 | } |
srdjansimic | 3:fff97541a6f2 | 113 | |
srdjansimic | 3:fff97541a6f2 | 114 | void flash_text() |
srdjansimic | 3:fff97541a6f2 | 115 | { |
srdjansimic | 3:fff97541a6f2 | 116 | float delay_ms = 0.25; |
srdjansimic | 3:fff97541a6f2 | 117 | |
srdjansimic | 3:fff97541a6f2 | 118 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 119 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 120 | |
srdjansimic | 3:fff97541a6f2 | 121 | set_number_code(0x37); |
srdjansimic | 3:fff97541a6f2 | 122 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 123 | |
srdjansimic | 3:fff97541a6f2 | 124 | set_number_code(0x77); |
srdjansimic | 3:fff97541a6f2 | 125 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 126 | |
srdjansimic | 3:fff97541a6f2 | 127 | set_number_code(0x37); |
srdjansimic | 3:fff97541a6f2 | 128 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 129 | |
srdjansimic | 3:fff97541a6f2 | 130 | set_number_code(0x77); |
srdjansimic | 3:fff97541a6f2 | 131 | wait(delay_ms*4); |
srdjansimic | 3:fff97541a6f2 | 132 | |
srdjansimic | 3:fff97541a6f2 | 133 | set_number_code(0x0F); |
srdjansimic | 3:fff97541a6f2 | 134 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 135 | |
srdjansimic | 3:fff97541a6f2 | 136 | set_number_code(0x06); |
srdjansimic | 3:fff97541a6f2 | 137 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 138 | |
srdjansimic | 3:fff97541a6f2 | 139 | set_number_code(0x4E); |
srdjansimic | 3:fff97541a6f2 | 140 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 141 | |
srdjansimic | 3:fff97541a6f2 | 142 | set_number_code(0x77); |
srdjansimic | 3:fff97541a6f2 | 143 | wait(delay_ms*4); |
srdjansimic | 3:fff97541a6f2 | 144 | } |
srdjansimic | 3:fff97541a6f2 | 145 | |
srdjansimic | 3:fff97541a6f2 | 146 | void flash_all() |
srdjansimic | 3:fff97541a6f2 | 147 | { |
srdjansimic | 3:fff97541a6f2 | 148 | float delay_ms = 0.1; |
srdjansimic | 3:fff97541a6f2 | 149 | |
srdjansimic | 3:fff97541a6f2 | 150 | set_number_code(number_Pins[0]); |
srdjansimic | 3:fff97541a6f2 | 151 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 152 | set_number_code(number_Pins[1]); |
srdjansimic | 3:fff97541a6f2 | 153 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 154 | set_number_code(number_Pins[2]); |
srdjansimic | 3:fff97541a6f2 | 155 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 156 | set_number_code(number_Pins[3]); |
srdjansimic | 3:fff97541a6f2 | 157 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 158 | set_number_code(number_Pins[4]); |
srdjansimic | 3:fff97541a6f2 | 159 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 160 | set_number_code(number_Pins[5]); |
srdjansimic | 3:fff97541a6f2 | 161 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 162 | set_number_code(number_Pins[6]); |
srdjansimic | 3:fff97541a6f2 | 163 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 164 | set_number_code(number_Pins[7]); |
srdjansimic | 3:fff97541a6f2 | 165 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 166 | set_number_code(number_Pins[8]); |
srdjansimic | 3:fff97541a6f2 | 167 | wait(delay_ms); |
srdjansimic | 3:fff97541a6f2 | 168 | set_number_code(number_Pins[9]); |
srdjansimic | 3:fff97541a6f2 | 169 | } |
srdjansimic | 3:fff97541a6f2 | 170 |