Construção de um micro-robô autónomo Funções para programação do robô DETI: Geral: 1. Imprimir uma frase (string): void printStr(char *string); // Ex. printStr("Ola :)\n"); 2. Imprimir um valor inteiro: void printInt10(int val); // Ex. printInt(contador); 3. Esperar durante um tempo fixo: void wait(int tenth_seconds); // Ex. wait(15); LEDs: 1. Ligar / desligar 1 dos 4 LEDs da placa (0, 1, 2 ou 3): void setLed(int ledID); void resettled(int ledID); // Ex. setLed(0); // Ex. resetLed(1); Botões de pressão: 1. Ler o estado do botão “start” (preto): int startButton(void); // 0 – botao nao premido // 1 – botao premido 2. Ler o estado do botão “stop” (vermelho): int stopButton(void) // 0 – botao nao premido // 1 – botao premido Motores: 1. Comandar os motores: void setVel2(int leftSpeed, int rightSpeed); // speed ∈[-100, 100] // Ex. setVel2(20, -20); void stopMotors(void); // Pára os motores // Ex. stopMotors(); Sensores: 1. Ligar / desligar os sensores de obstáculos: void enableObstSens(void); void disableObstSens(void); // Ex. enableObstSens(); // Ex. disableObstSens(); 2. Ler os sensores: void readSensors(void); bool readBeacon(void); // Lê sensores (exc. farol e encoders) // Ex. readSensors(); // Lê sensor de farol (on/off) 3. Orientar sensor de farol: void setServoPos(int pos); // Orienta sensor de farol // pos ∈[-15, 15] Universidade de Aveiro - Dep. de Electrónica, Telecomunicações e Informática, 16-20/07/2012 Construção de um micro-robô autónomo 4. Obter o valor de um sensor de obstáculos: int obstacleSensor(int sensorID); // sensorID: OBST_SENSOR_LEFT // OBST_SENSOR_FRONT // OBST_SENSOR_RIGHT 5. Obter o valor de um sensor de linha: int lineSensor(int sensorID); // // // // // // sensorID: LINE_SENSOR_LEFT2 LINE_SENSOR_LEFT1 LINE_SENSOR_CENTER LINE_SENSOR_RIGHT1 LINE_SENSOR_RIGHT2 LINE_SENSOR_ALL 6. Ler o valor acumulado dos contadores associados aos dois encoders: void readEncoders(int *enc_mleft, int *enc_mright); // Após a leitura o valor do contador // é automaticamente colocado a zero Estrutura-base de um programa para o robô: #include "mr32.h" int main(void) { // variáveis declaradas AQUI: ... initPIC32(); while(TRUE) { // programa inserido AQUI: ... } return 0; } Universidade de Aveiro - Dep. de Electrónica, Telecomunicações e Informática, 16-20/07/2012