car using PID from centre line
Dependencies: FRDM-TFC mbed CBuffer XBEE mbed_angular_speed motor2 MMA8451Q
Fork of KL25Z_Camera_Test by
main.cpp@1:a4883d9c75ec, 2016-10-14 (annotated)
- Committer:
- maximusismax
- Date:
- Fri Oct 14 15:55:16 2016 +0000
- Revision:
- 1:a4883d9c75ec
- Parent:
- 0:566127ca8048
- Child:
- 2:4b6f6fc84793
No longer thresholding on FRDM board, just sending hex values to hosted program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
maximusismax | 0:566127ca8048 | 1 | #include "mbed.h" |
maximusismax | 0:566127ca8048 | 2 | #include "TFC.h" |
maximusismax | 1:a4883d9c75ec | 3 | //#define CAM_THRESHOLD 3000 |
maximusismax | 0:566127ca8048 | 4 | |
maximusismax | 0:566127ca8048 | 5 | |
maximusismax | 0:566127ca8048 | 6 | DigitalOut myled(LED1); |
maximusismax | 0:566127ca8048 | 7 | |
maximusismax | 0:566127ca8048 | 8 | int main() { |
maximusismax | 0:566127ca8048 | 9 | TFC_Init(); |
maximusismax | 0:566127ca8048 | 10 | |
maximusismax | 0:566127ca8048 | 11 | uint32_t i,t = 0; |
maximusismax | 0:566127ca8048 | 12 | //uint32_t width = 0; |
maximusismax | 0:566127ca8048 | 13 | char curr_line[129]; |
maximusismax | 0:566127ca8048 | 14 | |
maximusismax | 0:566127ca8048 | 15 | /* Ensure string is null terminated */ |
maximusismax | 0:566127ca8048 | 16 | curr_line[128] = 0; |
maximusismax | 0:566127ca8048 | 17 | |
maximusismax | 0:566127ca8048 | 18 | |
maximusismax | 0:566127ca8048 | 19 | printf("Starting camera test program\n"); |
maximusismax | 0:566127ca8048 | 20 | |
maximusismax | 0:566127ca8048 | 21 | while(1) { |
maximusismax | 0:566127ca8048 | 22 | //If we have an image ready |
maximusismax | 0:566127ca8048 | 23 | if(TFC_LineScanImageReady>0) |
maximusismax | 0:566127ca8048 | 24 | { |
maximusismax | 0:566127ca8048 | 25 | //Reset image ready flag |
maximusismax | 0:566127ca8048 | 26 | TFC_LineScanImageReady=0; |
maximusismax | 0:566127ca8048 | 27 | printf("\r\n"); |
maximusismax | 0:566127ca8048 | 28 | //printf("L:"); |
maximusismax | 0:566127ca8048 | 29 | |
maximusismax | 0:566127ca8048 | 30 | //Strange thing that cycles the battery indicator |
maximusismax | 0:566127ca8048 | 31 | //Leaving in as this is a good indicator that the camera test program is running |
maximusismax | 0:566127ca8048 | 32 | if(t==4) |
maximusismax | 0:566127ca8048 | 33 | t=0; |
maximusismax | 0:566127ca8048 | 34 | else |
maximusismax | 1:a4883d9c75ec | 35 | t++; |
maximusismax | 0:566127ca8048 | 36 | TFC_SetBatteryLED_Level(t); |
maximusismax | 0:566127ca8048 | 37 | |
maximusismax | 0:566127ca8048 | 38 | for(i = 0; i < 128; i++) { |
maximusismax | 0:566127ca8048 | 39 | curr_line[i] = (int8_t)(TFC_LineScanImage0[i] >> 4) & 0xFF; |
maximusismax | 0:566127ca8048 | 40 | printf("%02x", curr_line[i]); |
maximusismax | 0:566127ca8048 | 41 | } |
maximusismax | 0:566127ca8048 | 42 | printf("\n"); |
maximusismax | 1:a4883d9c75ec | 43 | |
maximusismax | 1:a4883d9c75ec | 44 | //Old version below, we don't threshold on the FRDM board anymore |
maximusismax | 0:566127ca8048 | 45 | //printf("0x%x\n", curr_line); |
maximusismax | 0:566127ca8048 | 46 | /* |
maximusismax | 0:566127ca8048 | 47 | //Loop through camera pixels |
maximusismax | 0:566127ca8048 | 48 | for(i=0;i<128;i++) |
maximusismax | 0:566127ca8048 | 49 | { |
maximusismax | 0:566127ca8048 | 50 | //If the pixel value exceeds our threshold, print a 1 |
maximusismax | 0:566127ca8048 | 51 | if (TFC_LineScanImage0[i] > CAM_THRESHOLD) |
maximusismax | 0:566127ca8048 | 52 | { |
maximusismax | 0:566127ca8048 | 53 | curr_line[i] = '1'; |
maximusismax | 0:566127ca8048 | 54 | width++; //Increment the width value |
maximusismax | 0:566127ca8048 | 55 | } |
maximusismax | 0:566127ca8048 | 56 | //Else, print a 0 |
maximusismax | 0:566127ca8048 | 57 | else |
maximusismax | 0:566127ca8048 | 58 | { |
maximusismax | 0:566127ca8048 | 59 | curr_line[i] = '0'; |
maximusismax | 0:566127ca8048 | 60 | } |
maximusismax | 0:566127ca8048 | 61 | } |
maximusismax | 0:566127ca8048 | 62 | printf("%s\n",curr_line); |
maximusismax | 0:566127ca8048 | 63 | |
maximusismax | 0:566127ca8048 | 64 | printf("Width: %d\n", width); |
maximusismax | 0:566127ca8048 | 65 | width = 0; |
maximusismax | 0:566127ca8048 | 66 | */ |
maximusismax | 0:566127ca8048 | 67 | |
maximusismax | 0:566127ca8048 | 68 | } |
maximusismax | 0:566127ca8048 | 69 | } |
maximusismax | 0:566127ca8048 | 70 | } |