ALGORITMO EN ARDUINO
#include
/////////////////////////////////////////////////////////////////////////////////////
//************* Programa realizado por MARKO A.CABALLERO MORENO*************** //
// Solo para fines educativos //
// robot velocista mini FK BOT V 2.0
//
// micro motores pololu MP 10:1, sensores qtr 8rc, driver drv8833, arduino nano
//05/12/2014
// ACTUALIZADO 29/3/2015
//
/////////////////////////////////////////////////////////////////////////////////////
#define NUM_SENSORS 8 //numero de sensores usados
#define TIMEOUT
2000 //tiempo de espera para dar resultado en uS
#define EMITTER_PIN 6
//pin led on
///////////////pines arduino a utilizar/////////////////////
#define led1
13
#define led2
4
#define mot_i
7#define mot_d
8
#define sensores
6
#define boton_1
2 //pin para boton
#define pin_pwm_i
9
#define pin_pwm_d
10
QTRSensorsRC qtrrc((unsigned char[]) {19, 18, 17, 16,15,14,11,12}
,NUM_SENSORS,TIMEOUT, EMITTER_PIN);
//variables para almacenar valores de sensores y posicion
unsigned int sensorValues[NUM_SENSORS];
unsigned int position=0;
/// variables para el pid
int derivativo=0,proporcional=0, integral=0; //parametros
int salida_pwm=0, proporcional_pasado=0;
//AQUI CAMBIEREMOS LOS PARAMETROS DE NUESTRO ROBOT
int velocidad=120; //variable para la velocidad, el maximo es 255
floatKp=0.18, Kd=4, Ki=0.001; //constantes
//variable para escoger el tipo de linea
int linea=0; // 0 para lineas negra, 1 para lineas blancas
//
void setup()
{
delay(800);
pinMode(mot_i, OUTPUT);//pin dedireccion motor izquierdo
pinMode(mot_d, OUTPUT);//pin de direccion motor derecho
pinMode(led1, OUTPUT); //led1
pinMode(led2, OUTPUT); //led2
pinMode(boton_1, INPUT); //boton 1 como pull up
for (int i =0; i < 40; i++) //calibracion durante 2.5 segundos,
{
//para calibrar es necesario colocar los sensores sobre la superficie negra y luego
digitalWrite(led1, HIGH); //la blanca
delay(20);...
Regístrate para leer el documento completo.