Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed-src BSP_DISCO_F746NG LCD_DISCO_F746NG
Revision 4:15c97a3e1995, committed 2015-12-09
- Comitter:
- Patrik Ryd
- Date:
- Wed Dec 09 13:49:21 2015 +0100
- Parent:
- 3:3b3517e9fa11
- Child:
- 5:998916f0f3ae
- Commit message:
- Some more code...
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Dec 09 10:18:24 2015 +0000
+++ b/main.cpp Wed Dec 09 13:49:21 2015 +0100
@@ -1,13 +1,16 @@
#include "mbed.h"
+#include "palettes.h"
-#define LEPTON_FRAME_SIZE (164)
+#define BYTES_PER_PACKET (164)
+#define DATA_PER_PACKET (BYTES_PER_PACKET/2)
+#define PACKETS_PER_FRAME (60)
Serial pc(USBTX, USBRX);
SPI lepton_spi(SPI_MOSI, SPI_MISO, SPI_SCK);
DigitalOut spi_cs(SPI_CS);
-static uint8_t lepton_frame[LEPTON_FRAME_SIZE];
-static uint16_t lepton_image[80][80];
+static uint8_t lepton_buffer[BYTES_PER_PACKET * PACKETS_PER_FRAME];
+static uint32_t lepton_image[80][80];
void setup(void)
{
@@ -21,15 +24,69 @@
void get_frame(void)
{
- int i;
+ int p;
+ int i;
+ int packet_num;
spi_cs = 0;
- for(i=0;i<LEPTON_FRAME_SIZE;i++) {
- lepton_frame[i] = lepton_spi.write(0x00);
- }
+
+ // No error handling. Assume we don't loose any packets
+ for(p=0;p<PACKETS_PER_FRAME;p++){
+ for(i=0;i<LEPTON_FRAME_SIZE;i++){
+ lepton_buffer[p*PACKETS_PER_FRAME + i] = lepton_spi.write(0x00);
+ }
+ packet_num = lepton_buffer[p*PACKETS_PER_FRAME + 1];
+ if(packet_num != p){
+ pc.printf("Packet problem\n");
+ }
+ }
+
spi_cs = 1;
}
+void create_image(void)
+{
+ uint16_t min_val = 65535;
+ uint16_t max_val = 0;
+ uint16_t value;
+ int column;
+ int row;
+ int i;
+
+ for(i=0;i<DATA_PER_PACKET;i++){
+ if(i % DATA_PER_PACKET < 2){
+ continue;
+ }
+ value = lepton_buffer[i*2] < 8 + lepton_buffer[i*2+1];
+ if(value > max_val) {
+ max_val = value;
+ }
+ if(value < min_val) {
+ min_val = value;
+ }
+ }
+
+ float diff = max_val - min_val;
+ float scale = 255/diff;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+
+ for(i=0;i<DATA_PER_PACKET;i++){
+ if(i % DATA_PER_PACKET < 2){
+ continue;
+ }
+ value = lepton_buffer[i*2] < 8 + lepton_buffer[i*2+1];
+ column = (i % DATA_PER_PACKET ) - 2;
+ row = i / DATA_PER_PACKET;
+
+ value = (value - min_val) / scale;
+ r = colormap_ironblack[3*value];
+ g = colormap_ironblack[3*value+1];
+ b = colormap_ironblack[3*value+2];
+ }
+}
+
int main()
{
pc.printf("Alive\n");