Skip to content

Commit ac93540

Browse files
committed
Debuggeando siguiente
1 parent 1af0af2 commit ac93540

6 files changed

Lines changed: 91 additions & 40 deletions

File tree

Codigo/RobotAlgoritmica/Cnosos.cpp

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@
1313

1414
#include "Cnosos.h"
1515

16-
//Constructor
16+
//Constructores
1717
Cnosos::Cnosos(Robot r, byte bits) {
1818
robot = r;
1919
BITS = bits;
2020
}
21+
//Constructor por defecto
22+
Cnosos::Cnosos(){
23+
Cnosos(Robot(), 255);
24+
}
2125
//Destructor
2226

2327

@@ -33,50 +37,51 @@ byte Cnosos::siguiente() {
3337
centro = SENSOR_CENTRO;
3438
dcha = SENSOR_DCHA;
3539
if (izda && centro && dcha) {
40+
//Se confirma que es una cinta atravesada
41+
delay(TIEMPO_CONFIRMACION);
3642
Serial.println("Todos activados");
37-
if (SENSOR_IZDA && SENSOR_CENTRO && SENSOR_DCHA) {
38-
// cinta atravesada confirmada
39-
bit = 1;
40-
sigo = false;
43+
// cinta atravesada confirmada
44+
bit = 1;
45+
sigo = false;
46+
while(SENSOR_IZDA && SENSOR_CENTRO && SENSOR_DCHA) {
47+
//Mientras haya cinta atravesada, sigue alante
48+
robot.alante();
4149
}
4250
} else if (!izda && !centro && !dcha) {
51+
//TODO funciona raro, saltos entre sensores entran en esta categoria
4352
Serial.println("Ninguno activado");
44-
if (!SENSOR_IZDA && !SENSOR_CENTRO && !SENSOR_DCHA) {
53+
while(!SENSOR_IZDA && !SENSOR_CENTRO && !SENSOR_DCHA) {
54+
//Mientras haya hueco, sigue alante
55+
robot.alante();
56+
}
57+
//Si solo se activa el sensor del centro
58+
if (!SENSOR_IZDA && SENSOR_CENTRO && !SENSOR_DCHA) {
4559
// hueco confirmado
4660
bit = 0;
4761
sigo = false;
4862
}
63+
//Si se activa otro sensor, descartalo; ha sido un error
4964
}
50-
//No hay ni hueco ni cinta atravesada todavia. Avanza normalmente.
51-
else if (centro) {
65+
//Avanza normalmente a partir de ahora.
66+
if (centro) {
5267
robot.alante();
5368
} else if (izda) {
5469
robot.rotaIzda();
70+
Serial.println("Girando izda");
71+
//Espera a que se limpie el sensor izquierdo
72+
while(SENSOR_IZDA){ }
73+
//Mientras haya un hueco, ignoralo
74+
while(!SENSOR_IZDA && !SENSOR_CENTRO && !SENSOR_DCHA){ };
5575
} else if (dcha) {
5676
robot.rotaDcha();
77+
Serial.println("Girando dcha");
78+
//Espera a que se limpie el sensor derecho
79+
while(SENSOR_DCHA){ }
80+
//Mientras haya un hueco, ignoralo
81+
while(!SENSOR_IZDA && !SENSOR_CENTRO && !SENSOR_DCHA){ };
5782
}
83+
Serial.println("Otro bucle");
5884
}
59-
60-
// Bit identificado. Avanzamos hasta dejarlo atras.
61-
robot.alante();
62-
if (bit) {
63-
while (SENSOR_IZDA && SENSOR_CENTRO && SENSOR_DCHA);
64-
} else {
65-
while (!SENSOR_IZDA && !SENSOR_CENTRO && !SENSOR_DCHA);
66-
}
67-
68-
/*
69-
// Bit sobrepasado. Enderezamos si es preciso.
70-
while (SENSOR_IZDA || SENSOR_DCHA) {
71-
if (SENSOR_IZDA) {
72-
robot.rotaIzda();
73-
while (SENSOR_IZDA);
74-
} else if (SENSOR_DCHA) {
75-
robot.rotaDcha();
76-
while (SENSOR_DCHA);
77-
}
78-
}
79-
*/
8085
robot.para();
8186
Serial.println("Bit leido");
8287
delay(TIEMPO_PENSAR);
@@ -153,8 +158,8 @@ void lee_nodo_B(Cnosos* cn, byte crucesEncontrados, byte id,
153158
* al cruce por el que el robot ha empezado a investigar el nodo.
154159
*/
155160
void Cnosos::lee_nodo(byte &etiq, byte &grado, byte &entrada) {
156-
byte aux = lee_nodo_A(this, etiq);
157-
lee_nodo_B(this, aux, etiq, grado, entrada);
161+
byte crucesEncontrados = lee_nodo_A(this, etiq);
162+
lee_nodo_B(this, crucesEncontrados, etiq, grado, entrada);
158163
}
159164

160165
/*
@@ -189,16 +194,16 @@ void Cnosos::sal(byte aristaATomar, byte grado, byte posicionInicial) {
189194
//Descarta el identificador, no lo necesitamos ahora
190195
lee_numero();
191196
//La arista actual es 0 (no nos hemos saltado ninguna)
192-
aristaActual = 0;
197+
aristaSaltada = 0;
193198
}else{
194199
//El robot no esta en zona de identificadores
195200
//Si encuentra un identificador, error
196201
if (this->siguiente() == 0){
197202
this->error();
198203
}
199204
//El robot acaba de saltarse un cruce
200-
//La arista actual aumenta en 1
201-
aristaActual++;
205+
//La arista saltada aumenta en 1
206+
aristaSaltada++;
202207
}
203208
}
204209

Codigo/RobotAlgoritmica/Cnosos.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ class Cnosos {
2020
#define SENSOR_CENTRO robot.SIGUELINEAS.readCentro()
2121
#define SENSOR_DCHA robot.SIGUELINEAS.readDcha()
2222

23+
/// Se espera un pequeño tiempo para confirmar que se ha leido una marca y no es un fallo del circuito.
24+
#define TIEMPO_CONFIRMACION 0
25+
2326
/// Cada vez que tiene que procesar una entrada, el robot "pensara" (se quedara quieto) este numero de milisegundos.
2427
#define TIEMPO_PENSAR 500
2528
private:
@@ -28,7 +31,7 @@ class Cnosos {
2831
/// Numero de bits que usaran los nodos para identificarse.
2932
byte BITS;
3033
public:
31-
//Constructor
34+
//Constructores
3235
/**
3336
* Constructor de la libreria Cnosos.
3437
* No necesita inicializarse, dado que los parametros ya deberian estar inicializados.
@@ -44,6 +47,14 @@ class Cnosos {
4447
* Por defecto, se utilizaran 3 marcas para el identificador de cada nodo.
4548
*/
4649
Cnosos(Robot, byte = 3);
50+
//Constructor por defecto
51+
/**
52+
* Constructor que no necesita argumentos, y que permite inicializar un objeto Cnosos.
53+
* Las variables se inicializan a valores no recomendables como pines inaccesibles.
54+
* IMPORTANTE: Sustituir todas las instancias no inicializadas o inicializadas de esta manera
55+
* para que el modulo funcione como se espera.
56+
*/
57+
Cnosos();
4758
//Destructor
4859

4960

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include "Cnosos.h"
2+
3+
Robot robotActual;
4+
Cnosos cn;
5+
void setup(){
6+
robotActual = arduino;
7+
//robotActual = elegoo;
8+
9+
//Arduino
10+
Siguelineas siguelineas = Siguelineas(A0, A2, A4);
11+
//Morse morse = Morse(4, 's');
12+
13+
//Elegoo
14+
//Siguelineas siguelineas = Siguelineas(10, 4, 2);
15+
//Morse morse = Morse(13, 'l');
16+
17+
robotActual.SIGUELINEAS = siguelineas;
18+
//robotActual.MORSE = morse;
19+
robotActual.BLUETOOTH = Bluetooth();
20+
21+
22+
robotActual.inicializa();
23+
robotActual.SIGUELINEAS.inicializa();
24+
//robotActual.MORSE.inicializa();
25+
robotActual.BLUETOOTH.inicializa();
26+
27+
28+
cn = Cnosos(robotActual);
29+
cn.luce_numero(cn.lee_numero());
30+
}
31+
32+
void loop(){
33+
}

Codigo/RobotAlgoritmica/morse.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
class Morse{
2020
/// Frecuencia por defecto de la sirena, en hercios.
21-
#define DEFAULT_FREC_SIRENA 15000
21+
#define DEFAULT_FREC_SIRENA 18000
2222
/// Tiempo que va a estar la señal activa para representar una raya, en ms.
2323
#define TIEMPO_RAYA 300
2424
/// Tiempo que va a estar la señal activa para representar un punto, en ms.

Codigo/RobotAlgoritmica/robot.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Robot::Robot(byte pinIzdaAlante, byte pinIzdaAtras, byte pinDchaAlante, byte pin
3030
TIEMPO_ARRANQUE = tiempoArranque;
3131
}
3232
Robot::Robot(){
33-
Robot(255, 255, 255, 255, 255, 255, 0);
33+
Robot(255, 255, 255, 255, 255, 255, 255);
3434
}
3535
//Destructores
3636

Codigo/RobotAlgoritmica/robot.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Robot {
3333
/// Direccion actual del robot. Se encuentra parado por defecto.
3434
Direccion dirActual = dirNull;
3535

36+
3637
protected:
3738
/// Tiempo que necesita arrancar el robot, en milisegundos.
3839
byte TIEMPO_ARRANQUE;
@@ -66,7 +67,7 @@ class Robot {
6667
/// Modulo bluetooth
6768
Bluetooth BLUETOOTH;
6869

69-
//Constructores
70+
//Constructores
7071
/**
7172
* Inicializa un robot cuyo driver tiene 4 entradas para 8 cables de motores.
7273
* @param Pin motor izquierdo hacia alante
@@ -91,7 +92,7 @@ class Robot {
9192
*/
9293
Robot();
9394
//Destructores
94-
95+
9596

9697
//Inicializar
9798
/**
@@ -202,7 +203,8 @@ class Robot {
202203
void rotaDcha(byte = VELOCIDAD_GIRO);
203204
};
204205

205-
/* OBJETOS YA DISEÑADOS */
206+
207+
/* ROBOTS MODELO */
206208
/// Configuracion de los robots Arduino
207209
const Robot arduino(255, 12, 255, 13, 10, 11, 80); //El pin 255 es inaccesible,
208210
//y permite escribir "digitalWrite"s sin afectar al funcionamiento del robot

0 commit comments

Comments
 (0)