De conformidad con el Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo de 27 de abril de 2016 relativo a la protección de las personas físicas en lo que respecta al tratamiento de datos personales y a la libre circulación de estos datos y (Reglamento General de Protección de Datos) ofrecemos la posibilidad de aceptar o no el uso de cookies mientras navega por nuestro sitio web. Puede obtener más información en nuestra web
El espacio exclusivo de robótica educativa
Todo sobre productos Mobile, Connect, Outdoor y Robótica Educativa
Mini Lab Proyecto: Demo de todos los componentes
Published in Robótica - 15 Septiembre 2017

Ejercicio:

  • Con el potenciómetro regula el brillo de un LED y los grados que se mueve el servo motor.
  • Con el Botón, enciendes y apagas un LED, así como haces sonar el buzzer con el fragmento de una canción.
  • Con el sensor de luz, enciendes y apagas un LED dependiendo de si tiene luz o no.
  • En la pantalla LCD muestra: el valor de lectura del sensor de luz, la posición actual del servomotor en formato de grados y un mensaje personalizado.

Material:

  • 1 x MiniLab
  • 1 x PC

Cómo funciona la placa Build&Code 4in1 en el Minilab:

Para este proyecto utilizarás los pins digitales y analógicos del MiniLab.

  • Pins digitales se sitúan en la parte izquierda de la placa Build&Code 4in1. El código de color es Negro (GND), Rojo (VCC) y Amarillo (Digital I/O Signal). Encontrarás 12 conectores numerados del 2 al 13, de los cuales 7 pueden suministrar señal de salida PWM, indicados con este símbolo ~ al lado del número.
  • Pins analógicos se sitúan en la parte derecha de la placa Build&Code 4in1. El código de color es Negro (GND), Rojo (VCC) y Azul (Analog Input). Encontrarás 5 conectores numerados del A0 al A5.
  • Transmisión de datos del PC a la placa Build&Code 4in1, coloca el interruptor BLT/USB en modo USB y conecta el cable USB – Micro USB en la placa Build&Code 4in1 y el PC.
  • Alimentación de la placa Build&Code 4in1. La placa Build&Code 4in1 la puedes alimentar conectandola a un PC utilizando el cable USB. O mediante el conector jack de alimentación y en este caso debes de encender la placa utilizando el interruptor ON/OFF, situado en la parte superior de la placa.

Explicación de los diferentes sensores del Mini Lab

  • LED rojo y verde: es un Diodo Emisor de Luz (Light Emitting Diode), en este caso los colores que emite es un LED rojo y el otro verde. En el programa los LED rojo y verde serán controlados por: el potenciómetro, que regula tanto el brillo del LED; por el sensor de luz, que encenderá y apagará el LED dependiendo si no hay o si luz exterior.
    Estos componentes pueden ir conectados en cualquiera de los pines digitales de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar los pines digitales donde estén conectados como salida (Output).
  • LED RGB: es la unión de tres LEDs de los colores básicos (rojo, verde y azul) en un encapsulado común. Con el programa, en función de la tensión que pongas en cada pin, podrás conseguir la mezcla de color que deseas con relativa sencillez. En el programa, el LED RGB será controlado por el botón que lo encenderá o lo apagará. Este componente puedes conectarlo en cualquiera de los pines digitales PWM de la placa Build&Code 4in1.
    Para programar el LED RGB, previamente debes descargar, desde este enlace, e instalar una librería específica en Arduino IDE, la cual llamarás Adafruit_NeoPixel-mastery seguirás los pasos indicados en el programa.
  • Pulsador (Botón) es una lámina conductora que establece contacto con los dos terminales al oprimir el botón, y un muelle que hace recobrar a la lámina su posición primitiva al cesar la presión sobre el botón pulsador. Este componente puedes conectarlo en cualquiera de los pines digitales de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar el pin digital donde vaya conectado como entrada (Input)
  • Servo motor es un motor eléctrico de corriente continua pero en vez de transformar la energía eléctrica en un giro continuo, está diseñado para moverse en un ángulo fijo en respuesta a una señal de control, y se mantendrá fijo en esa posición.
    Este componente puedes conectarlo en cualquiera de los pines digitales PWM de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar el pin digital PWM donde esté conectado como salida PWM.
  • Sensor de luz es un sensor analógico, con el cual puedes detectar cambios de luz muy pequeños. Este componente puedes conectarlo en cualquiera de los pines analogicos de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar el pin analógico donde esté conectado como entrada (Input).
  • Potenciómetro es una resistencia variable, la cual varía su valor en función del sentido del giro de la maneta. Este componente puedes conectarlo en cualquiera de los pines analogicos de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar el pin analógico donde esté conectado como entrada (Input).
  • Buzzer es un timbre eléctrico que produce un sonido o zumbido continuo o intermitente de un mismo tono (generalmente agudo). En el programa el buzzer reproducirá un fragmento de una canción, la cual se activará al pulsar el botón. Este componente puedes conectarlo en cualquiera de los pines digitales de la placa Build&Code 4in1. Para programar su funcionamiento debes configurar como salida (Output) el pin digital donde esté conectado.
  • Pantalla LCD (sigla del inglés Liquid Crystal Display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora.
    Este componente tienen que ir conectado el SDA en el A4 y el SCL en el A5. Para poder programar la pantalla, previamente debes descargar, desde este enlace, e instalar una librería específica a la cual la nombraras LiquidCristal_I2Cy seguirás los pasos indicados en el programa.

Tabla de conexiones de los sensores a la placa Build&Code 4in1

Programación

Escribirás los 4 ejercicios en un mismo programa. Para que cuando tengas montado el Mini Lab puedas probarlos a la vez.

Programa Arduino IDE

#include <Wire.h>
#include <LiquidCrystal_I2C.h>// LIBRERÍA PANTALLA LCD
#include <Servo.h>// LIBRERÍA DEL SERVO MOTOR
#include <Adafruit_NeoPixel.h>//LIBRERÍA LED RGB
#define PIXEL_PIN 6 //PIN DEL LED RGB
#define PIXEL_COUNT 16 // LED RGB

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // CONFIGURACIÓN DEL LED RGB
LiquidCrystal_I2C lcd(0x27, 16, 2); // CONFIGURACIÓN DE LA PANTALLA
Servo motor; // VARIABLE DEL SERVO MOTOR
int pot = 0, pinpot = A1; //VARIABLES PINS DEL POTENCIÓMETRO
float degree; // VARIABLE DE GRADOS DEL SERVO MOTOR
int valuepuls = 0, pinpuls = 4; // VARIABLE Y PIN DEL BOTÓN
int led1 = 10, led2 = 3, led3 = 6, brightness; // PINS Y VARIABLE DE LOS LEDS
int pinBuzzer = 5; // PIN DEL BUZZER
int pinlight = A0, luz; // SENSOR DE LUZ LDR

void setup() {
  
//CONFIGURACIÓN DEL LED RGB
strip.begin();
strip.show(); 

//CONFIGURACIÓN DE LA PANTALLA LCD
lcd.begin();
lcd.setCursor(9, 8); 
lcd.print("ebotics");

//CONFIGURACIÓN DEL SERVO MOTOR
motor.attach (9);

//CONFIGURACIÓN DE LOS LEDS
pinMode ( led1, OUTPUT);
pinMode ( led2, OUTPUT);
pinMode ( led3, OUTPUT);

//CONFIGURACIÓN DEL PULSADOR
pinMode ( pinpuls, INPUT);

}

void loop() {  
// SI PULSAS EL BOTÓN, SE ENCENDERÁ EL LED3 Y EL BUZZER EMITIRÁ UNA CANCIÓN
valuepuls = digitalRead (pinpuls); 
if ( valuepuls == HIGH) // BOTÓN NO PULSADO
{
  colorWipe(strip.Color(0, 0, 0), 0); //COLOR DEL LED RGB (strip.Color(RED, GREEN, BLUE),0). A CADA COLOR LE DEBES ASIGNAR UN NÚMERO ENTRE 0 Y 255, COMBINANDO LOS TRES COLORES PODRÁS CREAR CUALQUIER COLOR

}
else // BOTÓN SÍ PULSADO
{
  colorWipe(strip.Color(60, 0, 60), 0);
   //NOTA01 // REPRODUCE LA CANCIÓN POR EL BUZZER
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 100);
    delay(75);    
    //NOTA 02
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 100);
    delay(75);    
    //NOTA 03
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 100);
    delay(150);
    //NOTA 04
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 100);
    delay(150);    
    //NOTA 05
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 100);
    delay(50);    
    //NOTA 06
    noTone(pinBuzzer);
    tone(pinBuzzer, 770, 100);
    delay(150);
    //NOTA 07
    noTone(pinBuzzer);
    tone(pinBuzzer, 380, 100);
    delay(275);    
    //NOTA 08
    noTone(pinBuzzer);
    tone(pinBuzzer, 510, 100);
    delay(287);    
    //NOTA 09
    noTone(pinBuzzer);
    tone(pinBuzzer, 380, 100);
    delay(225);
    //NOTA 10
    noTone(pinBuzzer);
    tone(pinBuzzer, 320, 100);
    delay(200);    
    //NOTA 11
    noTone(pinBuzzer);
    tone(pinBuzzer, 440, 100);
    delay(250);    
    //NOTA 12
    noTone(pinBuzzer);
    tone(pinBuzzer, 480, 80);
    delay(150);
    //NOTA 13
    noTone(pinBuzzer);
    tone(pinBuzzer, 450, 100);
    delay(165);    
    //NOTA 14
    noTone(pinBuzzer);
    tone(pinBuzzer, 430, 100);
    delay(75);    
    //NOTA 15
    noTone(pinBuzzer);
    tone(pinBuzzer, 380, 100);
    delay(150);
    //NOTA 16
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 80);
    delay(100);
    //NOTA 17
    noTone(pinBuzzer);
    tone(pinBuzzer, 760, 50);
    delay(100);    
    //NOTA 18
    noTone(pinBuzzer);
    tone(pinBuzzer, 860, 100);
    delay(75);
    //NOTA 19
    noTone(pinBuzzer);
    tone(pinBuzzer, 700, 80);
    delay(150);    
    //NOTA 20
    noTone(pinBuzzer);
    tone(pinBuzzer, 760, 50);
    delay(75);    
    //NOTA 21
    noTone(pinBuzzer);
    tone(pinBuzzer, 660, 80);
    delay(175);
    //NOTA 22
    noTone(pinBuzzer);
    tone(pinBuzzer, 520, 80);
    delay(150);    
    //NOTA 23
    noTone(pinBuzzer);
    tone(pinBuzzer, 580, 80);
    delay(75);    
    //NOTA 24
    noTone(pinBuzzer);
    tone(pinBuzzer, 480, 80);
    delay(75);
    //NOTA 25
    noTone(pinBuzzer);
    tone(pinBuzzer, 510, 100);
    delay(175);    
    //NOTA 26
    noTone(pinBuzzer);
    tone(pinBuzzer, 380, 100);
    delay(275);    
    //NOTA 27
    noTone(pinBuzzer);
    tone(pinBuzzer, 320, 100);
    delay(200);
}

// REPRODUCIR EL GIRO DEL POTENCIÓMETRO EN LOS GRADOS DEL SERVOMOTOR Y EL BRILLO DEL LED2.
pot = analogRead (pinpot); // LECTURA DEL VALOR DEL POTENCIÓMETRO
degree = map (pot, 0,1023, 10, 180); //ESCALAR LOS VALORES DEL POTENCIÓMETRO CON LOS GRADOS DEL SERVO MOTOR
motor.write (degree); 
brightness = map (pot, 0,1023, 0, 255); //ESCALAR LOS VALORES DEL POTENCIÓMETROS CON EL BRILLO DEL LED
analogWrite (led2,brightness);

//LEER LA INTENSIDAD DE LUZ DEL SENSOR DE LUZ Y ENCENDER O APAGAR EL LED1 EN FUNCIÓN DE UN VALOR MEDIO
luz = analogRead( pinlight); // LECTURA DE LA INTENSIDAD DE LUZ DEL SENSOR DE LUZ
if (luz > 500) // SI EL VALOR ES SUPERIOR A 500
{
  digitalWrite ( led1, LOW); // LED1 = OFF
}
else // SI ES MÁS PEQUEÑO DE 500
{
  digitalWrite ( led1, HIGH); // LED1 = ON
}

// MOSTRAR POR LA PANTALLA LCD LOS VALORES DEL SENSOR DE LUZ Y LOS GRADOS DEL SERVO MOTOR
lcd.setCursor(0, 8);  
lcd.print("light=");  
lcd.setCursor(6, 8);  
lcd.print(luz);  
lcd.setCursor(0, 0);  
lcd.print("degree=");  
lcd.setCursor(7, 0);  
lcd.print(degree);  
lcd.setCursor(12, 0); 
lcd.print("");  
}

// FUNCION PARA EL COLOR DEL LED RGB
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

Programa mBlock

Sobre la placa Build&Code 4in1:

Descubre más kits Ebotics:

Escribe un comentario
* Campos obligatorios