Dheeraj Etta
/
Temp_sensor
IR temp sensor
main.cpp@1:c5f7996b1035, 2020-08-06 (annotated)
- Committer:
- DheerajEtta
- Date:
- Thu Aug 06 20:32:47 2020 +0000
- Revision:
- 1:c5f7996b1035
- Parent:
- 0:f84245f91a5a
IR temperature sensor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DheerajEtta | 1:c5f7996b1035 | 1 | #include "mbed.h" |
DheerajEtta | 1:c5f7996b1035 | 2 | #include "SPI.h" |
DheerajEtta | 1:c5f7996b1035 | 3 | Serial pc (USBTX, USBRX); |
DheerajEtta | 1:c5f7996b1035 | 4 | SPI spi_temp(PB_15, PB_14, PB_13); // mosi, miso, sclk |
DheerajEtta | 1:c5f7996b1035 | 5 | DigitalOut spi_cs(PB_12); // chip select |
ym1784 | 0:f84245f91a5a | 6 | |
DheerajEtta | 1:c5f7996b1035 | 7 | void temp_read () |
DheerajEtta | 1:c5f7996b1035 | 8 | { |
DheerajEtta | 1:c5f7996b1035 | 9 | spi_cs=0; |
DheerajEtta | 1:c5f7996b1035 | 10 | wait(1); |
DheerajEtta | 1:c5f7996b1035 | 11 | float data0[9], data1[9]; |
DheerajEtta | 1:c5f7996b1035 | 12 | float temp[9]; |
DheerajEtta | 1:c5f7996b1035 | 13 | spi_temp.write(0xA0); // Sensor Temperature |
DheerajEtta | 1:c5f7996b1035 | 14 | wait_us(200); |
DheerajEtta | 1:c5f7996b1035 | 15 | data0[0] = spi_temp.write(0xFF); // Higher Byte |
DheerajEtta | 1:c5f7996b1035 | 16 | // if (data0[0] < 128) // Inside temp range |
DheerajEtta | 1:c5f7996b1035 | 17 | wait_us(200); |
DheerajEtta | 1:c5f7996b1035 | 18 | data1[0] = spi_temp.write(0xFF); // Lower Byte |
DheerajEtta | 1:c5f7996b1035 | 19 | temp[0] = (256*data0[0] + data1[0]) / 10; |
DheerajEtta | 1:c5f7996b1035 | 20 | |
DheerajEtta | 1:c5f7996b1035 | 21 | // else // Overshooting temp range |
DheerajEtta | 1:c5f7996b1035 | 22 | // data1[0] = 0; |
DheerajEtta | 1:c5f7996b1035 | 23 | // temp[0] = 85.0; } |
DheerajEtta | 1:c5f7996b1035 | 24 | printf("Sensor %0.2f\n",temp[0]); // Maximum Limit reached |
DheerajEtta | 1:c5f7996b1035 | 25 | wait_us(200); |
DheerajEtta | 1:c5f7996b1035 | 26 | for (int i = 1; i<=8; i++) // For rest 8-pixels |
DheerajEtta | 1:c5f7996b1035 | 27 | { |
DheerajEtta | 1:c5f7996b1035 | 28 | uint8_t p = 0xA0 + i ; |
ym1784 | 0:f84245f91a5a | 29 | |
DheerajEtta | 1:c5f7996b1035 | 30 | spi_temp.write(p); // Deciding from 1st - 8th pixel |
DheerajEtta | 1:c5f7996b1035 | 31 | wait_us(200); |
DheerajEtta | 1:c5f7996b1035 | 32 | data0[i] = spi_temp.write(0xFF); // Higher Byte |
DheerajEtta | 1:c5f7996b1035 | 33 | |
DheerajEtta | 1:c5f7996b1035 | 34 | // if (data0[i] < 128) // Inside temp range |
DheerajEtta | 1:c5f7996b1035 | 35 | // { |
DheerajEtta | 1:c5f7996b1035 | 36 | wait_us(200); |
DheerajEtta | 1:c5f7996b1035 | 37 | data1[i] = spi_temp.write(0xFF); // Lower Byte |
DheerajEtta | 1:c5f7996b1035 | 38 | temp[i] = (256*data0[i] + data1[i]) / 10; |
DheerajEtta | 1:c5f7996b1035 | 39 | // } |
DheerajEtta | 1:c5f7996b1035 | 40 | // else // Overshooting temp. range |
DheerajEtta | 1:c5f7996b1035 | 41 | // { data1[i] = 0; |
DheerajEtta | 1:c5f7996b1035 | 42 | // temp[i] = 120.0; } |
DheerajEtta | 1:c5f7996b1035 | 43 | printf("Pixel %d %0.2f\n",i,temp[i]); // Maximum limit reached |
DheerajEtta | 1:c5f7996b1035 | 44 | } |
DheerajEtta | 1:c5f7996b1035 | 45 | spi_cs=1; |
DheerajEtta | 1:c5f7996b1035 | 46 | } |
ym1784 | 0:f84245f91a5a | 47 | |
DheerajEtta | 1:c5f7996b1035 | 48 | void spi_initialise() |
DheerajEtta | 1:c5f7996b1035 | 49 | { spi_temp.format(8, 1); //8-bits, Mode 1 |
DheerajEtta | 1:c5f7996b1035 | 50 | spi_temp.frequency(100000); // 100 KHz frequency of SCLK |
DheerajEtta | 1:c5f7996b1035 | 51 | spi_cs=1; |
DheerajEtta | 1:c5f7996b1035 | 52 | } |
ym1784 | 0:f84245f91a5a | 53 | |
DheerajEtta | 1:c5f7996b1035 | 54 | int main() |
DheerajEtta | 1:c5f7996b1035 | 55 | { |
DheerajEtta | 1:c5f7996b1035 | 56 | printf("Temp Check\n"); |
DheerajEtta | 1:c5f7996b1035 | 57 | spi_initialise(); |
DheerajEtta | 1:c5f7996b1035 | 58 | temp_read(); |
DheerajEtta | 1:c5f7996b1035 | 59 | } |