Temperature

Dependencies:   mbed

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?

UserRevisionLine numberNew 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