Promobot Education

Logo

Платформы

RoboxКомплект из сервопривода и датчика расстояния

RookyРука-манипулятор

V.4Лабораторный стенд Promobot

Программное обеспечение

RRStudioПростое написание алгоритмов

TestDevicesТестирование оборудования и проверка связи

Настройка WSL2Windows Subsystem for Linux

Поддержка

TelegramНаписать в чат технической поддержки


Перейти в профиль на GitHub

Пример работы с датчиком расстояния. Цикличный опрос.

// Включение необходимых библиотек:
// Библиотека для работы с датчиком расстояния
#include "Ranger.h"

// Модуль для инициализации шины передачи данных
#include "bus_handler.h"

// Объявление структуры данных для чтения значений с датчика.
// Структура имеет вид:
// struct sensor_data {
//    uint8_t US_distance;
//    uint8_t IR_distance;
// };
struct sensor_data data;

// Выставление адреса датчика расстояния. По умолчанию - 1
int sensor_addr = 1;

int main()
{
  // Инициализация последовательного порта для работы с датчиком. 
  // Вывод отладочной информации отключен.
  // Порт по умолчанию для ubuntu - /dev/RS_485
  if (init_port("/dev/RS_485",false) < 0)
  {
    return -1;
  }

  while(1)
  {
    // Отправка команды на измерение расстояния
    trig_sensor(sensor_addr);

    // Ожидание отражения сигналов измерения
    // Расчет времени = (макс.дист. / скорость звука) * 2, таким образом (2.5 / 343)*2 = 0.014 секунды
    usleep(10000);

    // Чтение измеренных значений расстояния
    data = read_sensor(sensor_addr);

    // Вывод измеренных расстояний
    printf("Data from sensor: \n");  
    printf("US_diatance: %i\n",data.US_distance);
    printf("IR_distance: %i\n\n",data.IR_distance);
  }
  return 0; 
}