Cordial Saludo,
Adjunto link para ayuda en el entendimiento de Matlab.
http://www.sc.ehu.es/sbweb/energias-renovables/MATLAB/simbolico/algebra/algebra.html
http://www.sc.ehu.es/sbweb/energias-renovables/MATLAB/numerico/ecuaciones/matrices_1.html
http://www.aragon.unam.mx/investigacion/CIMA/Eventos/Memoria7/Ponencia%20Luis%20Lorenzo.pdf
viernes, 26 de agosto de 2016
sábado, 20 de agosto de 2016
CODIGO EJEMPLO PARA VALIDACION DE BIFURCACION EN ROBOT LABERINTO
Cordial Saludo,
Apreciados estudiantes, expongo código para lo mencionado en la Asignatura Microcontroladores II.
Tener en cuenta los comentarios allí expuestos:
/*
Seguidor de Linea con sesores QTR-8RC o digitales
0= NEGRO
1= BLANCO
IMPORTANTE LEER LINEAS 52 Y 61
*/
#include <QTRSensors.h>
#define NUM_SENSORS 6 // Numero de Sensores a Usar
#define TIMEOUT 2000
#define EMITTER_PIN 38 // Pin de LEDON
#define HIST 300 // Valor de fluctuacion de sensores
QTRSensorsRC qtrrc((unsigned char[]) {2,3,4,5,6,7}, //Pines donde van conectados los sensores
NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
unsigned int sensores = 0;
unsigned int estado1=0;
unsigned int estado2=0;
void setup(){
Serial.begin(9600);
delay(2000);
}
void loop(){
leersensores();
//Determinar dependiendo de las posibilidades
switch (sensores) {
case B110011: //adelante
adelante();
break;
case B100111: //izquierda
case B001111:
case B110111:
case B101111:
case B011111:
izquierda();
break;
case B111001: //derecha
case B111100:
case B111011:
case B111101:
case B111110:
derecha();
break;
case B000111: //llego a bifurcacion que usted programa Aca delimita el codigo para el antes
case B000011:
bifurcacion();
imprime();
break;
}
}
void imprime(){
Serial.println("La medicion para la viburcacion (aqui describen en tipo) es:");
Serial.print("Antes: ");
Serial.println(estado1,BIN);
Serial.print("Despues: ");
Serial.println(estado2,BIN);
}
void bifurcacion(){
estado1 = sensores;
adelante();
delay(100);
leersensores();
estado2 = sensores;
parar();
}
void parar(){
analogWrite(5,0);
analogWrite(3,0);
analogWrite(9,0);
analogWrite(6,0);
}
void adelante(){
analogWrite(5,0);
analogWrite(3,200);
analogWrite(9,0);
analogWrite(6,200);
}
void izquierda(){
analogWrite(9,0);
analogWrite(6,200);
analogWrite(5,0);
analogWrite(3,50);
}
void derecha(){
analogWrite(9,0);
analogWrite(6,50);
analogWrite(5,0);
analogWrite(3,200);
}
void leersensores(){ //Determinar dependiendo de cuantos sensores utiliza
qtrrc.read(sensorValues);
sensores = 0;
for (int i=0;i<=7;i++){
if (sensorValues[i]<HIST)
bitClear(sensores,i);
else
bitSet(sensores,i);
}
//Serial.println(sensores,BIN);
}
Apreciados estudiantes, expongo código para lo mencionado en la Asignatura Microcontroladores II.
Tener en cuenta los comentarios allí expuestos:
/*
Seguidor de Linea con sesores QTR-8RC o digitales
0= NEGRO
1= BLANCO
IMPORTANTE LEER LINEAS 52 Y 61
*/
#include <QTRSensors.h>
#define NUM_SENSORS 6 // Numero de Sensores a Usar
#define TIMEOUT 2000
#define EMITTER_PIN 38 // Pin de LEDON
#define HIST 300 // Valor de fluctuacion de sensores
QTRSensorsRC qtrrc((unsigned char[]) {2,3,4,5,6,7}, //Pines donde van conectados los sensores
NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
unsigned int sensores = 0;
unsigned int estado1=0;
unsigned int estado2=0;
void setup(){
Serial.begin(9600);
delay(2000);
}
void loop(){
leersensores();
//Determinar dependiendo de las posibilidades
switch (sensores) {
case B110011: //adelante
adelante();
break;
case B100111: //izquierda
case B001111:
case B110111:
case B101111:
case B011111:
izquierda();
break;
case B111001: //derecha
case B111100:
case B111011:
case B111101:
case B111110:
derecha();
break;
case B000111: //llego a bifurcacion que usted programa Aca delimita el codigo para el antes
case B000011:
bifurcacion();
imprime();
break;
}
}
void imprime(){
Serial.println("La medicion para la viburcacion (aqui describen en tipo) es:");
Serial.print("Antes: ");
Serial.println(estado1,BIN);
Serial.print("Despues: ");
Serial.println(estado2,BIN);
}
void bifurcacion(){
estado1 = sensores;
adelante();
delay(100);
leersensores();
estado2 = sensores;
parar();
}
void parar(){
analogWrite(5,0);
analogWrite(3,0);
analogWrite(9,0);
analogWrite(6,0);
}
void adelante(){
analogWrite(5,0);
analogWrite(3,200);
analogWrite(9,0);
analogWrite(6,200);
}
void izquierda(){
analogWrite(9,0);
analogWrite(6,200);
analogWrite(5,0);
analogWrite(3,50);
}
void derecha(){
analogWrite(9,0);
analogWrite(6,50);
analogWrite(5,0);
analogWrite(3,200);
}
void leersensores(){ //Determinar dependiendo de cuantos sensores utiliza
qtrrc.read(sensorValues);
sensores = 0;
for (int i=0;i<=7;i++){
if (sensorValues[i]<HIST)
bitClear(sensores,i);
else
bitSet(sensores,i);
}
//Serial.println(sensores,BIN);
}
Suscribirse a:
Entradas (Atom)