termocamera

Dependencies:   LCD_fonts mbed SDFileSystem UniGraphic

Committer:
gia95
Date:
Fri Sep 27 12:50:57 2019 +0000
Revision:
0:417d4512faec
termocamera

Who changed what in which revision?

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