termocamera
Dependencies: LCD_fonts mbed SDFileSystem UniGraphic
Project_Termocamera/main.cpp@0:417d4512faec, 2019-09-27 (annotated)
- Committer:
- gia95
- Date:
- Fri Sep 27 12:50:57 2019 +0000
- Revision:
- 0:417d4512faec
termocamera
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gia95 | 0:417d4512faec | 1 | #include "mbed.h" |
gia95 | 0:417d4512faec | 2 | #include "ILI9341.h" |
gia95 | 0:417d4512faec | 3 | #include "math.h" // Utile per operazione di rounding (?) |
gia95 | 0:417d4512faec | 4 | #include "Arial_9.h" // Font display |
gia95 | 0:417d4512faec | 5 | #include "SDFileSystem.h" //lib per SD |
gia95 | 0:417d4512faec | 6 | |
gia95 | 0:417d4512faec | 7 | |
gia95 | 0:417d4512faec | 8 | Serial bt(D8, D2); // Bluetooth interface |
gia95 | 0:417d4512faec | 9 | |
gia95 | 0:417d4512faec | 10 | |
gia95 | 0:417d4512faec | 11 | // LEPTON |
gia95 | 0:417d4512faec | 12 | SPI lepton_spi(SPI_MOSI, SPI_MISO, SPI_SCK); |
gia95 | 0:417d4512faec | 13 | DigitalOut spi_cs(SPI_CS); |
gia95 | 0:417d4512faec | 14 | #define VOSPI_FRAME_SIZE (164) |
gia95 | 0:417d4512faec | 15 | uint8_t lepton_frame_packet[VOSPI_FRAME_SIZE]; |
gia95 | 0:417d4512faec | 16 | uint16_t lepton_image[60][80]; |
gia95 | 0:417d4512faec | 17 | int print_image_binary_state = -1; |
gia95 | 0:417d4512faec | 18 | int print_image_binary_i; |
gia95 | 0:417d4512faec | 19 | int print_image_binary_j; |
gia95 | 0:417d4512faec | 20 | int stop =0; |
gia95 | 0:417d4512faec | 21 | int save =1; |
gia95 | 0:417d4512faec | 22 | int cont=0; |
gia95 | 0:417d4512faec | 23 | |
gia95 | 0:417d4512faec | 24 | // DISPLAY |
gia95 | 0:417d4512faec | 25 | ILI9341 tft (SPI_8, 40000000,PB_15, PB_14, PB_13, D7, D6, D9, "tft"); // SPI type, SPI speed, mosi, miso, sclk, cs, reset, dc; // ILI9341 driver //20MHz |
gia95 | 0:417d4512faec | 26 | char orient = 2; // Orientazione del display |
gia95 | 0:417d4512faec | 27 | |
gia95 | 0:417d4512faec | 28 | //Photo Button |
gia95 | 0:417d4512faec | 29 | InterruptIn button(PC_9); |
gia95 | 0:417d4512faec | 30 | |
gia95 | 0:417d4512faec | 31 | |
gia95 | 0:417d4512faec | 32 | //Micro SD |
gia95 | 0:417d4512faec | 33 | SDFileSystem sd(PC_12, PC_11, PC_10, D4, "sd"); |
gia95 | 0:417d4512faec | 34 | |
gia95 | 0:417d4512faec | 35 | // Variabili |
gia95 | 0:417d4512faec | 36 | int lost_frame_counter = 0; |
gia95 | 0:417d4512faec | 37 | int last_frame_number; |
gia95 | 0:417d4512faec | 38 | int frame_complete = 0; |
gia95 | 0:417d4512faec | 39 | int start_image = 0; |
gia95 | 0:417d4512faec | 40 | int need_resync = 0; |
gia95 | 0:417d4512faec | 41 | int last_crc; |
gia95 | 0:417d4512faec | 42 | int new_frame = 0; |
gia95 | 0:417d4512faec | 43 | int frame_counter = 0; |
gia95 | 0:417d4512faec | 44 | float minValue = 65535; |
gia95 | 0:417d4512faec | 45 | float maxValue = 0; |
gia95 | 0:417d4512faec | 46 | float max_p=0; |
gia95 | 0:417d4512faec | 47 | int8_t errore=0; |
gia95 | 0:417d4512faec | 48 | float T_image[60][80]; |
gia95 | 0:417d4512faec | 49 | uint8_t matrix[60][240]; |
gia95 | 0:417d4512faec | 50 | uint8_t matrix1[60][80]; |
gia95 | 0:417d4512faec | 51 | float m1; |
gia95 | 0:417d4512faec | 52 | float n1; |
gia95 | 0:417d4512faec | 53 | int x1,y1,x2,y2; |
gia95 | 0:417d4512faec | 54 | float a0,a1,a2,a3; |
gia95 | 0:417d4512faec | 55 | float Out; |
gia95 | 0:417d4512faec | 56 | unsigned int color; |
gia95 | 0:417d4512faec | 57 | |
gia95 | 0:417d4512faec | 58 | FATFS SDFatFs;//variabili per il salvataggio FAT del'immagine su microSD |
gia95 | 0:417d4512faec | 59 | FIL MyFile; |
gia95 | 0:417d4512faec | 60 | FRESULT res; |
gia95 | 0:417d4512faec | 61 | |
gia95 | 0:417d4512faec | 62 | |
gia95 | 0:417d4512faec | 63 | uint32_t bytesread; |
gia95 | 0:417d4512faec | 64 | |
gia95 | 0:417d4512faec | 65 | //Colorbar per salvataggio immagine |
gia95 | 0:417d4512faec | 66 | //const int colormap_rainbow[] = {1, 3, 74, 0, 3, 74, 0, 3, 75, 0, 3, 75, 0, 3, 76, 0, 3, 76, 0, 3, 77, 0, 3, 79, 0, 3, 82, 0, 5, 85, 0, 7, 88, 0, 10, 91, 0, 14, 94, 0, 19, 98, 0, 22, 100, 0, 25, 103, 0, 28, 106, 0, 32, 109, 0, 35, 112, 0, 38, 116, 0, 40, 119, 0, 42, 123, 0, 45, 128, 0, 49, 133, 0, 50, 134, 0, 51, 136, 0, 52, 137, 0, 53, 139, 0, 54, 142, 0, 55, 144, 0, 56, 145, 0, 58, 149, 0, 61, 154, 0, 63, 156, 0, 65, 159, 0, 66, 161, 0, 68, 164, 0, 69, 167, 0, 71, 170, 0, 73, 174, 0, 75, 179, 0, 76, 181, 0, 78, 184, 0, 79, 187, 0, 80, 188, 0, 81, 190, 0, 84, 194, 0, 87, 198, 0, 88, 200, 0, 90, 203, 0, 92, 205, 0, 94, 207, 0, 94, 208, 0, 95, 209, 0, 96, 210, 0, 97, 211, 0, 99, 214, 0, 102, 217, 0, 103, 218, 0, 104, 219, 0, 105, 220, 0, 107, 221, 0, 109, 223, 0, 111, 223, 0, 113, 223, 0, 115, 222, 0, 117, 221, 0, 118, 220, 1, 120, 219, 1, 122, 217, 2, 124, 216, 2, 126, 214, 3, 129, 212, 3, 131, 207, 4, 132, 205, 4, 133, 202, 4, 134, 197, 5, 136, 192, 6, 138, 185, 7, 141, 178, 8, 142, 172, 10, 144, 166, 10, 144, 162, 11, 145, 158, 12, 146, 153, 13, 147, 149, 15, 149, 140, 17, 151, 132, 22, 153, 120, 25, 154, 115, 28, 156, 109, 34, 158, 101, 40, 160, 94, 45, 162, 86, 51, 164, 79, 59, 167, 69, 67, 171, 60, 72, 173, 54, 78, 175, 48, 83, 177, 43, 89, 179, 39, 93, 181, 35, 98, 183, 31, 105, 185, 26, 109, 187, 23, 113, 188, 21, 118, 189, 19, 123, 191, 17, 128, 193, 14, 134, 195, 12, 138, 196, 10, 142, 197, 8, 146, 198, 6, 151, 200, 5, 155, 201, 4, 160, 203, 3, 164, 204, 2, 169, 205, 2, 173, 206, 1, 175, 207, 1, 178, 207, 1, 184, 208, 0, 190, 210, 0, 193, 211, 0, 196, 212, 0, 199, 212, 0, 202, 213, 1, 207, 214, 2, 212, 215, 3, 215, 214, 3, 218, 214, 3, 220, 213, 3, 222, 213, 4, 224, 212, 4, 225, 212, 5, 226, 212, 5, 229, 211, 5, 232, 211, 6, 232, 211, 6, 233, 211, 6, 234, 210, 6, 235, 210, 7, 236, 209, 7, 237, 208, 8, 239, 206, 8, 241, 204, 9, 242, 203, 9, 244, 202, 10, 244, 201, 10, 245, 200, 10, 245, 199, 11, 246, 198, 11, 247, 197, 12, 248, 194, 13, 249, 191, 14, 250, 189, 14, 251, 187, 15, 251, 185, 16, 252, 183, 17, 252, 178, 18, 253, 174, 19, 253, 171, 19, 254, 168, 20, 254, 165, 21, 254, 164, 21, 255, 163, 22, 255, 161, 22, 255, 159, 23, 255, 157, 23, 255, 155, 24, 255, 149, 25, 255, 143, 27, 255, 139, 28, 255, 135, 30, 255, 131, 31, 255, 127, 32, 255, 118, 34, 255, 110, 36, 255, 104, 37, 255, 101, 38, 255, 99, 39, 255, 93, 40, 255, 88, 42, 254, 82, 43, 254, 77, 45, 254, 69, 47, 254, 62, 49, 253, 57, 50, 253, 53, 52, 252, 49, 53, 252, 45, 55, 251, 39, 57, 251, 33, 59, 251, 32, 60, 251, 31, 60, 251, 30, 61, 251, 29, 61, 251, 28, 62, 250, 27, 63, 250, 27, 65, 249, 26, 66, 249, 26, 68, 248, 25, 70, 248, 24, 73, 247, 24, 75, 247, 25, 77, 247, 25, 79, 247, 26, 81, 247, 32, 83, 247, 35, 85, 247, 38, 86, 247, 42, 88, 247, 46, 90, 247, 50, 92, 248, 55, 94, 248, 59, 96, 248, 64, 98, 248, 72, 101, 249, 81, 104, 249, 87, 106, 250, 93, 108, 250, 95, 109, 250, 98, 110, 250, 100, 111, 251, 101, 112, 251, 102, 113, 251, 109, 117, 252, 116, 121, 252, 121, 123, 253, 126, 126, 253, 130, 128, 254, 135, 131, 254, 139, 133, 254, 144, 136, 254, 151, 140, 255, 158, 144, 255, 163, 146, 255, 168, 149, 255, 173, 152, 255, 176, 153, 255, 178, 155, 255, 184, 160, 255, 191, 165, 255, 195, 168, 255, 199, 172, 255, 203, 175, 255, 207, 179, 255, 211, 182, 255, 216, 185, 255, 218, 190, 255, 220, 196, 255, 222, 200, 255, 225, 202, 255, 227, 204, 255, 230, 206, 255, 233, 208}; |
gia95 | 0:417d4512faec | 67 | //const int colormap_grayscale[] = {0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 46, 47, 47, 47, 48, 48, 48, 49, 49, 49, 50, 50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 65, 65, 65, 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 82, 82, 82, 83, 83, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 87, 87, 87, 88, 88, 88, 89, 89, 89, 90, 90, 90, 91, 91, 91, 92, 92, 92, 93, 93, 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 100, 101, 101, 101, 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, 111, 111, 111, 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 116, 116, 116, 117, 117, 117, 118, 118, 118, 119, 119, 119, 120, 120, 120, 121, 121, 121, 122, 122, 122, 123, 123, 123, 124, 124, 124, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, 129, 129, 129, 130, 130, 130, 131, 131, 131, 132, 132, 132, 133, 133, 133, 134, 134, 134, 135, 135, 135, 136, 136, 136, 137, 137, 137, 138, 138, 138, 139, 139, 139, 140, 140, 140, 141, 141, 141, 142, 142, 142, 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 146, 147, 147, 147, 148, 148, 148, 149, 149, 149, 150, 150, 150, 151, 151, 151, 152, 152, 152, 153, 153, 153, 154, 154, 154, 155, 155, 155, 156, 156, 156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 160, 160, 160, 161, 161, 161, 162, 162, 162, 163, 163, 163, 164, 164, 164, 165, 165, 165, 166, 166, 166, 167, 167, 167, 168, 168, 168, 169, 169, 169, 170, 170, 170, 171, 171, 171, 172, 172, 172, 173, 173, 173, 174, 174, 174, 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, 178, 178, 179, 179, 179, 180, 180, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 184, 184, 184, 185, 185, 185, 186, 186, 186, 187, 187, 187, 188, 188, 188, 189, 189, 189, 190, 190, 190, 191, 191, 191, 192, 192, 192, 193, 193, 193, 194, 194, 194, 195, 195, 195, 196, 196, 196, 197, 197, 197, 198, 198, 198, 199, 199, 199, 200, 200, 200, 201, 201, 201, 202, 202, 202, 203, 203, 203, 204, 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, 207, 208, 208, 208, 209, 209, 209, 210, 210, 210, 211, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, 219, 219, 219, 220, 220, 220, 221, 221, 221, 222, 222, 222, 223, 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, 226, 227, 227, 227, 228, 228, 228, 229, 229, 229, 230, 230, 230, 231, 231, 231, 232, 232, 232, 233, 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 236, 237, 237, 237, 238, 238, 238, 239, 239, 239, 240, 240, 240, 241, 241, 241, 242, 242, 242, 243, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, 250, 251, 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, 255}; |
gia95 | 0:417d4512faec | 68 | //const int colormap_ironblack[] = {255, 255, 255, 253, 253, 253, 251, 251, 251, 249, 249, 249, 247, 247, 247, 245, 245, 245, 243, 243, 243, 241, 241, 241, 239, 239, 239, 237, 237, 237, 235, 235, 235, 233, 233, 233, 231, 231, 231, 229, 229, 229, 227, 227, 227, 225, 225, 225, 223, 223, 223, 221, 221, 221, 219, 219, 219, 217, 217, 217, 215, 215, 215, 213, 213, 213, 211, 211, 211, 209, 209, 209, 207, 207, 207, 205, 205, 205, 203, 203, 203, 201, 201, 201, 199, 199, 199, 197, 197, 197, 195, 195, 195, 193, 193, 193, 191, 191, 191, 189, 189, 189, 187, 187, 187, 185, 185, 185, 183, 183, 183, 181, 181, 181, 179, 179, 179, 177, 177, 177, 175, 175, 175, 173, 173, 173, 171, 171, 171, 169, 169, 169, 167, 167, 167, 165, 165, 165, 163, 163, 163, 161, 161, 161, 159, 159, 159, 157, 157, 157, 155, 155, 155, 153, 153, 153, 151, 151, 151, 149, 149, 149, 147, 147, 147, 145, 145, 145, 143, 143, 143, 141, 141, 141, 139, 139, 139, 137, 137, 137, 135, 135, 135, 133, 133, 133, 131, 131, 131, 129, 129, 129, 126, 126, 126, 124, 124, 124, 122, 122, 122, 120, 120, 120, 118, 118, 118, 116, 116, 116, 114, 114, 114, 112, 112, 112, 110, 110, 110, 108, 108, 108, 106, 106, 106, 104, 104, 104, 102, 102, 102, 100, 100, 100, 98, 98, 98, 96, 96, 96, 94, 94, 94, 92, 92, 92, 90, 90, 90, 88, 88, 88, 86, 86, 86, 84, 84, 84, 82, 82, 82, 80, 80, 80, 78, 78, 78, 76, 76, 76, 74, 74, 74, 72, 72, 72, 70, 70, 70, 68, 68, 68, 66, 66, 66, 64, 64, 64, 62, 62, 62, 60, 60, 60, 58, 58, 58, 56, 56, 56, 54, 54, 54, 52, 52, 52, 50, 50, 50, 48, 48, 48, 46, 46, 46, 44, 44, 44, 42, 42, 42, 40, 40, 40, 38, 38, 38, 36, 36, 36, 34, 34, 34, 32, 32, 32, 30, 30, 30, 28, 28, 28, 26, 26, 26, 24, 24, 24, 22, 22, 22, 20, 20, 20, 18, 18, 18, 16, 16, 16, 14, 14, 14, 12, 12, 12, 10, 10, 10, 8, 8, 8, 6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 0, 0, 9, 2, 0, 16, 4, 0, 24, 6, 0, 31, 8, 0, 38, 10, 0, 45, 12, 0, 53, 14, 0, 60, 17, 0, 67, 19, 0, 74, 21, 0, 82, 23, 0, 89, 25, 0, 96, 27, 0, 103, 29, 0, 111, 31, 0, 118, 36, 0, 120, 41, 0, 121, 46, 0, 122, 51, 0, 123, 56, 0, 124, 61, 0, 125, 66, 0, 126, 71, 0, 127, 76, 1, 128, 81, 1, 129, 86, 1, 130, 91, 1, 131, 96, 1, 132, 101, 1, 133, 106, 1, 134, 111, 1, 135, 116, 1, 136, 121, 1, 136, 125, 2, 137, 130, 2, 137, 135, 3, 137, 139, 3, 138, 144, 3, 138, 149, 4, 138, 153, 4, 139, 158, 5, 139, 163, 5, 139, 167, 5, 140, 172, 6, 140, 177, 6, 140, 181, 7, 141, 186, 7, 141, 189, 10, 137, 191, 13, 132, 194, 16, 127, 196, 19, 121, 198, 22, 116, 200, 25, 111, 203, 28, 106, 205, 31, 101, 207, 34, 95, 209, 37, 90, 212, 40, 85, 214, 43, 80, 216, 46, 75, 218, 49, 69, 221, 52, 64, 223, 55, 59, 224, 57, 49, 225, 60, 47, 226, 64, 44, 227, 67, 42, 228, 71, 39, 229, 74, 37, 230, 78, 34, 231, 81, 32, 231, 85, 29, 232, 88, 27, 233, 92, 24, 234, 95, 22, 235, 99, 19, 236, 102, 17, 237, 106, 14, 238, 109, 12, 239, 112, 12, 240, 116, 12, 240, 119, 12, 241, 123, 12, 241, 127, 12, 242, 130, 12, 242, 134, 12, 243, 138, 12, 243, 141, 13, 244, 145, 13, 244, 149, 13, 245, 152, 13, 245, 156, 13, 246, 160, 13, 246, 163, 13, 247, 167, 13, 247, 171, 13, 248, 175, 14, 248, 178, 15, 249, 182, 16, 249, 185, 18, 250, 189, 19, 250, 192, 20, 251, 196, 21, 251, 199, 22, 252, 203, 23, 252, 206, 24, 253, 210, 25, 253, 213, 27, 254, 217, 28, 254, 220, 29, 255, 224, 30, 255, 227, 39, 255, 229, 53, 255, 231, 67, 255, 233, 81, 255, 234, 95, 255, 236, 109, 255, 238, 123, 255, 240, 137, 255, 242, 151, 255, 244, 165, 255, 246, 179, 255, 248, 193, 255, 249, 207, 255, 251, 221, 255, 253, 235, 255, 255, 24}; |
gia95 | 0:417d4512faec | 69 | |
gia95 | 0:417d4512faec | 70 | // Prototipi |
gia95 | 0:417d4512faec | 71 | static void print_image_binary_background(void); |
gia95 | 0:417d4512faec | 72 | void transfer(void); |
gia95 | 0:417d4512faec | 73 | void SettaPixel(float value, int k,int s,float div,float minValue,float maxValue); |
gia95 | 0:417d4512faec | 74 | void draw_colorbar(void); |
gia95 | 0:417d4512faec | 75 | void Scale(float div,float min); |
gia95 | 0:417d4512faec | 76 | void push_button(void); |
gia95 | 0:417d4512faec | 77 | void data_save(uint16_t lepton_image [60][80]); |
gia95 | 0:417d4512faec | 78 | void matrix_save(uint8_t matrix [60][240],uint8_t value, int y, int k); |
gia95 | 0:417d4512faec | 79 | void save_SD(uint8_t matrix[60][240]); |
gia95 | 0:417d4512faec | 80 | void calcola(void); |
gia95 | 0:417d4512faec | 81 | void Colormap(float value, float div); |
gia95 | 0:417d4512faec | 82 | |
gia95 | 0:417d4512faec | 83 | |
gia95 | 0:417d4512faec | 84 | int main() |
gia95 | 0:417d4512faec | 85 | { |
gia95 | 0:417d4512faec | 86 | tft.set_orientation(orient); |
gia95 | 0:417d4512faec | 87 | bt.baud(115200); |
gia95 | 0:417d4512faec | 88 | lepton_spi.format(8,3); |
gia95 | 0:417d4512faec | 89 | lepton_spi.frequency(20000000); //20MHz |
gia95 | 0:417d4512faec | 90 | spi_cs = 1; |
gia95 | 0:417d4512faec | 91 | spi_cs = 0; |
gia95 | 0:417d4512faec | 92 | spi_cs = 1; |
gia95 | 0:417d4512faec | 93 | wait_ms(185); |
gia95 | 0:417d4512faec | 94 | draw_colorbar(); |
gia95 | 0:417d4512faec | 95 | |
gia95 | 0:417d4512faec | 96 | while(1) { |
gia95 | 0:417d4512faec | 97 | spi_cs = 1; |
gia95 | 0:417d4512faec | 98 | spi_cs = 0; |
gia95 | 0:417d4512faec | 99 | spi_cs = 1; |
gia95 | 0:417d4512faec | 100 | |
gia95 | 0:417d4512faec | 101 | while(save==1) { |
gia95 | 0:417d4512faec | 102 | button.fall(&push_button); |
gia95 | 0:417d4512faec | 103 | } |
gia95 | 0:417d4512faec | 104 | |
gia95 | 0:417d4512faec | 105 | |
gia95 | 0:417d4512faec | 106 | |
gia95 | 0:417d4512faec | 107 | while(stop==0) { |
gia95 | 0:417d4512faec | 108 | |
gia95 | 0:417d4512faec | 109 | transfer(); // Recupero riga per riga l'immagine dalla LEPTON |
gia95 | 0:417d4512faec | 110 | |
gia95 | 0:417d4512faec | 111 | } |
gia95 | 0:417d4512faec | 112 | |
gia95 | 0:417d4512faec | 113 | stop=0; |
gia95 | 0:417d4512faec | 114 | spi_cs = 1; |
gia95 | 0:417d4512faec | 115 | spi_cs = 0; |
gia95 | 0:417d4512faec | 116 | spi_cs = 1; |
gia95 | 0:417d4512faec | 117 | //pc.printf("Fine1"); |
gia95 | 0:417d4512faec | 118 | // Converto l'immagine in temperatura (°C) |
gia95 | 0:417d4512faec | 119 | for (int y =0; y < 60; y++) { |
gia95 | 0:417d4512faec | 120 | for (int x = 0; x < 80; x++) { |
gia95 | 0:417d4512faec | 121 | float v=lepton_image[y][x]/100; |
gia95 | 0:417d4512faec | 122 | T_image[y][x]=floor(v); |
gia95 | 0:417d4512faec | 123 | T_image[y][x]=T_image[y][x]-273; |
gia95 | 0:417d4512faec | 124 | } |
gia95 | 0:417d4512faec | 125 | } |
gia95 | 0:417d4512faec | 126 | |
gia95 | 0:417d4512faec | 127 | minValue = 65535; |
gia95 | 0:417d4512faec | 128 | maxValue = 0; |
gia95 | 0:417d4512faec | 129 | |
gia95 | 0:417d4512faec | 130 | // Ricerca MAX e MIN nell'immagine |
gia95 | 0:417d4512faec | 131 | for (int y =0; y < 60; y++) { |
gia95 | 0:417d4512faec | 132 | for (int x = 0; x < 80; x++) { |
gia95 | 0:417d4512faec | 133 | if (T_image[y][x] > maxValue) { |
gia95 | 0:417d4512faec | 134 | maxValue = T_image[y][x]; |
gia95 | 0:417d4512faec | 135 | } |
gia95 | 0:417d4512faec | 136 | if (T_image[y][x] < minValue) { |
gia95 | 0:417d4512faec | 137 | minValue = T_image[y][x]; |
gia95 | 0:417d4512faec | 138 | } |
gia95 | 0:417d4512faec | 139 | } |
gia95 | 0:417d4512faec | 140 | } |
gia95 | 0:417d4512faec | 141 | |
gia95 | 0:417d4512faec | 142 | if(maxValue<(80+max_p)) { |
gia95 | 0:417d4512faec | 143 | |
gia95 | 0:417d4512faec | 144 | max_p=maxValue; |
gia95 | 0:417d4512faec | 145 | //bt.putc(minValue); |
gia95 | 0:417d4512faec | 146 | //bt.putc(maxValue); |
gia95 | 0:417d4512faec | 147 | float v; // delta discretizzazione dei colori |
gia95 | 0:417d4512faec | 148 | v=(maxValue-minValue)/120; |
gia95 | 0:417d4512faec | 149 | //wait_ms(50); |
gia95 | 0:417d4512faec | 150 | |
gia95 | 0:417d4512faec | 151 | wait_ms(2); |
gia95 | 0:417d4512faec | 152 | // Scrive l'immagine sul display a blocchi di 3x3 |
gia95 | 0:417d4512faec | 153 | tft.set_orientation(orient); |
gia95 | 0:417d4512faec | 154 | tft.FastWindow(true); |
gia95 | 0:417d4512faec | 155 | for (int m=0; m<177; m=m+3) { |
gia95 | 0:417d4512faec | 156 | for (int n=0; n<237; n=n+3) { |
gia95 | 0:417d4512faec | 157 | m1=1.0/3*m; |
gia95 | 0:417d4512faec | 158 | n1=1.0/3*n; |
gia95 | 0:417d4512faec | 159 | x1=m1; |
gia95 | 0:417d4512faec | 160 | x2=m1+1; |
gia95 | 0:417d4512faec | 161 | y1=n1; |
gia95 | 0:417d4512faec | 162 | y2=n1+1; |
gia95 | 0:417d4512faec | 163 | calcola(); |
gia95 | 0:417d4512faec | 164 | |
gia95 | 0:417d4512faec | 165 | for(int i=m; i<m+3; i++) { |
gia95 | 0:417d4512faec | 166 | for(int j=n; j<n+3; j++) { |
gia95 | 0:417d4512faec | 167 | Out=a0+a1*m1+a2*n1+a3*m1*n1; |
gia95 | 0:417d4512faec | 168 | SettaPixel(Out,i,237-j,v,minValue,maxValue); |
gia95 | 0:417d4512faec | 169 | m1=m1+1.0/3; |
gia95 | 0:417d4512faec | 170 | } |
gia95 | 0:417d4512faec | 171 | m1=1.0/3*m; |
gia95 | 0:417d4512faec | 172 | n1=n1+1.0/3; |
gia95 | 0:417d4512faec | 173 | } |
gia95 | 0:417d4512faec | 174 | |
gia95 | 0:417d4512faec | 175 | } |
gia95 | 0:417d4512faec | 176 | } |
gia95 | 0:417d4512faec | 177 | tft.FastWindow(false); |
gia95 | 0:417d4512faec | 178 | |
gia95 | 0:417d4512faec | 179 | |
gia95 | 0:417d4512faec | 180 | Scale(v,minValue); |
gia95 | 0:417d4512faec | 181 | |
gia95 | 0:417d4512faec | 182 | |
gia95 | 0:417d4512faec | 183 | |
gia95 | 0:417d4512faec | 184 | print_image_binary_background(); |
gia95 | 0:417d4512faec | 185 | bt.printf("\n\r"); |
gia95 | 0:417d4512faec | 186 | //bt.printf("ok"); |
gia95 | 0:417d4512faec | 187 | data_save(lepton_image); |
gia95 | 0:417d4512faec | 188 | save_SD(matrix); |
gia95 | 0:417d4512faec | 189 | save=1; |
gia95 | 0:417d4512faec | 190 | |
gia95 | 0:417d4512faec | 191 | } |
gia95 | 0:417d4512faec | 192 | // bt.printf("Fine"); |
gia95 | 0:417d4512faec | 193 | //} |
gia95 | 0:417d4512faec | 194 | else { |
gia95 | 0:417d4512faec | 195 | save=1; |
gia95 | 0:417d4512faec | 196 | //lepton_spi.format(8,3); |
gia95 | 0:417d4512faec | 197 | //lepton_spi.frequency(20000000); //20MHz |
gia95 | 0:417d4512faec | 198 | //spi_cs = 1; |
gia95 | 0:417d4512faec | 199 | // spi_cs = 0; |
gia95 | 0:417d4512faec | 200 | //spi_cs = 1; |
gia95 | 0:417d4512faec | 201 | //wait_ms(800); |
gia95 | 0:417d4512faec | 202 | } |
gia95 | 0:417d4512faec | 203 | |
gia95 | 0:417d4512faec | 204 | |
gia95 | 0:417d4512faec | 205 | } |
gia95 | 0:417d4512faec | 206 | |
gia95 | 0:417d4512faec | 207 | } |
gia95 | 0:417d4512faec | 208 | |
gia95 | 0:417d4512faec | 209 | // **************** Implementazione funzioni ****************** |
gia95 | 0:417d4512faec | 210 | |
gia95 | 0:417d4512faec | 211 | // Download tramite SPI di una riga dell'immagine dalla LEPTON al Micro |
gia95 | 0:417d4512faec | 212 | void transfer(void) |
gia95 | 0:417d4512faec | 213 | { |
gia95 | 0:417d4512faec | 214 | int i; |
gia95 | 0:417d4512faec | 215 | int frame_number; |
gia95 | 0:417d4512faec | 216 | |
gia95 | 0:417d4512faec | 217 | spi_cs = 0; |
gia95 | 0:417d4512faec | 218 | // Download dati RAW |
gia95 | 0:417d4512faec | 219 | for(i=0; i<VOSPI_FRAME_SIZE; i++) { |
gia95 | 0:417d4512faec | 220 | lepton_frame_packet[i] = lepton_spi.write(0x00); |
gia95 | 0:417d4512faec | 221 | } |
gia95 | 0:417d4512faec | 222 | spi_cs = 1; |
gia95 | 0:417d4512faec | 223 | if(((lepton_frame_packet[0]&0xf) != 0x0f)) { |
gia95 | 0:417d4512faec | 224 | if(lepton_frame_packet[1] == 0 ) { |
gia95 | 0:417d4512faec | 225 | if(last_crc != (lepton_frame_packet[3]<<8 | lepton_frame_packet[4])) { |
gia95 | 0:417d4512faec | 226 | new_frame = 1; |
gia95 | 0:417d4512faec | 227 | } |
gia95 | 0:417d4512faec | 228 | last_crc = lepton_frame_packet[3]<<8 | lepton_frame_packet[4]; |
gia95 | 0:417d4512faec | 229 | } |
gia95 | 0:417d4512faec | 230 | frame_number = lepton_frame_packet[1]; |
gia95 | 0:417d4512faec | 231 | // Conversione dati RAW in matrice |
gia95 | 0:417d4512faec | 232 | if(frame_number < 60 ) { |
gia95 | 0:417d4512faec | 233 | lost_frame_counter = 0; |
gia95 | 0:417d4512faec | 234 | if(print_image_binary_state == -1) { |
gia95 | 0:417d4512faec | 235 | for(i=0; i<80; i++) { |
gia95 | 0:417d4512faec | 236 | lepton_image[frame_number][i] = (lepton_frame_packet[2*i+4] << 8 | lepton_frame_packet[2*i+5]); |
gia95 | 0:417d4512faec | 237 | } |
gia95 | 0:417d4512faec | 238 | } |
gia95 | 0:417d4512faec | 239 | } else { |
gia95 | 0:417d4512faec | 240 | lost_frame_counter++; |
gia95 | 0:417d4512faec | 241 | } |
gia95 | 0:417d4512faec | 242 | if( frame_number == 59) { |
gia95 | 0:417d4512faec | 243 | frame_complete = 1; |
gia95 | 0:417d4512faec | 244 | last_frame_number = 0; |
gia95 | 0:417d4512faec | 245 | } |
gia95 | 0:417d4512faec | 246 | } else { |
gia95 | 0:417d4512faec | 247 | if(last_frame_number ==0) { |
gia95 | 0:417d4512faec | 248 | } |
gia95 | 0:417d4512faec | 249 | } |
gia95 | 0:417d4512faec | 250 | lost_frame_counter++; |
gia95 | 0:417d4512faec | 251 | if(lost_frame_counter>100) { |
gia95 | 0:417d4512faec | 252 | need_resync = 1; |
gia95 | 0:417d4512faec | 253 | lost_frame_counter = 0; |
gia95 | 0:417d4512faec | 254 | } |
gia95 | 0:417d4512faec | 255 | if(need_resync) { |
gia95 | 0:417d4512faec | 256 | wait_ms(185); |
gia95 | 0:417d4512faec | 257 | need_resync = 0; |
gia95 | 0:417d4512faec | 258 | } |
gia95 | 0:417d4512faec | 259 | if(frame_complete) { |
gia95 | 0:417d4512faec | 260 | if(new_frame) { |
gia95 | 0:417d4512faec | 261 | frame_counter++; |
gia95 | 0:417d4512faec | 262 | { |
gia95 | 0:417d4512faec | 263 | |
gia95 | 0:417d4512faec | 264 | if(frame_counter%1 ==0) { |
gia95 | 0:417d4512faec | 265 | print_image_binary_state = -1; |
gia95 | 0:417d4512faec | 266 | stop=1; |
gia95 | 0:417d4512faec | 267 | } |
gia95 | 0:417d4512faec | 268 | } |
gia95 | 0:417d4512faec | 269 | new_frame = 0; |
gia95 | 0:417d4512faec | 270 | } |
gia95 | 0:417d4512faec | 271 | frame_complete = 0; |
gia95 | 0:417d4512faec | 272 | } |
gia95 | 0:417d4512faec | 273 | } |
gia95 | 0:417d4512faec | 274 | |
gia95 | 0:417d4512faec | 275 | // Utile per inviare l'immagine tramite UART o BLE |
gia95 | 0:417d4512faec | 276 | static void print_image_binary_background(void) |
gia95 | 0:417d4512faec | 277 | { |
gia95 | 0:417d4512faec | 278 | print_image_binary_i=0; |
gia95 | 0:417d4512faec | 279 | print_image_binary_j=0; |
gia95 | 0:417d4512faec | 280 | while(print_image_binary_i!=60) { |
gia95 | 0:417d4512faec | 281 | while(bt.writeable() == 0); |
gia95 | 0:417d4512faec | 282 | bt.putc((lepton_image[print_image_binary_i][print_image_binary_j]>>8)&0xff); |
gia95 | 0:417d4512faec | 283 | while(bt.writeable() == 0); |
gia95 | 0:417d4512faec | 284 | bt.putc(lepton_image[print_image_binary_i][print_image_binary_j]&0xff); |
gia95 | 0:417d4512faec | 285 | print_image_binary_j++; |
gia95 | 0:417d4512faec | 286 | if(print_image_binary_j>=80) { |
gia95 | 0:417d4512faec | 287 | print_image_binary_j=0; |
gia95 | 0:417d4512faec | 288 | print_image_binary_i++; |
gia95 | 0:417d4512faec | 289 | if(print_image_binary_i>=60) { |
gia95 | 0:417d4512faec | 290 | print_image_binary_state = -1; |
gia95 | 0:417d4512faec | 291 | //pc.printf("fine..."); |
gia95 | 0:417d4512faec | 292 | //spi_cs=1; |
gia95 | 0:417d4512faec | 293 | //stop=1; |
gia95 | 0:417d4512faec | 294 | } |
gia95 | 0:417d4512faec | 295 | } |
gia95 | 0:417d4512faec | 296 | //stop=0; // Da eliminare se si riattiva il while |
gia95 | 0:417d4512faec | 297 | } |
gia95 | 0:417d4512faec | 298 | } |
gia95 | 0:417d4512faec | 299 | |
gia95 | 0:417d4512faec | 300 | // Conversione da grey a color e settaggio di un pixel |
gia95 | 0:417d4512faec | 301 | void SettaPixel(float value, int k,int s,float div,float minValue,float maxValue) |
gia95 | 0:417d4512faec | 302 | { |
gia95 | 0:417d4512faec | 303 | |
gia95 | 0:417d4512faec | 304 | |
gia95 | 0:417d4512faec | 305 | |
gia95 | 0:417d4512faec | 306 | if( value<=1*div+minValue ) { |
gia95 | 0:417d4512faec | 307 | tft.pixel(k,s,color1); |
gia95 | 0:417d4512faec | 308 | } else if(value>(1*div+minValue) & value<=2*div+minValue ) { |
gia95 | 0:417d4512faec | 309 | tft.pixel(k,s,color2); |
gia95 | 0:417d4512faec | 310 | } else if(value>(2*div+minValue) & value<=3*div+minValue ) { |
gia95 | 0:417d4512faec | 311 | tft.pixel(k,s,color3); |
gia95 | 0:417d4512faec | 312 | } else if(value>(3*div+minValue) & value<=4*div+minValue ) { |
gia95 | 0:417d4512faec | 313 | tft.pixel(k,s,color4); |
gia95 | 0:417d4512faec | 314 | } else if(value>(4*div+minValue) & value<=5*div+minValue ) { |
gia95 | 0:417d4512faec | 315 | tft.pixel(k,s,color5); |
gia95 | 0:417d4512faec | 316 | } else if(value>(5*div+minValue) & value<=6*div+minValue ) { |
gia95 | 0:417d4512faec | 317 | tft.pixel(k,s,color6); |
gia95 | 0:417d4512faec | 318 | } else if(value>(6*div+minValue) & value<=7*div+minValue ) { |
gia95 | 0:417d4512faec | 319 | tft.pixel(k,s,color7); |
gia95 | 0:417d4512faec | 320 | } else if(value>(7*div+minValue) & value<=8*div+minValue ) { |
gia95 | 0:417d4512faec | 321 | tft.pixel(k,s,color8); |
gia95 | 0:417d4512faec | 322 | } else if(value>(8*div+minValue) & value<=9*div+minValue ) { |
gia95 | 0:417d4512faec | 323 | tft.pixel(k,s,color9); |
gia95 | 0:417d4512faec | 324 | } else if(value>(9*div+minValue) & value<=10*div+minValue ) { |
gia95 | 0:417d4512faec | 325 | tft.pixel(k,s,color10); |
gia95 | 0:417d4512faec | 326 | } else if(value>(10*div+minValue) & value<=11*div+minValue ) { |
gia95 | 0:417d4512faec | 327 | tft.pixel(k,s,color11); |
gia95 | 0:417d4512faec | 328 | } else if(value>(11*div+minValue) & value<=12*div+minValue ) { |
gia95 | 0:417d4512faec | 329 | tft.pixel(k,s,color12); |
gia95 | 0:417d4512faec | 330 | } else if(value>(12*div+minValue) & value<=13*div+minValue ) { |
gia95 | 0:417d4512faec | 331 | tft.pixel(k,s,color13); |
gia95 | 0:417d4512faec | 332 | } else if(value>(13*div+minValue) & value<=14*div+minValue ) { |
gia95 | 0:417d4512faec | 333 | tft.pixel(k,s,color14); |
gia95 | 0:417d4512faec | 334 | } else if(value>(14*div+minValue) & value<=15*div+minValue ) { |
gia95 | 0:417d4512faec | 335 | tft.pixel(k,s,color15); |
gia95 | 0:417d4512faec | 336 | } else if(value>(15*div+minValue) & value<=16*div+minValue ) { |
gia95 | 0:417d4512faec | 337 | tft.pixel(k,s,color16); |
gia95 | 0:417d4512faec | 338 | } else if(value>(16*div+minValue) & value<=17*div+minValue ) { |
gia95 | 0:417d4512faec | 339 | tft.pixel(k,s,color17); |
gia95 | 0:417d4512faec | 340 | } else if(value>(17*div+minValue) & value<=18*div+minValue ) { |
gia95 | 0:417d4512faec | 341 | tft.pixel(k,s,color18); |
gia95 | 0:417d4512faec | 342 | } else if(value>(18*div+minValue) & value<=19*div+minValue ) { |
gia95 | 0:417d4512faec | 343 | tft.pixel(k,s,color19); |
gia95 | 0:417d4512faec | 344 | } else if(value>(19*div+minValue) & value<=20*div+minValue ) { |
gia95 | 0:417d4512faec | 345 | tft.pixel(k,s,color20); |
gia95 | 0:417d4512faec | 346 | } else if(value>(20*div+minValue) & value<=21*div+minValue ) { |
gia95 | 0:417d4512faec | 347 | tft.pixel(k,s,color21); |
gia95 | 0:417d4512faec | 348 | } else if(value>(21*div+minValue) & value<=22*div+minValue ) { |
gia95 | 0:417d4512faec | 349 | tft.pixel(k,s,color22); |
gia95 | 0:417d4512faec | 350 | } else if(value>(22*div+minValue) & value<=23*div+minValue ) { |
gia95 | 0:417d4512faec | 351 | tft.pixel(k,s,color23); |
gia95 | 0:417d4512faec | 352 | } else if(value>(23*div+minValue) & value<=24*div+minValue ) { |
gia95 | 0:417d4512faec | 353 | tft.pixel(k,s,color24); |
gia95 | 0:417d4512faec | 354 | } else if(value>(24*div+minValue) & value<=25*div+minValue ) { |
gia95 | 0:417d4512faec | 355 | tft.pixel(k,s,color25); |
gia95 | 0:417d4512faec | 356 | } else if(value>(25*div+minValue) & value<=26*div+minValue ) { |
gia95 | 0:417d4512faec | 357 | tft.pixel(k,s,color26); |
gia95 | 0:417d4512faec | 358 | } else if(value>(26*div+minValue) & value<=27*div+minValue ) { |
gia95 | 0:417d4512faec | 359 | tft.pixel(k,s,color27); |
gia95 | 0:417d4512faec | 360 | } else if(value>(27*div+minValue) & value<=28*div+minValue ) { |
gia95 | 0:417d4512faec | 361 | tft.pixel(k,s,color28); |
gia95 | 0:417d4512faec | 362 | } else if(value>(28*div+minValue) & value<=29*div+minValue ) { |
gia95 | 0:417d4512faec | 363 | tft.pixel(k,s,color29); |
gia95 | 0:417d4512faec | 364 | } else if(value>(29*div+minValue) & value<=30*div+minValue ) { |
gia95 | 0:417d4512faec | 365 | tft.pixel(k,s,color30); |
gia95 | 0:417d4512faec | 366 | } else if(value>(30*div+minValue) & value<=31*div+minValue ) { |
gia95 | 0:417d4512faec | 367 | tft.pixel(k,s,color31); |
gia95 | 0:417d4512faec | 368 | } else if(value>(31*div+minValue) & value<=32*div+minValue ) { |
gia95 | 0:417d4512faec | 369 | tft.pixel(k,s,color32); |
gia95 | 0:417d4512faec | 370 | } else if(value>(32*div+minValue) & value<=33*div+minValue ) { |
gia95 | 0:417d4512faec | 371 | tft.pixel(k,s,color33); |
gia95 | 0:417d4512faec | 372 | } else if(value>(33*div+minValue) & value<=34*div+minValue ) { |
gia95 | 0:417d4512faec | 373 | tft.pixel(k,s,color34); |
gia95 | 0:417d4512faec | 374 | } else if(value>(34*div+minValue) & value<=35*div+minValue ) { |
gia95 | 0:417d4512faec | 375 | tft.pixel(k,s,color35); |
gia95 | 0:417d4512faec | 376 | } else if(value>(35*div+minValue) & value<=36*div+minValue ) { |
gia95 | 0:417d4512faec | 377 | tft.pixel(k,s,color36); |
gia95 | 0:417d4512faec | 378 | } else if(value>(36*div+minValue) & value<=37*div+minValue ) { |
gia95 | 0:417d4512faec | 379 | tft.pixel(k,s,color37); |
gia95 | 0:417d4512faec | 380 | } else if(value>(37*div+minValue) & value<=38*div+minValue ) { |
gia95 | 0:417d4512faec | 381 | tft.pixel(k,s,color38); |
gia95 | 0:417d4512faec | 382 | } else if(value>(38*div+minValue) & value<=39*div+minValue ) { |
gia95 | 0:417d4512faec | 383 | tft.pixel(k,s,color39); |
gia95 | 0:417d4512faec | 384 | } else if(value>(39*div+minValue) & value<=40*div+minValue ) { |
gia95 | 0:417d4512faec | 385 | tft.pixel(k,s,color40); |
gia95 | 0:417d4512faec | 386 | } else if(value>(40*div+minValue) & value<=41*div+minValue ) { |
gia95 | 0:417d4512faec | 387 | tft.pixel(k,s,color41); |
gia95 | 0:417d4512faec | 388 | } else if(value>(41*div+minValue) & value<=42*div+minValue ) { |
gia95 | 0:417d4512faec | 389 | tft.pixel(k,s,color42); |
gia95 | 0:417d4512faec | 390 | } else if(value>(42*div+minValue) & value<=43*div+minValue ) { |
gia95 | 0:417d4512faec | 391 | tft.pixel(k,s,color43); |
gia95 | 0:417d4512faec | 392 | } else if(value>(43*div+minValue) & value<=44*div+minValue ) { |
gia95 | 0:417d4512faec | 393 | tft.pixel(k,s,color44); |
gia95 | 0:417d4512faec | 394 | } else if(value>(44*div+minValue) & value<=45*div+minValue ) { |
gia95 | 0:417d4512faec | 395 | tft.pixel(k,s,color45); |
gia95 | 0:417d4512faec | 396 | } else if(value>(45*div+minValue) & value<=46*div+minValue ) { |
gia95 | 0:417d4512faec | 397 | tft.pixel(k,s,color46); |
gia95 | 0:417d4512faec | 398 | } else if(value>(46*div+minValue) & value<=47*div+minValue ) { |
gia95 | 0:417d4512faec | 399 | tft.pixel(k,s,color47); |
gia95 | 0:417d4512faec | 400 | } else if(value>(47*div+minValue) & value<=48*div+minValue ) { |
gia95 | 0:417d4512faec | 401 | tft.pixel(k,s,color48); |
gia95 | 0:417d4512faec | 402 | } else if(value>(48*div+minValue) & value<=49*div+minValue ) { |
gia95 | 0:417d4512faec | 403 | tft.pixel(k,s,color49); |
gia95 | 0:417d4512faec | 404 | } else if(value>(49*div+minValue) & value<=50*div+minValue ) { |
gia95 | 0:417d4512faec | 405 | tft.pixel(k,s,color50); |
gia95 | 0:417d4512faec | 406 | } else if(value>(50*div+minValue) & value<=51*div+minValue ) { |
gia95 | 0:417d4512faec | 407 | tft.pixel(k,s,color51); |
gia95 | 0:417d4512faec | 408 | } else if(value>(51*div+minValue) & value<=52*div+minValue ) { |
gia95 | 0:417d4512faec | 409 | tft.pixel(k,s,color52); |
gia95 | 0:417d4512faec | 410 | } else if(value>(52*div+minValue) & value<=53*div+minValue ) { |
gia95 | 0:417d4512faec | 411 | tft.pixel(k,s,color53); |
gia95 | 0:417d4512faec | 412 | } else if(value>(53*div+minValue) & value<=54*div+minValue ) { |
gia95 | 0:417d4512faec | 413 | tft.pixel(k,s,color54); |
gia95 | 0:417d4512faec | 414 | } else if(value>(54*div+minValue) & value<=55*div+minValue ) { |
gia95 | 0:417d4512faec | 415 | tft.pixel(k,s,color55); |
gia95 | 0:417d4512faec | 416 | } else if(value>(55*div+minValue) & value<=56*div+minValue ) { |
gia95 | 0:417d4512faec | 417 | tft.pixel(k,s,color56); |
gia95 | 0:417d4512faec | 418 | } else if(value>(56*div+minValue) & value<=57*div+minValue ) { |
gia95 | 0:417d4512faec | 419 | tft.pixel(k,s,color57); |
gia95 | 0:417d4512faec | 420 | } else if(value>(57*div+minValue) & value<=58*div+minValue ) { |
gia95 | 0:417d4512faec | 421 | tft.pixel(k,s,color58); |
gia95 | 0:417d4512faec | 422 | } else if(value>(58*div+minValue) & value<=59*div+minValue ) { |
gia95 | 0:417d4512faec | 423 | tft.pixel(k,s,color59); |
gia95 | 0:417d4512faec | 424 | } else if(value>(59*div+minValue) & value<=60*div+minValue ) { |
gia95 | 0:417d4512faec | 425 | tft.pixel(k,s,color60); |
gia95 | 0:417d4512faec | 426 | } else if(value>(60*div+minValue) & value<=61*div+minValue ) { |
gia95 | 0:417d4512faec | 427 | tft.pixel(k,s,color61); |
gia95 | 0:417d4512faec | 428 | } else if(value>(61*div+minValue) & value<=62*div+minValue ) { |
gia95 | 0:417d4512faec | 429 | tft.pixel(k,s,color62); |
gia95 | 0:417d4512faec | 430 | } else if(value>(62*div+minValue) & value<=63*div+minValue ) { |
gia95 | 0:417d4512faec | 431 | tft.pixel(k,s,color63); |
gia95 | 0:417d4512faec | 432 | } else if(value>(63*div+minValue) & value<=64*div+minValue ) { |
gia95 | 0:417d4512faec | 433 | tft.pixel(k,s,color64); |
gia95 | 0:417d4512faec | 434 | } else if(value>(64*div+minValue) & value<=65*div+minValue ) { |
gia95 | 0:417d4512faec | 435 | tft.pixel(k,s,color65); |
gia95 | 0:417d4512faec | 436 | } else if(value>(65*div+minValue) & value<=66*div+minValue ) { |
gia95 | 0:417d4512faec | 437 | tft.pixel(k,s,color66); |
gia95 | 0:417d4512faec | 438 | } else if(value>(66*div+minValue) & value<=67*div+minValue ) { |
gia95 | 0:417d4512faec | 439 | tft.pixel(k,s,color67); |
gia95 | 0:417d4512faec | 440 | } else if(value>(67*div+minValue) & value<=68*div+minValue ) { |
gia95 | 0:417d4512faec | 441 | tft.pixel(k,s,color68); |
gia95 | 0:417d4512faec | 442 | } else if(value>(68*div+minValue) & value<=69*div+minValue ) { |
gia95 | 0:417d4512faec | 443 | tft.pixel(k,s,color69); |
gia95 | 0:417d4512faec | 444 | } else if(value>(69*div+minValue) & value<=70*div+minValue ) { |
gia95 | 0:417d4512faec | 445 | tft.pixel(k,s,color70); |
gia95 | 0:417d4512faec | 446 | } else if(value>(70*div+minValue) & value<=71*div+minValue ) { |
gia95 | 0:417d4512faec | 447 | tft.pixel(k,s,color71); |
gia95 | 0:417d4512faec | 448 | } else if(value>(71*div+minValue) & value<=72*div+minValue ) { |
gia95 | 0:417d4512faec | 449 | tft.pixel(k,s,color72); |
gia95 | 0:417d4512faec | 450 | } else if(value>(72*div+minValue) & value<=73*div+minValue ) { |
gia95 | 0:417d4512faec | 451 | tft.pixel(k,s,color73); |
gia95 | 0:417d4512faec | 452 | } else if(value>(73*div+minValue) & value<=74*div+minValue ) { |
gia95 | 0:417d4512faec | 453 | tft.pixel(k,s,color74); |
gia95 | 0:417d4512faec | 454 | } else if(value>(74*div+minValue) & value<=75*div+minValue ) { |
gia95 | 0:417d4512faec | 455 | tft.pixel(k,s,color75); |
gia95 | 0:417d4512faec | 456 | } else if(value>(75*div+minValue) & value<=76*div+minValue ) { |
gia95 | 0:417d4512faec | 457 | tft.pixel(k,s,color76); |
gia95 | 0:417d4512faec | 458 | } else if(value>(76*div+minValue) & value<=77*div+minValue ) { |
gia95 | 0:417d4512faec | 459 | tft.pixel(k,s,color77); |
gia95 | 0:417d4512faec | 460 | } else if(value>(77*div+minValue) & value<=78*div+minValue ) { |
gia95 | 0:417d4512faec | 461 | tft.pixel(k,s,color78); |
gia95 | 0:417d4512faec | 462 | } else if(value>(78*div+minValue) & value<=79*div+minValue ) { |
gia95 | 0:417d4512faec | 463 | tft.pixel(k,s,color79); |
gia95 | 0:417d4512faec | 464 | } else if(value>(79*div+minValue) & value<=80*div+minValue ) { |
gia95 | 0:417d4512faec | 465 | tft.pixel(k,s,color80); |
gia95 | 0:417d4512faec | 466 | } else if(value>(80*div+minValue) & value<=81*div+minValue ) { |
gia95 | 0:417d4512faec | 467 | tft.pixel(k,s,color81); |
gia95 | 0:417d4512faec | 468 | } else if(value>(81*div+minValue) & value<=82*div+minValue ) { |
gia95 | 0:417d4512faec | 469 | tft.pixel(k,s,color82); |
gia95 | 0:417d4512faec | 470 | } else if(value>(82*div+minValue) & value<=83*div+minValue ) { |
gia95 | 0:417d4512faec | 471 | tft.pixel(k,s,color83); |
gia95 | 0:417d4512faec | 472 | } else if(value>(83*div+minValue) & value<=84*div+minValue ) { |
gia95 | 0:417d4512faec | 473 | tft.pixel(k,s,color84); |
gia95 | 0:417d4512faec | 474 | } else if(value>(84*div+minValue) & value<=85*div+minValue ) { |
gia95 | 0:417d4512faec | 475 | tft.pixel(k,s,color85); |
gia95 | 0:417d4512faec | 476 | } else if(value>(85*div+minValue) & value<=86*div+minValue ) { |
gia95 | 0:417d4512faec | 477 | tft.pixel(k,s,color86); |
gia95 | 0:417d4512faec | 478 | } else if(value>(86*div+minValue) & value<=87*div+minValue ) { |
gia95 | 0:417d4512faec | 479 | tft.pixel(k,s,color87); |
gia95 | 0:417d4512faec | 480 | } else if(value>(87*div+minValue) & value<=88*div+minValue ) { |
gia95 | 0:417d4512faec | 481 | tft.pixel(k,s,color88); |
gia95 | 0:417d4512faec | 482 | } else if(value>(88*div+minValue) & value<=89*div+minValue ) { |
gia95 | 0:417d4512faec | 483 | tft.pixel(k,s,color89); |
gia95 | 0:417d4512faec | 484 | } else if(value>(89*div+minValue) & value<=90*div+minValue ) { |
gia95 | 0:417d4512faec | 485 | tft.pixel(k,s,color90); |
gia95 | 0:417d4512faec | 486 | } else if(value>(90*div+minValue) & value<=91*div+minValue ) { |
gia95 | 0:417d4512faec | 487 | tft.pixel(k,s,color91); |
gia95 | 0:417d4512faec | 488 | } else if(value>(91*div+minValue) & value<=92*div+minValue ) { |
gia95 | 0:417d4512faec | 489 | tft.pixel(k,s,color92); |
gia95 | 0:417d4512faec | 490 | } else if(value>(92*div+minValue) & value<=93*div+minValue ) { |
gia95 | 0:417d4512faec | 491 | tft.pixel(k,s,color93); |
gia95 | 0:417d4512faec | 492 | } else if(value>(93*div+minValue) & value<=94*div+minValue ) { |
gia95 | 0:417d4512faec | 493 | tft.pixel(k,s,color94); |
gia95 | 0:417d4512faec | 494 | } else if(value>(94*div+minValue) & value<=95*div+minValue ) { |
gia95 | 0:417d4512faec | 495 | tft.pixel(k,s,color95); |
gia95 | 0:417d4512faec | 496 | } else if(value>(95*div+minValue) & value<=96*div+minValue ) { |
gia95 | 0:417d4512faec | 497 | tft.pixel(k,s,color96); |
gia95 | 0:417d4512faec | 498 | } else if(value>(96*div+minValue) & value<=97*div+minValue ) { |
gia95 | 0:417d4512faec | 499 | tft.pixel(k,s,color97); |
gia95 | 0:417d4512faec | 500 | } else if(value>(97*div+minValue) & value<=98*div+minValue ) { |
gia95 | 0:417d4512faec | 501 | tft.pixel(k,s,color98); |
gia95 | 0:417d4512faec | 502 | } else if(value>(98*div+minValue) & value<=99*div+minValue ) { |
gia95 | 0:417d4512faec | 503 | tft.pixel(k,s,color99); |
gia95 | 0:417d4512faec | 504 | } else if(value>(99*div+minValue) & value<=100*div+minValue ) { |
gia95 | 0:417d4512faec | 505 | tft.pixel(k,s,color100); |
gia95 | 0:417d4512faec | 506 | } else if(value>(100*div+minValue) & value<=101*div+minValue ) { |
gia95 | 0:417d4512faec | 507 | tft.pixel(k,s,color101); |
gia95 | 0:417d4512faec | 508 | } else if(value>(101*div+minValue) & value<=102*div+minValue ) { |
gia95 | 0:417d4512faec | 509 | tft.pixel(k,s,color102); |
gia95 | 0:417d4512faec | 510 | } else if(value>(102*div+minValue) & value<=103*div+minValue ) { |
gia95 | 0:417d4512faec | 511 | tft.pixel(k,s,color103); |
gia95 | 0:417d4512faec | 512 | } else if(value>(103*div+minValue) & value<=104*div+minValue ) { |
gia95 | 0:417d4512faec | 513 | tft.pixel(k,s,color104); |
gia95 | 0:417d4512faec | 514 | } else if(value>(104*div+minValue) & value<=105*div+minValue ) { |
gia95 | 0:417d4512faec | 515 | tft.pixel(k,s,color105); |
gia95 | 0:417d4512faec | 516 | } else if(value>(105*div+minValue) & value<=106*div+minValue ) { |
gia95 | 0:417d4512faec | 517 | tft.pixel(k,s,color106); |
gia95 | 0:417d4512faec | 518 | } else if(value>(106*div+minValue) & value<=107*div+minValue ) { |
gia95 | 0:417d4512faec | 519 | tft.pixel(k,s,color107); |
gia95 | 0:417d4512faec | 520 | } else if(value>(107*div+minValue) & value<=108*div+minValue ) { |
gia95 | 0:417d4512faec | 521 | tft.pixel(k,s,color108); |
gia95 | 0:417d4512faec | 522 | } else if(value>(108*div+minValue) & value<=109*div+minValue ) { |
gia95 | 0:417d4512faec | 523 | tft.pixel(k,s,color109); |
gia95 | 0:417d4512faec | 524 | } else if(value>(109*div+minValue) & value<=110*div+minValue ) { |
gia95 | 0:417d4512faec | 525 | tft.pixel(k,s,color110); |
gia95 | 0:417d4512faec | 526 | } else if(value>(110*div+minValue) & value<=111*div+minValue ) { |
gia95 | 0:417d4512faec | 527 | tft.pixel(k,s,color111); |
gia95 | 0:417d4512faec | 528 | } else if(value>(111*div+minValue) & value<=112*div+minValue ) { |
gia95 | 0:417d4512faec | 529 | tft.pixel(k,s,color112); |
gia95 | 0:417d4512faec | 530 | } else if(value>(112*div+minValue) & value<=113*div+minValue ) { |
gia95 | 0:417d4512faec | 531 | tft.pixel(k,s,color113); |
gia95 | 0:417d4512faec | 532 | } else if(value>(113*div+minValue) & value<=114*div+minValue ) { |
gia95 | 0:417d4512faec | 533 | tft.pixel(k,s,color114); |
gia95 | 0:417d4512faec | 534 | } else if(value>(114*div+minValue) & value<=115*div+minValue ) { |
gia95 | 0:417d4512faec | 535 | tft.pixel(k,s,color115); |
gia95 | 0:417d4512faec | 536 | } else if(value>(115*div+minValue) & value<=116*div+minValue ) { |
gia95 | 0:417d4512faec | 537 | tft.pixel(k,s,color116); |
gia95 | 0:417d4512faec | 538 | } else if(value>(116*div+minValue) & value<=117*div+minValue ) { |
gia95 | 0:417d4512faec | 539 | tft.pixel(k,s,color117); |
gia95 | 0:417d4512faec | 540 | } else if(value>(117*div+minValue) & value<=118*div+minValue ) { |
gia95 | 0:417d4512faec | 541 | tft.pixel(k,s,color118); |
gia95 | 0:417d4512faec | 542 | } else if(value>(118*div+minValue) & value<=119*div+minValue ) { |
gia95 | 0:417d4512faec | 543 | tft.pixel(k,s,color119); |
gia95 | 0:417d4512faec | 544 | } else if(value>(119*div+minValue)) { |
gia95 | 0:417d4512faec | 545 | tft.pixel(k,s,color120); |
gia95 | 0:417d4512faec | 546 | } |
gia95 | 0:417d4512faec | 547 | tft.copy_to_lcd(); |
gia95 | 0:417d4512faec | 548 | } |
gia95 | 0:417d4512faec | 549 | |
gia95 | 0:417d4512faec | 550 | // Disegna la colorbar (Aggiungere etichette) |
gia95 | 0:417d4512faec | 551 | void draw_colorbar(void) |
gia95 | 0:417d4512faec | 552 | { |
gia95 | 0:417d4512faec | 553 | tft.rect(1,290,180,320,White); |
gia95 | 0:417d4512faec | 554 | tft.fillrect(177,291,179,318,color1); |
gia95 | 0:417d4512faec | 555 | tft.fillrect(174,291,176,318,color3); |
gia95 | 0:417d4512faec | 556 | tft.line(176,289,176,285,White); |
gia95 | 0:417d4512faec | 557 | tft.fillrect(171,291,173,318,color5); |
gia95 | 0:417d4512faec | 558 | tft.fillrect(168,291,170,318,color7); |
gia95 | 0:417d4512faec | 559 | tft.fillrect(165,291,167,318,color9); |
gia95 | 0:417d4512faec | 560 | tft.fillrect(162,291,164,318,color11); |
gia95 | 0:417d4512faec | 561 | tft.fillrect(159,291,161,318,color13); |
gia95 | 0:417d4512faec | 562 | tft.fillrect(156,291,158,318,color15); |
gia95 | 0:417d4512faec | 563 | tft.line(161,289,161,285,White); |
gia95 | 0:417d4512faec | 564 | tft.fillrect(153,291,155,318,color17); |
gia95 | 0:417d4512faec | 565 | tft.fillrect(150,291,152,318,color19); |
gia95 | 0:417d4512faec | 566 | tft.fillrect(147,291,149,318,color21); |
gia95 | 0:417d4512faec | 567 | tft.fillrect(144,291,146,318,color23); |
gia95 | 0:417d4512faec | 568 | tft.line(146,289,146,285,White); |
gia95 | 0:417d4512faec | 569 | tft.fillrect(141,291,143,318,color25); |
gia95 | 0:417d4512faec | 570 | tft.fillrect(138,291,140,318,color27); |
gia95 | 0:417d4512faec | 571 | tft.fillrect(135,291,137,318,color29); |
gia95 | 0:417d4512faec | 572 | tft.fillrect(132,291,134,318,color31); |
gia95 | 0:417d4512faec | 573 | tft.line(131,289,131,285,White); |
gia95 | 0:417d4512faec | 574 | tft.fillrect(129,291,131,318,color33); |
gia95 | 0:417d4512faec | 575 | tft.fillrect(126,291,128,318,color35); |
gia95 | 0:417d4512faec | 576 | tft.fillrect(123,291,125,318,color37); |
gia95 | 0:417d4512faec | 577 | tft.fillrect(120,291,122,318,color39); |
gia95 | 0:417d4512faec | 578 | tft.line(116,289,116,285,White); |
gia95 | 0:417d4512faec | 579 | tft.fillrect(117,291,119,318,color41); |
gia95 | 0:417d4512faec | 580 | tft.fillrect(114,291,116,318,color43); |
gia95 | 0:417d4512faec | 581 | tft.fillrect(111,291,113,318,color45); |
gia95 | 0:417d4512faec | 582 | tft.fillrect(108,291,110,318,color47); |
gia95 | 0:417d4512faec | 583 | tft.fillrect(105,291,107,318,color49); |
gia95 | 0:417d4512faec | 584 | tft.fillrect(102,291,104,318,color51); |
gia95 | 0:417d4512faec | 585 | tft.line(101,289,101,285,White); |
gia95 | 0:417d4512faec | 586 | tft.fillrect(99,291,101,318,color53); |
gia95 | 0:417d4512faec | 587 | tft.fillrect(96,291,98,318,color55); |
gia95 | 0:417d4512faec | 588 | tft.fillrect(93,291,95,318,color57); |
gia95 | 0:417d4512faec | 589 | tft.fillrect(90,291,92,318,color59); |
gia95 | 0:417d4512faec | 590 | tft.fillrect(87,291,89,318,color61); |
gia95 | 0:417d4512faec | 591 | tft.line(86,289,86,285,White); |
gia95 | 0:417d4512faec | 592 | tft.fillrect(84,291,86,318,color63); |
gia95 | 0:417d4512faec | 593 | tft.fillrect(81,291,83,318,color65); |
gia95 | 0:417d4512faec | 594 | tft.fillrect(78,291,80,318,color67); |
gia95 | 0:417d4512faec | 595 | tft.fillrect(75,291,77,318,color69); |
gia95 | 0:417d4512faec | 596 | tft.fillrect(72,291,74,318,color71); |
gia95 | 0:417d4512faec | 597 | tft.line(71,289,71,285,White); |
gia95 | 0:417d4512faec | 598 | tft.fillrect(69,291,71,318,color73); |
gia95 | 0:417d4512faec | 599 | tft.fillrect(66,291,68,318,color75); |
gia95 | 0:417d4512faec | 600 | tft.fillrect(63,291,65,318,color77); |
gia95 | 0:417d4512faec | 601 | tft.fillrect(60,291,62,318,color79); |
gia95 | 0:417d4512faec | 602 | tft.fillrect(57,291,59,318,color81); |
gia95 | 0:417d4512faec | 603 | tft.line(56,289,56,285,White); |
gia95 | 0:417d4512faec | 604 | tft.fillrect(54,291,56,318,color83); |
gia95 | 0:417d4512faec | 605 | tft.fillrect(51,291,53,318,color85); |
gia95 | 0:417d4512faec | 606 | tft.fillrect(48,291,50,318,color87); |
gia95 | 0:417d4512faec | 607 | tft.fillrect(45,291,47,318,color89); |
gia95 | 0:417d4512faec | 608 | tft.fillrect(42,291,44,318,color91); |
gia95 | 0:417d4512faec | 609 | tft.line(41,289,41,285,White); |
gia95 | 0:417d4512faec | 610 | tft.fillrect(39,291,41,318,color93); |
gia95 | 0:417d4512faec | 611 | tft.fillrect(36,291,38,318,color95); |
gia95 | 0:417d4512faec | 612 | tft.fillrect(33,291,35,318,color97); |
gia95 | 0:417d4512faec | 613 | tft.fillrect(30,291,32,318,color99); |
gia95 | 0:417d4512faec | 614 | tft.fillrect(27,291,29,318,color101); |
gia95 | 0:417d4512faec | 615 | tft.line(26,289,26,285,White); |
gia95 | 0:417d4512faec | 616 | tft.fillrect(24,291,26,318,color103); |
gia95 | 0:417d4512faec | 617 | tft.fillrect(21,291,23,318,color105); |
gia95 | 0:417d4512faec | 618 | tft.fillrect(18,291,20,318,color107); |
gia95 | 0:417d4512faec | 619 | tft.fillrect(15,291,17,318,color109); |
gia95 | 0:417d4512faec | 620 | tft.fillrect(12,291,14,318,color111); |
gia95 | 0:417d4512faec | 621 | tft.line(11,289,11,285,White); |
gia95 | 0:417d4512faec | 622 | tft.fillrect(9,291,11,318,color113); |
gia95 | 0:417d4512faec | 623 | tft.fillrect(6,291,8,318,color115); |
gia95 | 0:417d4512faec | 624 | tft.fillrect(2,291,5,318,color117); |
gia95 | 0:417d4512faec | 625 | |
gia95 | 0:417d4512faec | 626 | tft.copy_to_lcd(); |
gia95 | 0:417d4512faec | 627 | } |
gia95 | 0:417d4512faec | 628 | |
gia95 | 0:417d4512faec | 629 | //Setta i valori di temperatura corrispondenti ai colori della colorbar |
gia95 | 0:417d4512faec | 630 | void Scale(float div,float min) |
gia95 | 0:417d4512faec | 631 | { |
gia95 | 0:417d4512faec | 632 | tft.set_font((unsigned char*) Arial_9); |
gia95 | 0:417d4512faec | 633 | tft.set_orientation(1); |
gia95 | 0:417d4512faec | 634 | tft.locate(35,6); |
gia95 | 0:417d4512faec | 635 | tft.printf("%.2f",div*119+min); |
gia95 | 0:417d4512faec | 636 | tft.locate(35,21); |
gia95 | 0:417d4512faec | 637 | tft.printf("%.2f",div*111+min); |
gia95 | 0:417d4512faec | 638 | tft.locate(35,36); |
gia95 | 0:417d4512faec | 639 | tft.printf("%.2f",div*100+min); |
gia95 | 0:417d4512faec | 640 | tft.locate(35,51); |
gia95 | 0:417d4512faec | 641 | tft.printf("%.2f",div*89+min); |
gia95 | 0:417d4512faec | 642 | tft.locate(35,66); |
gia95 | 0:417d4512faec | 643 | tft.printf("%.2f",div*78+min); |
gia95 | 0:417d4512faec | 644 | tft.locate(35,81); |
gia95 | 0:417d4512faec | 645 | tft.printf("%.2f",div*67+min); |
gia95 | 0:417d4512faec | 646 | tft.locate(35,96); |
gia95 | 0:417d4512faec | 647 | tft.printf("%.2f",div*56+min); |
gia95 | 0:417d4512faec | 648 | tft.locate(35,111); |
gia95 | 0:417d4512faec | 649 | tft.printf("%.2f",div*45+min); |
gia95 | 0:417d4512faec | 650 | tft.locate(35,126); |
gia95 | 0:417d4512faec | 651 | tft.printf("%.2f",div*34+min); |
gia95 | 0:417d4512faec | 652 | tft.locate(35,141); |
gia95 | 0:417d4512faec | 653 | tft.printf("%.2f",div*23+min); |
gia95 | 0:417d4512faec | 654 | tft.locate(35,156); |
gia95 | 0:417d4512faec | 655 | tft.printf("%.2f",div*11+min); |
gia95 | 0:417d4512faec | 656 | tft.locate(35,171); |
gia95 | 0:417d4512faec | 657 | tft.printf("%.2f",div*1+min); |
gia95 | 0:417d4512faec | 658 | tft.locate(100,190); |
gia95 | 0:417d4512faec | 659 | tft.printf("Celsius Degree Scale"); |
gia95 | 0:417d4512faec | 660 | } |
gia95 | 0:417d4512faec | 661 | |
gia95 | 0:417d4512faec | 662 | |
gia95 | 0:417d4512faec | 663 | //Funzione che rileva pressione Bottone |
gia95 | 0:417d4512faec | 664 | void push_button() |
gia95 | 0:417d4512faec | 665 | { |
gia95 | 0:417d4512faec | 666 | save=!save; |
gia95 | 0:417d4512faec | 667 | } |
gia95 | 0:417d4512faec | 668 | |
gia95 | 0:417d4512faec | 669 | |
gia95 | 0:417d4512faec | 670 | |
gia95 | 0:417d4512faec | 671 | //Funzione che estrapola i dati da salvare |
gia95 | 0:417d4512faec | 672 | void data_save(uint16_t lepton_image [60][80]) |
gia95 | 0:417d4512faec | 673 | { |
gia95 | 0:417d4512faec | 674 | // uint8_t minimo = 255; |
gia95 | 0:417d4512faec | 675 | // uint8_t massimo = 0; |
gia95 | 0:417d4512faec | 676 | |
gia95 | 0:417d4512faec | 677 | // for (int y =0; y < 60; y++) { |
gia95 | 0:417d4512faec | 678 | // for (int x = 0; x < 80; x++) { |
gia95 | 0:417d4512faec | 679 | // matrix1[y][x]=lepton_image[y][x]>>8; |
gia95 | 0:417d4512faec | 680 | // if (matrix1[y][x] > massimo) { |
gia95 | 0:417d4512faec | 681 | // massimo = matrix1[y][x]; |
gia95 | 0:417d4512faec | 682 | // } |
gia95 | 0:417d4512faec | 683 | // if (matrix1[y][x] < minimo) { |
gia95 | 0:417d4512faec | 684 | // minimo = matrix1[y][x]; |
gia95 | 0:417d4512faec | 685 | // } |
gia95 | 0:417d4512faec | 686 | //} |
gia95 | 0:417d4512faec | 687 | //} |
gia95 | 0:417d4512faec | 688 | |
gia95 | 0:417d4512faec | 689 | |
gia95 | 0:417d4512faec | 690 | //bt.printf("ok"); |
gia95 | 0:417d4512faec | 691 | //int8_t diff = massimo - minimo; |
gia95 | 0:417d4512faec | 692 | //float scale = (255 / diff); |
gia95 | 0:417d4512faec | 693 | |
gia95 | 0:417d4512faec | 694 | float v; // delta discretizzazione dei colori |
gia95 | 0:417d4512faec | 695 | v=(maxValue-minValue)/59; |
gia95 | 0:417d4512faec | 696 | |
gia95 | 0:417d4512faec | 697 | |
gia95 | 0:417d4512faec | 698 | int k; |
gia95 | 0:417d4512faec | 699 | |
gia95 | 0:417d4512faec | 700 | for (int y =0; y <60; y++) { |
gia95 | 0:417d4512faec | 701 | k=0; |
gia95 | 0:417d4512faec | 702 | //bt.printf("ok"); |
gia95 | 0:417d4512faec | 703 | for (int x = 0; x < 80; x++) { |
gia95 | 0:417d4512faec | 704 | float value; |
gia95 | 0:417d4512faec | 705 | value=T_image[y][x]; |
gia95 | 0:417d4512faec | 706 | Colormap(value,v); |
gia95 | 0:417d4512faec | 707 | matrix_save(matrix,color,y,k); |
gia95 | 0:417d4512faec | 708 | k=k+3; |
gia95 | 0:417d4512faec | 709 | } |
gia95 | 0:417d4512faec | 710 | } |
gia95 | 0:417d4512faec | 711 | |
gia95 | 0:417d4512faec | 712 | //bt.printf("Sono fuori dal for"); |
gia95 | 0:417d4512faec | 713 | //bt.printf("\n\r"); |
gia95 | 0:417d4512faec | 714 | //bt.printf("ok"); |
gia95 | 0:417d4512faec | 715 | } |
gia95 | 0:417d4512faec | 716 | |
gia95 | 0:417d4512faec | 717 | |
gia95 | 0:417d4512faec | 718 | |
gia95 | 0:417d4512faec | 719 | //Funzione che costruisce la matrice da slavare 60x240 |
gia95 | 0:417d4512faec | 720 | void matrix_save(uint8_t matrix [60][240],uint8_t value,int y, int k) |
gia95 | 0:417d4512faec | 721 | { |
gia95 | 0:417d4512faec | 722 | //const int *colormap = colormap_grayscale; |
gia95 | 0:417d4512faec | 723 | matrix[y][k]=color; |
gia95 | 0:417d4512faec | 724 | matrix[y][k+1]=color; |
gia95 | 0:417d4512faec | 725 | matrix[y][k+2]=color; |
gia95 | 0:417d4512faec | 726 | } |
gia95 | 0:417d4512faec | 727 | |
gia95 | 0:417d4512faec | 728 | |
gia95 | 0:417d4512faec | 729 | //Funzione per il salvataggio su microSD |
gia95 | 0:417d4512faec | 730 | void save_SD(uint8_t matrix[60][240]) |
gia95 | 0:417d4512faec | 731 | { |
gia95 | 0:417d4512faec | 732 | |
gia95 | 0:417d4512faec | 733 | |
gia95 | 0:417d4512faec | 734 | |
gia95 | 0:417d4512faec | 735 | |
gia95 | 0:417d4512faec | 736 | int width=80; |
gia95 | 0:417d4512faec | 737 | int height=60; |
gia95 | 0:417d4512faec | 738 | |
gia95 | 0:417d4512faec | 739 | unsigned long buf_stride = (((width * 4u) + 31u) & ~31u); |
gia95 | 0:417d4512faec | 740 | unsigned long pic_size = buf_stride * height; |
gia95 | 0:417d4512faec | 741 | f_mount(&SDFatFs, "", 0); |
gia95 | 0:417d4512faec | 742 | |
gia95 | 0:417d4512faec | 743 | //header |
gia95 | 0:417d4512faec | 744 | uint8_t file[14] = { |
gia95 | 0:417d4512faec | 745 | 'B','M', // magic |
gia95 | 0:417d4512faec | 746 | 0,0,0,0, // size in bytes |
gia95 | 0:417d4512faec | 747 | 0,0, // app data |
gia95 | 0:417d4512faec | 748 | 0,0, // app data |
gia95 | 0:417d4512faec | 749 | 54,0,0,0 // start of data offset |
gia95 | 0:417d4512faec | 750 | }; |
gia95 | 0:417d4512faec | 751 | uint8_t info[40] = { |
gia95 | 0:417d4512faec | 752 | 40,0,0,0, // info hd size |
gia95 | 0:417d4512faec | 753 | 80,0,0,0, // width |
gia95 | 0:417d4512faec | 754 | 60,0,0,0, // heigth |
gia95 | 0:417d4512faec | 755 | 1,0, // number color planes |
gia95 | 0:417d4512faec | 756 | 24,0, // bits per pixel |
gia95 | 0:417d4512faec | 757 | 0,0,0,0, // compression is none |
gia95 | 0:417d4512faec | 758 | (uint8_t)(pic_size),(uint8_t)(pic_size)>>8,(uint8_t)(pic_size)>>16,(uint8_t)(pic_size)>>18, // image bits size |
gia95 | 0:417d4512faec | 759 | 0,0,0,0, // horz resoluition in pixel / m |
gia95 | 0:417d4512faec | 760 | 0,0,0,0, // vert resolutions (0x03C3 = 96 dpi, 0x0B13 = 72 dpi) |
gia95 | 0:417d4512faec | 761 | 0,0,0,0, // #colors in pallete |
gia95 | 0:417d4512faec | 762 | 0,0,0,0, // #important colors |
gia95 | 0:417d4512faec | 763 | }; |
gia95 | 0:417d4512faec | 764 | |
gia95 | 0:417d4512faec | 765 | char data[60]; |
gia95 | 0:417d4512faec | 766 | int num_char; |
gia95 | 0:417d4512faec | 767 | cont=cont+1; |
gia95 | 0:417d4512faec | 768 | num_char = sprintf(data, "termo_image_%d.bmp", cont); |
gia95 | 0:417d4512faec | 769 | |
gia95 | 0:417d4512faec | 770 | res=f_open(&MyFile, data, FA_CREATE_ALWAYS| FA_WRITE ); |
gia95 | 0:417d4512faec | 771 | while(res!= FR_OK) { |
gia95 | 0:417d4512faec | 772 | res=f_open(&MyFile, data, FA_CREATE_ALWAYS| FA_WRITE); |
gia95 | 0:417d4512faec | 773 | if(res!= FR_OK) { |
gia95 | 0:417d4512faec | 774 | bt.printf("Failed to open file\n"); |
gia95 | 0:417d4512faec | 775 | } |
gia95 | 0:417d4512faec | 776 | } |
gia95 | 0:417d4512faec | 777 | |
gia95 | 0:417d4512faec | 778 | |
gia95 | 0:417d4512faec | 779 | res=f_write(&MyFile, (uint8_t *)file, 14, &bytesread); |
gia95 | 0:417d4512faec | 780 | if(res!= FR_OK) { |
gia95 | 0:417d4512faec | 781 | bt.printf("Failed to write file (file)\n"); |
gia95 | 0:417d4512faec | 782 | } |
gia95 | 0:417d4512faec | 783 | |
gia95 | 0:417d4512faec | 784 | |
gia95 | 0:417d4512faec | 785 | res=f_write(&MyFile, (uint8_t *)info, 40, &bytesread); |
gia95 | 0:417d4512faec | 786 | if(res!= FR_OK) { |
gia95 | 0:417d4512faec | 787 | bt.printf("Failed to write file (info)\n"); |
gia95 | 0:417d4512faec | 788 | } |
gia95 | 0:417d4512faec | 789 | |
gia95 | 0:417d4512faec | 790 | res=f_write(&MyFile, (uint8_t *)matrix,14400, &bytesread); |
gia95 | 0:417d4512faec | 791 | if(res!= FR_OK) { |
gia95 | 0:417d4512faec | 792 | bt.printf("Failed to write file (data)\n"); |
gia95 | 0:417d4512faec | 793 | } |
gia95 | 0:417d4512faec | 794 | |
gia95 | 0:417d4512faec | 795 | f_sync(&MyFile); |
gia95 | 0:417d4512faec | 796 | f_close(&MyFile); |
gia95 | 0:417d4512faec | 797 | f_mount(NULL, "", 0); |
gia95 | 0:417d4512faec | 798 | bt.printf("HO FINITO DI SALVARE"); |
gia95 | 0:417d4512faec | 799 | |
gia95 | 0:417d4512faec | 800 | |
gia95 | 0:417d4512faec | 801 | } |
gia95 | 0:417d4512faec | 802 | |
gia95 | 0:417d4512faec | 803 | |
gia95 | 0:417d4512faec | 804 | |
gia95 | 0:417d4512faec | 805 | void calcola(void) |
gia95 | 0:417d4512faec | 806 | { |
gia95 | 0:417d4512faec | 807 | a3=float(T_image[x2][y2]-T_image[x2][y2]-T_image[x1][y2]+T_image[x1][y1])/(-y1*(x2-x1)-x1*(y2-y1)+(x2*y2-x1*y1)); |
gia95 | 0:417d4512faec | 808 | a2=float(T_image[x1][y2]-T_image[x1][y1]-x1*(y2-y1)*a3)/((y2-y1)); |
gia95 | 0:417d4512faec | 809 | a1=float(T_image[x2][y1]-T_image[x1][y1]-y1*a3*(x2-x1))/(x2-x1); |
gia95 | 0:417d4512faec | 810 | a0=T_image[x1][y1]-a1*x1-y1*a2-a3*x1*y1; |
gia95 | 0:417d4512faec | 811 | } |
gia95 | 0:417d4512faec | 812 | |
gia95 | 0:417d4512faec | 813 | void Colormap(float value,float div) |
gia95 | 0:417d4512faec | 814 | { |
gia95 | 0:417d4512faec | 815 | if(value<=(div+minValue)) { |
gia95 | 0:417d4512faec | 816 | color=0; |
gia95 | 0:417d4512faec | 817 | } else if(value>(1*div+minValue) & value<=2*div+minValue ) { |
gia95 | 0:417d4512faec | 818 | color=20; |
gia95 | 0:417d4512faec | 819 | } else if(value>(2*div+minValue) & value<=3*div+minValue ) { |
gia95 | 0:417d4512faec | 820 | color=24; |
gia95 | 0:417d4512faec | 821 | } else if(value>(3*div+minValue) & value<=4*div+minValue ) { |
gia95 | 0:417d4512faec | 822 | color=28; |
gia95 | 0:417d4512faec | 823 | } else if(value>(4*div+minValue) & value<=5*div+minValue ) { |
gia95 | 0:417d4512faec | 824 | color=32; |
gia95 | 0:417d4512faec | 825 | } else if(value>(5*div+minValue) & value<=6*div+minValue ) { |
gia95 | 0:417d4512faec | 826 | color=36; |
gia95 | 0:417d4512faec | 827 | } else if(value>(6*div+minValue) & value<=7*div+minValue ) { |
gia95 | 0:417d4512faec | 828 | color=40; |
gia95 | 0:417d4512faec | 829 | } else if(value>(7*div+minValue) & value<=8*div+minValue ) { |
gia95 | 0:417d4512faec | 830 | color=44; |
gia95 | 0:417d4512faec | 831 | } else if(value>(8*div+minValue) & value<=9*div+minValue ) { |
gia95 | 0:417d4512faec | 832 | color=48; |
gia95 | 0:417d4512faec | 833 | } else if(value>(9*div+minValue) & value<=10*div+minValue ) { |
gia95 | 0:417d4512faec | 834 | color=52; |
gia95 | 0:417d4512faec | 835 | } else if(value>(10*div+minValue) & value<=11*div+minValue ) { |
gia95 | 0:417d4512faec | 836 | color=56; |
gia95 | 0:417d4512faec | 837 | } else if(value>(11*div+minValue) & value<=12*div+minValue ) { |
gia95 | 0:417d4512faec | 838 | color=60; |
gia95 | 0:417d4512faec | 839 | } else if(value>(12*div+minValue) & value<=13*div+minValue ) { |
gia95 | 0:417d4512faec | 840 | color=64; |
gia95 | 0:417d4512faec | 841 | } else if(value>(13*div+minValue) & value<=14*div+minValue ) { |
gia95 | 0:417d4512faec | 842 | color=68; |
gia95 | 0:417d4512faec | 843 | } else if(value>(14*div+minValue) & value<=15*div+minValue ) { |
gia95 | 0:417d4512faec | 844 | color=72; |
gia95 | 0:417d4512faec | 845 | } else if(value>(15*div+minValue) & value<=16*div+minValue ) { |
gia95 | 0:417d4512faec | 846 | color=76; |
gia95 | 0:417d4512faec | 847 | } else if(value>(16*div+minValue) & value<=17*div+minValue ) { |
gia95 | 0:417d4512faec | 848 | color=80; |
gia95 | 0:417d4512faec | 849 | } else if(value>(17*div+minValue) & value<=18*div+minValue ) { |
gia95 | 0:417d4512faec | 850 | color=84; |
gia95 | 0:417d4512faec | 851 | } else if(value>(18*div+minValue) & value<=19*div+minValue ) { |
gia95 | 0:417d4512faec | 852 | color=88; |
gia95 | 0:417d4512faec | 853 | } else if(value>(19*div+minValue) & value<=20*div+minValue ) { |
gia95 | 0:417d4512faec | 854 | color=92; |
gia95 | 0:417d4512faec | 855 | } else if(value>(20*div+minValue) & value<=21*div+minValue ) { |
gia95 | 0:417d4512faec | 856 | color=96; |
gia95 | 0:417d4512faec | 857 | } else if(value>(21*div+minValue) & value<=22*div+minValue ) { |
gia95 | 0:417d4512faec | 858 | color=100; |
gia95 | 0:417d4512faec | 859 | } else if(value>(22*div+minValue) & value<=23*div+minValue ) { |
gia95 | 0:417d4512faec | 860 | color=104; |
gia95 | 0:417d4512faec | 861 | } else if(value>(23*div+minValue) & value<=24*div+minValue ) { |
gia95 | 0:417d4512faec | 862 | color=108; |
gia95 | 0:417d4512faec | 863 | } else if(value>(24*div+minValue) & value<=25*div+minValue ) { |
gia95 | 0:417d4512faec | 864 | color=112; |
gia95 | 0:417d4512faec | 865 | } else if(value>(25*div+minValue) & value<=26*div+minValue ) { |
gia95 | 0:417d4512faec | 866 | color=116; |
gia95 | 0:417d4512faec | 867 | } else if(value>(26*div+minValue) & value<=27*div+minValue ) { |
gia95 | 0:417d4512faec | 868 | color=120; |
gia95 | 0:417d4512faec | 869 | } else if(value>(27*div+minValue) & value<=28*div+minValue ) { |
gia95 | 0:417d4512faec | 870 | color=124; |
gia95 | 0:417d4512faec | 871 | } else if(value>(28*div+minValue) & value<=29*div+minValue ) { |
gia95 | 0:417d4512faec | 872 | color=128; |
gia95 | 0:417d4512faec | 873 | } else if(value>(29*div+minValue) & value<=30*div+minValue ) { |
gia95 | 0:417d4512faec | 874 | color=132; |
gia95 | 0:417d4512faec | 875 | } else if(value>(30*div+minValue) & value<=31*div+minValue ) { |
gia95 | 0:417d4512faec | 876 | color=136; |
gia95 | 0:417d4512faec | 877 | } else if(value>(31*div+minValue) & value<=32*div+minValue ) { |
gia95 | 0:417d4512faec | 878 | color=140; |
gia95 | 0:417d4512faec | 879 | } else if(value>(32*div+minValue) & value<=33*div+minValue ) { |
gia95 | 0:417d4512faec | 880 | color=144; |
gia95 | 0:417d4512faec | 881 | } else if(value>(33*div+minValue) & value<=34*div+minValue ) { |
gia95 | 0:417d4512faec | 882 | color=148; |
gia95 | 0:417d4512faec | 883 | } else if(value>(34*div+minValue) & value<=35*div+minValue ) { |
gia95 | 0:417d4512faec | 884 | color=152; |
gia95 | 0:417d4512faec | 885 | } else if(value>(35*div+minValue) & value<=36*div+minValue ) { |
gia95 | 0:417d4512faec | 886 | color=156; |
gia95 | 0:417d4512faec | 887 | } else if(value>(36*div+minValue) & value<=37*div+minValue ) { |
gia95 | 0:417d4512faec | 888 | color=160; |
gia95 | 0:417d4512faec | 889 | } else if(value>(37*div+minValue) & value<=38*div+minValue ) { |
gia95 | 0:417d4512faec | 890 | color=164; |
gia95 | 0:417d4512faec | 891 | } else if(value>(38*div+minValue) & value<=39*div+minValue ) { |
gia95 | 0:417d4512faec | 892 | color=168; |
gia95 | 0:417d4512faec | 893 | } else if(value>(39*div+minValue) & value<=40*div+minValue ) { |
gia95 | 0:417d4512faec | 894 | color=172; |
gia95 | 0:417d4512faec | 895 | } else if(value>(40*div+minValue) & value<=41*div+minValue ) { |
gia95 | 0:417d4512faec | 896 | color=176; |
gia95 | 0:417d4512faec | 897 | } else if(value>(41*div+minValue) & value<=42*div+minValue ) { |
gia95 | 0:417d4512faec | 898 | color=180; |
gia95 | 0:417d4512faec | 899 | } else if(value>(42*div+minValue) & value<=43*div+minValue ) { |
gia95 | 0:417d4512faec | 900 | color=184; |
gia95 | 0:417d4512faec | 901 | } else if(value>(43*div+minValue) & value<=44*div+minValue ) { |
gia95 | 0:417d4512faec | 902 | color=188; |
gia95 | 0:417d4512faec | 903 | } else if(value>(44*div+minValue) & value<=45*div+minValue ) { |
gia95 | 0:417d4512faec | 904 | color=192; |
gia95 | 0:417d4512faec | 905 | } else if(value>(45*div+minValue) & value<=46*div+minValue ) { |
gia95 | 0:417d4512faec | 906 | color=196; |
gia95 | 0:417d4512faec | 907 | } else if(value>(46*div+minValue) & value<=47*div+minValue ) { |
gia95 | 0:417d4512faec | 908 | color=200; |
gia95 | 0:417d4512faec | 909 | } else if(value>(47*div+minValue) & value<=48*div+minValue ) { |
gia95 | 0:417d4512faec | 910 | color=204; |
gia95 | 0:417d4512faec | 911 | } else if(value>(48*div+minValue) & value<=49*div+minValue ) { |
gia95 | 0:417d4512faec | 912 | color=208; |
gia95 | 0:417d4512faec | 913 | } else if(value>(49*div+minValue) & value<=50*div+minValue ) { |
gia95 | 0:417d4512faec | 914 | color=212; |
gia95 | 0:417d4512faec | 915 | } else if(value>(50*div+minValue) & value<=51*div+minValue ) { |
gia95 | 0:417d4512faec | 916 | color=216; |
gia95 | 0:417d4512faec | 917 | } else if(value>(51*div+minValue) & value<=52*div+minValue ) { |
gia95 | 0:417d4512faec | 918 | color=220; |
gia95 | 0:417d4512faec | 919 | } else if(value>(52*div+minValue) & value<=53*div+minValue ) { |
gia95 | 0:417d4512faec | 920 | color=224; |
gia95 | 0:417d4512faec | 921 | } else if(value>(53*div+minValue) & value<=54*div+minValue ) { |
gia95 | 0:417d4512faec | 922 | color=228; |
gia95 | 0:417d4512faec | 923 | } else if(value>(54*div+minValue) & value<=55*div+minValue ) { |
gia95 | 0:417d4512faec | 924 | color=232; |
gia95 | 0:417d4512faec | 925 | } else if(value>(55*div+minValue) & value<=56*div+minValue ) { |
gia95 | 0:417d4512faec | 926 | color=236; |
gia95 | 0:417d4512faec | 927 | } else if(value>(56*div+minValue) & value<=57*div+minValue ) { |
gia95 | 0:417d4512faec | 928 | color=240; |
gia95 | 0:417d4512faec | 929 | } else if(value>(57*div+minValue) & value<=58*div+minValue ) { |
gia95 | 0:417d4512faec | 930 | color=244; |
gia95 | 0:417d4512faec | 931 | } else if(value>(58*div+minValue)) { |
gia95 | 0:417d4512faec | 932 | color=248; |
gia95 | 0:417d4512faec | 933 | } |
gia95 | 0:417d4512faec | 934 | |
gia95 | 0:417d4512faec | 935 | } |