Ejemplo 01: Blink Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//************************************ // Robot Crystalino // // Blink Crystalino. Realiza un parpadeo con el LED RGB // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); } void loop() { // Muestra el color rojo en el RGB muestra_rgb(ROJO); delay(500); // Muestra el color negro (apaga) en el RGB muestra_rgb(NEGRO); delay(500); } |
Ejemplo 02: Colores Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
//************************************ // Robot Crystalino // // Colores Crystalino. Realiza una secuencia de colores en LED RGB // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); } void loop() { // Muestra el color rojo en el RGB muestra_rgb(ROJO); delay(500); // Muestra el color verde en el RGB muestra_rgb(VERDE); delay(500); // Muestra el color azul en el RGB muestra_rgb(AZUL); delay(500); // Muestra el color blanco en el RGB muestra_rgb(BLANCO); delay(500); // Muestra el color amarillo en el RGB muestra_rgb(AMARILLO); delay(500); // Muestra el color cian en el RGB muestra_rgb(CIAN); delay(500); // Muestra el color magenta en el RGB muestra_rgb(MAGENTA); delay(500); // Muestra el color negro (apagado) en el RGB muestra_rgb(NEGRO); delay(500); } |
Ejemplo 03: Mueve Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
//************************************ // Robot Crystalino // // Movimientos Crystalino. Realiza una secuencia de movimientos básicos // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte pulsador espera_pulsado(); beep(); } void loop() { //Avanaza robot Crystalino y muestra color verde mueve_crystalino(100); muestra_rgb(VERDE); delay(2000); //Para robot Crystalino y muestra color rojo para_crystalino(); muestra_rgb(ROJO); delay(2000); //Retrocede robot Crystalino y muestra color verde mueve_crystalino(-100); muestra_rgb(VERDE); delay(2000); //Para robot Crystalino y muestra color rojo para_crystalino(); muestra_rgb(ROJO); delay(2000); //Gira robot Crystalino y muestra color verde gira_crystalino(100); muestra_rgb(VERDE); delay(2000); //Para robot Crystalino y muestra color rojo para_crystalino(); muestra_rgb(ROJO); delay(2000); //Gira robot Crystalino y muestra color verde gira_crystalino(-100); muestra_rgb(VERDE); delay(2000); //Para robot Crystalino y muestra color rojo para_crystalino(); muestra_rgb(ROJO); delay(2000); } |
Ejemplo 04: Sigue líneas Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//************************************ // Robot Crystalino // // Sigue líneas Crystalino. Hace que el robot sigua una línea negra sobre un fondo blanco // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte pulsador espera_pulsado(); beep(); //Muestra color verde muestra_rgb(VERDE); } void loop() { //Controla el moviento del motor de la izquierda //con la información del sensor de suelo de la izquierda del robot if(analogRead(SUELO_IZQ)>500) mueve_motor(0, MOTOR_IZQ); else mueve_motor(100, MOTOR_IZQ); //Controla el moviento del motor de la derecha //con la información del sensor de suelo de la derecha del robot if(analogRead(SUELO_DER)>500) mueve_motor(0, MOTOR_DER); else mueve_motor(100, MOTOR_DER); } |
Ejemplo 05: Sumo Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//************************************ // Robot Crystalino // // Sumo Crystalino. Juega al sumo en un campo blanco delimitado por una línea negra. // Detecta al contrario mediante el sensor de distancias por ultrasonidos. // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte el pulsador espera_pulsado(); beep(); } void loop() { //Si detecta al contrario, avanza a por él //en caso contrario, gira esperándolo if(distancia_crystalino() < 15) { mueve_crystalino(100); muestra_rgb(VERDE); delay(100); } else { gira_crystalino(40); muestra_rgb(ROJO); } //Retrocede si encuentra el borde if(analogRead(SUELO_IZQ)>500) { mueve_crystalino(-100); delay(1000); } } |
Ejemplo 06: Mantiene distancia Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//************************************ // Robot Crystalino // // Mantiene distancia Crystalino. Usa el control proporcional para mantener // una distancia constante respecto de un objeto, usando las medidas del sensor // de distancias por ultrasonidos. // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" #define DISTANCIA 10 // Distancia del objeto #define KP 10 // Constante del control proporcional int medida, velocidad; void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte el pulsador espera_pulsado(); beep(); //Muestra color verde muestra_rgb(VERDE); } void loop() { //Mide la distancia al objeto medida = distancia_crystalino(); //Calcula la velocidad usando el control proporcional velocidad = (medida - DISTANCIA) * KP; //Mueve el robot mueve_crystalino(velocidad); //Esperamos a que el movimiento pueda tener lugar delay(100); } |
Ejemplo 07: Cuenta líneas Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
//************************************ // Robot Crystalino // // Mantiene distancia Crystalino. Usa el control proporcional para mantener // una distancia constante respecto de un objeto, usando las medidas del sensor // de distancias por ultrasonidos. // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" #define LINEAS 2 //número de lineas a contar void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte el pulsador espera_pulsado(); beep(); //Muestra color verde muestra_rgb(VERDE); } void loop() { //Variable para almacenar el número de líneas detectadas int contador; // Mueve a la línea inicial detctando con el sensor izquierdo mueve_crystalino(100); while (analogRead(SUELO_IZQ) < 500); while (analogRead(SUELO_IZQ) > 500); //Recorre el número de líneas for (contador = 0; contador < LINEAS; contador ++) { while (analogRead(SUELO_IZQ) < 500); while (analogRead(SUELO_IZQ) > 500); beep(); } //Paramos el robot para_crystalino(); muestra_rgb(ROJO); delay(500); triple_beep(); //Detenemos la ejecución del programa (bucle infinito) while (true); } |
Ejemplo 08: Saca piezas Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
//************************************ // Robot Crystalino // // Saca piezas Crystalino. Usaando el campo de pruebas, saca las piezas // que se encuentran dentro del círculo de sumo // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" void setup() { //Inicializa el robot Crystalino ini_crystalino(); //Espera se apriete y suelte el pulsador espera_pulsado(); beep(); //Muestra color verde muestra_rgb(VERDE); } void loop() { int contador; // Mueve a la línea inicial detctando con el sensor izquierdo mueve_crystalino(100); while (analogRead(SUELO_IZQ) < 500); while (analogRead(SUELO_IZQ) > 500); //Avanza hasta la segunda línea del campo for (contador = 0; contador < 2; contador ++) { while (analogRead(SUELO_IZQ) < 500); while (analogRead(SUELO_IZQ) > 500); beep(); } //Gira 90º, ajustar delay si es necesario gira_crystalino(100); delay(800); //Entra en el círculo mueve_crystalino(100); while (analogRead(SUELO_IZQ) < 500); while (analogRead(SUELO_IZQ) > 500); beep(); //Saca las piezas del círculo while (true) { if (analogRead(SUELO_IZQ) > 500) { mueve_crystalino(-100); delay(500); gira_crystalino(100); delay(random(500,2000)); } mueve_crystalino(100); } } |
Ejemplo 09: Control remoto Crystalino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
//************************************ // Robot Crystalino // // Saca piezas Crystalino. Usaando el campo de pruebas, saca las piezas // que se encuentran dentro del círculo de sumo // // Nov-2018 www.prueba.complubot.com //************************************ // Librería de funciones del robot Crystalino #include "Crystalino.h" // Librería de funciones del control remoto #include <IRremote.h> // Configura el receptor del control remoto const int RECV_PIN = 4; IRrecv irrecv(RECV_PIN); decode_results results; unsigned long key_value = 0; void setup() { // Inicializa el receptor del control remoto irrecv.enableIRIn(); irrecv.blink13(true); //Inicializa el robot Crystalino ini_crystalino(); //Inicializa puerto serie para visualizar los códigos recibidos, si así se desea Serial.begin(9600); //Espera se apriete y suelte el pulsador espera_pulsado(); beep(); //Muestra color rojo muestra_rgb(ROJO); } void loop() { // Lee el código recibido while (irrecv.decode(&results)) { // Detecta pulsación mantenida if (results.value == 0XFFFFFFFF) results.value = key_value; // Envía código por el puerto serie Serial.println(results.value, HEX); // Interpreta código (tecla pulsada) switch (results.value) { // 2 - Avanza case 0xFF629D: mueve_crystalino(100); muestra_rgb(VERDE); delay(300); break ; // 4 - Gira izquierda case 0xFF22DD: gira_crystalino(-100); muestra_rgb(VERDE); delay(300); break ; // 6 - Gira derecha case 0xFFC23D: gira_crystalino(100); muestra_rgb(VERDE); delay(300); break ; // 8 - Retrocede case 0xFFA857: mueve_crystalino(-100); muestra_rgb(VERDE); delay(300); break ; // Para robot default: para_crystalino(); muestra_rgb(ROJO); break ; } key_value = results.value; irrecv.resume(); } // Para el robot si no se envía ninguna orden para_crystalino(); muestra_rgb(ROJO); } |