Crystalino – Ejemplos de programas

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.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.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.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.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.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.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.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.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.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);
}
Volver página principal del robot Crystalino
Share Button
Follow us on Facebook Follow us on Twitter
  • SUSCRIBETE

    Suscríbete a nuestro boletín informativo para estar puntualmente informado de nuestros cursos, talleres, eventos y novedades.
  • Próximos eventos

    No hay próximos eventos actualmente.

A ver si adivinas que utilizamos en este sitio? Aquí tienes el ladrillo en cuestión por si quieres leerlo