This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:examples:sensor:lidar [2012/06/04 15:35] – heikopikner | en:examples:sensor:lidar [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| //Necessary knowledge: [HW] [[en: | //Necessary knowledge: [HW] [[en: | ||
| + | ===== Theory ===== | ||
| - | [{{ | + | [{{ : |
| - | + | ||
| - | + | ||
| - | ===== Theory ===== | + | |
| LIDAR (Light Detection and Ranging) is an optical remote sensing system which can measure the distance of a target by illuminating it with light. LIDAR technology is being used in Robotics for the perception of the environment as well as object classification. The ability of LIDAR technology to provide 2D elevation maps of the terrain, high precision distance to the ground, and approach velocity can enable safe landing of robotic and manned vehicles with a high degree of precision. | LIDAR (Light Detection and Ranging) is an optical remote sensing system which can measure the distance of a target by illuminating it with light. LIDAR technology is being used in Robotics for the perception of the environment as well as object classification. The ability of LIDAR technology to provide 2D elevation maps of the terrain, high precision distance to the ground, and approach velocity can enable safe landing of robotic and manned vehicles with a high degree of precision. | ||
| Line 69: | Line 67: | ||
| Decimal Form: | Decimal Form: | ||
| - | Following example shows how to initiate Lidar and measure | + | Following example shows how to initiate Lidar and get the count of package. |
| <code c> | <code c> | ||
| - | |||
| #include < | #include < | ||
| #include < | #include < | ||
| Line 78: | Line 76: | ||
| #include < | #include < | ||
| - | // | + | // Defining |
| - | // Determining | + | |
| - | // | + | |
| usart port = USART(0); | usart port = USART(0); | ||
| - | // | + | // Defining button |
| - | // | + | |
| - | // | + | |
| pin button1 = PIN(C, 0); | pin button1 = PIN(C, 0); | ||
| pin button2 = PIN(C, 1); | pin button2 = PIN(C, 1); | ||
| - | |||
| - | // | ||
| // Initialize | // Initialize | ||
| - | // | ||
| static inline void init() | static inline void init() | ||
| { | { | ||
| - | // Button init | + | // Setting buttons pins as inputs. |
| - | pin_setup_input_with_pullup(button1); | + | pin_setup_input_with_pullup(button1); |
| - | pin_setup_input_with_pullup(button2); | + | pin_setup_input_with_pullup(button2); |
| - | // LCD init | + | // Set-up of the LCD. |
| - | lcd_gfx_init(); | + | lcd_gfx_init(); |
| - | + | | |
| - | // Clear screen | + | lcd_gfx_clear(); |
| - | lcd_gfx_clear(); | + | |
| - | + | lcd_gfx_backlight(true); | |
| - | // Turn on backlight. | + | |
| - | lcd_gfx_backlight(true); | + | lcd_gfx_goto_char_xy(3, |
| - | + | lcd_gfx_write_string(" | |
| - | // Print program | + | |
| - | lcd_gfx_goto_char_xy(3, | + | |
| - | lcd_gfx_write_string(" | + | |
| - | // The set-up of the USART interface. | + | // The set-up of the USART interface. |
| - | usart_init_async | + | usart_init_async |
| - | ( | + | ( |
| - | port, | + | port, |
| - | USART_DATABITS_8, | + | USART_DATABITS_8, |
| - | USART_STOPBITS_ONE, | + | USART_STOPBITS_ONE, |
| - | USART_PARITY_NONE, | + | USART_PARITY_NONE, |
| - | USART_BAUDRATE_ASYNC(9600) | + | USART_BAUDRATE_ASYNC(9600) |
| - | ); | + | ); |
| - | + | ||
| - | + | ||
| - | + | ||
| } | } | ||
| - | //***************************************************************************** | + | // Main program |
| - | // | + | |
| - | //MAIN | + | |
| - | // | + | |
| - | // | + | |
| int main(void) | int main(void) | ||
| { | { | ||
| - | unsigned char new_value1, old_value1 = 0, new_value2, | + | unsigned char new_value1, new_value2, old_value1 = 0, old_value2 = 0; |
| - | old_value2 = 0; | + | |
| char c; | char c; | ||
| Line 144: | Line 124: | ||
| init(); | init(); | ||
| - | + | // Endless cycle | |
| while (1) | while (1) | ||
| { | { | ||
| - | + | // Reads buttons | |
| - | // Reads a button | + | |
| new_value1 = pin_get_debounced_value(button1); | new_value1 = pin_get_debounced_value(button1); | ||
| new_value2 = pin_get_debounced_value(button2); | new_value2 = pin_get_debounced_value(button2); | ||
| - | // Button S1 is pressed | + | // Button S1 is pressed. |
| if((!new_value1) && (old_value1)) | if((!new_value1) && (old_value1)) | ||
| { | { | ||
| Line 167: | Line 146: | ||
| } | } | ||
| - | // Nupp S2 alla vajutatud | + | // Button |
| if((!new_value2) && (old_value2)) | if((!new_value2) && (old_value2)) | ||
| { | { | ||
| - | //Send " | + | //Send "0x 02 00 02 00 20 25 35 08" to stop scanning. |
| - | + | ||
| usart_send_char(port, | usart_send_char(port, | ||
| usart_send_char(port, | usart_send_char(port, | ||
| Line 180: | Line 158: | ||
| usart_send_char(port, | usart_send_char(port, | ||
| usart_send_char(port, | usart_send_char(port, | ||
| - | |||
| } | } | ||
| - | |||
| - | // Jätab eelmised nupuväärtused meelde | + | // Remembers the last keys values. |
| old_value1 = new_value1; | old_value1 = new_value1; | ||
| old_value2 = new_value2; | old_value2 = new_value2; | ||
| - | |||
| // Try to read serial port | // Try to read serial port | ||
| if (usart_try_read_char(port, | if (usart_try_read_char(port, | ||
| { | { | ||
| - | //Find a header "0x 02 80 D6 02 B0 69 41" | + | // Find a header "0x 02 81 D6 02 B0 69 41" |
| + | // Very basic package start search. | ||
| if(c == 0x02) i++; | if(c == 0x02) i++; | ||
| if(c == 0x81) i++; | if(c == 0x81) i++; | ||
| Line 200: | Line 176: | ||
| if(c == 0x69) i++; | if(c == 0x69) i++; | ||
| if(c == 0x41) i++; | if(c == 0x41) i++; | ||
| - | |||
| //If there is an header | //If there is an header | ||
| Line 208: | Line 183: | ||
| count++; | count++; | ||
| - | //and print it on LCD. | + | //Displaying packet count on the LCD. |
| lcd_gfx_goto_char_xy(0, | lcd_gfx_goto_char_xy(0, | ||
| Line 217: | Line 192: | ||
| i=0; | i=0; | ||
| } | } | ||
| - | |||
| } | } | ||
| - | |||
| } | } | ||
| } | } | ||
| - | |||
| - | |||
| - | |||
| - | |||
| </ | </ | ||
| - | |||