martes, 16 de febrero de 2021

BRAZO ROBÓTICO

 Presentación


Video Simulación




Video Demostrativo








Sistema de Frenado


SISTEMA DE FRENADO

DESCRIPCIÓN

El proyecto consiste en la programación de un prototipo de sistema de frenado para vehículos utilizando Arduino UNO y otros componentes descritos más adelante.

El prototipo se basa en un servo que adoptará diferentes posiciones definidas en el código dependiendo de la distancia a la que esté el obstáculo, este dato lo proporcionará un sensor de ultrasonidos. Además se han incorporado estímulos lumínicos (LEDs de colores que brillarán en función de la distancia siguiendo el código de color estandarizado) y auditivos (mediante un zumbador que sonará con mayor frecuencia cuando la distancia al obstáculo sea crítica).



CONTEXTO

4º de ESO tanto en la rama de académicas como de aplicadas.

  • Académicas:
    • Bloque 1: Electrónica Aplicada.
    • Bloque 2: Control y Robótica.
  • Aplicadas:
    • Bloque 3: Electrónica.
    • Bloque 4: Control y Robótica.

ESQUEMA


COMPONENTES

  • Arduino UNO
  • Protoboard
  • Sensor de Ultrasonidos
  • Servo
  • Buzzer Pasivo
  • 3 x LEDs
    • LED verde
    • LED amarillo
    • LED rojo
  • 3 x Resistencias 220 Ω
  • Cables

IMÁGENES



DESCARGAS

CÓDIGO COMENTADO

PROGRAMA

CREADOR/A

Ester Martín Rodríguez

Asignatura: Innovación Docente en la Especialidad de Tecnología

Máster Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas (Universidad de Salamanca)



SIMULADOR DE TENIS CON ARDUINO


DATOS

Alumno:         Ignacio del Castillo Sáez.
Asignatura: Innovación Docente en la Especialidad de Tecnología.
Máster:            Máster Universitario en Profesor de Educación Secundaria Obligatoria
                        y Bachillerato, Formación Profesional y Enseñanzas de idiomas.
Centro:            Universidad de Salamanca.
Curso: 2020/2021


CONTEXTO

El siguiente proyecto se puede realizar para alumnos de 4º de E.S.O. de la asignatura de Tecnología tanto en Académicas como en Aplicadas.

Para el caso de académicas está relacionado con:

  • Bloque 1. Electrónica aplicada.

En el caso de Aplicadas está relacionado con:

  • Bloque 1. Tecnologías de la Información y de la Comunicación.

  • Bloque 3. Electrónica.


FUNCIONAMIENTO

El objetivo del sistema es recrear, de manera intuitiva, el intercambio de golpes en un partido de tenis. La trayectoria de la pelota se recrea a través de la hilera de LED colocada en la protoboard. De esta manera, el LED iluminado simula la posición parcial de la pelota dentro del campo, siguiendo una trayectoria lineal de un extremo del campo al otro.

En cada extremo del campo hay un LED amarillo que se ilumina como advertencia para devolver la pelota al otro jugador.  Un pulsador colocado a cada lado del campo acciona el comando para “devolver” la pelota al otro lado del campo.

En caso de que alguno de los dos jugadores no accione el pulsador en el momento indicado se encenderá la luz roja de su lado del campo indicando el fallo. Además, el fallo se comunicará con una señal acústica emitida por un zumbador pasivo.


ESQUEMA DEL CIRCUITO

A continuación se muestra el esquema del circuito realizado en Tinkercad*.



* En Tinkercad se han utilizado dos placas para la mejor comprensión del esquema.


MATERIALES UTILIZADOS

  • Arduino uno

  • Protoboard

  • LED verde (x11)

  • LED amarillo (x2)

  • LED rojo (x2)

  • Resistencia 220Ω (x15)

  • Resistencia 10KΩ (x2)

  • Pulsadores (x2)

  • Zumbador pasivo

  • Cables para circuito

  • Cable puerto USB


MONTAJE FINAL





CÓDIGO FUENTE


Para acceder al código fuente de Arduino pincha en el siguiente enlace.

Estación Meteorológica

 Componentes

Sensor Temperatura y Humedad

Sensor IR

Mando IR

Pantalla LCD

Conectores

Arduino UNO 3R

Esquema eléctrico


Funcionamiento 

Al pulsar el botón Power del mando, se activa el sensor de Temperatura, apareciendo por pantalla los datos de Temperatura y Humedad del ambiente.

Cuando pulsamos cualquier otro botón se desactiva el sensor de Temperatura y Humedad apareciendo en pantalla "Apagado".




https://youtu.be/itu1dZ45MGc






Código

#include <DHT.h>

#include <LiquidCrystal.h>

#include <IRremote.h>

int dhtPin=4;

int receiver = 5;



LiquidCrystal lcd (7,8,9,10,11,12);

DHT dht (dhtPin, DHT11);

IRrecv irrecv(receiver);     // create instance of 'irrecv'

decode_results results;


void setup() {

  lcd.begin(16,2);

  Serial.begin(9600);

  dht.begin ();

  delay(500);

  Serial.begin(9600);

  Serial.println("IR Receiver Button Decode"); 

  irrecv.enableIRIn(); 


}


void loop() {

  if (irrecv.decode(&results)){

    Serial.println(results.value, HEX);

  if (results.value==0xFFA25D){

     float humidity= dht.readHumidity();

     float temperature= dht.readTemperature();

     float temperatureF=dht.readTemperature (true);

        if (isnan (humidity) || isnan (temperature)|| isnan (temperatureF)){

           Serial.println ("Error en la lectura del sensor");

           lcd.setCursor (0,0);

           lcd.print ("Error en sensor");

            return;

            }

  float hic =dht.computeHeatIndex (temperature, humidity, false);

  float hif= dht.computeHeatIndex (temperatureF, humidity);

lcd.setCursor (0,0); 

lcd.print ("humedad ");


lcd.setCursor (8,0);

lcd.print (humidity);


lcd.setCursor (14,0);

lcd.print ("%");


lcd.setCursor (0,1);

lcd.print("temperat");


lcd.setCursor (9,1);

lcd.print (temperature);


lcd.setCursor (15,1);

lcd.print ("C");


Serial.print("Humidity: ");

Serial.print(humidity);

Serial.print("%Temperature: ");

Serial.print(temperature);

Serial.print("C");

Serial.print (temperatureF);

Serial.print("F Heat Index: ");

Serial.print (hic);

Serial.print ("C");

Serial.print (hif);

Serial.println ("F");


irrecv.resume(); 

}

else {

lcd.setCursor (0,0);

lcd.print("Apagado"); 

lcd.setCursor (8,0);

lcd.print ("         ");

lcd.setCursor (0,1);

lcd.print ("                ");

irrecv.resume();


}

}

delay (100);

}














 CONTROL CLIMÁTICO DE UN INVERNADERO.



El control climático en invernadero se realiza mediante ventilación pasiva y ventilación forzada, así como mediante el uso de agua para bajar la temperatura por nevulización (fog system). 

En este proyecto se obtiene información en tiempo real sobre temperatura y humedad ambiental (sonda 1), así como sobre la humedad del suelo (sonda 2), esta última conectada a una entrada analógica para calibrar la humedad del suelo entre 1 (suelo encharcado) y 1024 (suelo completamente seco). 

Con estos datos programamos el motor servo, que activaría la ventilación pasiva mediante la apertura de ventanas por encima de 24ºC así como un motor de corriente continua para la ventilación forzada cuando no es suficiente con la apertura de ventanas, en este caso se activaría con temperaturas superiores a 27ºC. Para el movimiento del ventilador (motor) se ha colocado un transistor para dotar de la potencia necesaria al mismo sin necesidad de usar alimentación complementaria (un transistor puede actuar como amplificador de corriente y como interruptor). http://www.practicasconarduino.com/manualrapido/transistores.html

El objetivo es mantener la temperatura siempre entre los 18 y 24ºC (temperatura óptima de crecimiento de la mayoría de cultivos).

Por otra parte hemos colocado un led que nos avisa cuando la humedad del terreno es inferior a la necesaria para el óptimo crecimiento de los cultivos. De esta forma sabemos cuando hay que regar. En un futuro el objetivo es controlar el selenoide de una electroválvula (motor que activa el paso de agua por la tubería para el riego), a partir del propio arduino mediante un relé, de esta manera completaríamos la automatización del sistema.

Sensor de aparcamiento con luz y sonido


Autoría y datos


Olalla María Bastida Dalia.
Universidad de Salamanca (España).
Máster Universitario de Profesorado de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas, especialidad en Tecnología. 
Curso -2020/2021.
Asignatura - Innovación docente en la especialidad de Tecnología.

Descripción del proyecto


Se trata de un sensor de aparcamiento que se pone en funcionamiento cuando el sensor detecta un cuerpo a menos de 60 centímetros. 

Contexto


Este proyecto se pude aplicar a las asignaturas de Tecnología de 4º de ESO, tanto a la rama de Aplicadas como a la de Académicas.

La relación con los bloques es la siguiente:

-Aplicadas:
    Bloque 1: Electrónica aplicada.
    Bloque 2: Control y Robótica.

-Académicas:
    Bloque 3: Electrónica.
    Bloque 4: Control y Robótica.

Componentes



1. Cables suficientes para realizar todas las conexiones
2. 3 LEDs (Rojo, Amarillo y Verde)
3. 1 Zumbador pasivo
4. 1 Potenciómetro de 10 kW
5. a) 1 resistencia de 220  para la pantalla LCD
    b) 3 resistencias de 220 W cada una para cada LED
6. 1 Protoboard
7. 1 Pantalla LCD
8. 1 Sensor ultrasónico HC-SR04
9. 1 Placa de Arduino ELEGOO UNO R3

Esquema


Esquema del proyecto diseñado en Tinkercad


Funcionamiento


Cuando ponemos en funcionamiento el proyecto, se puede observar como en la pantalla LCD sale marcada la distancia en centímetros del primer cuerpo que detecta el sensor. 

Cuatro casos que pueden suceder:

1. El cuerpo que detecta el sensor se encuentra a una distancia de más de 60 cm de este:
En este caso, solo se mostraría en la pantalla LCD a que distancia del sensor se encuentra dicho cuerpo.

2. El cuerpo que detecta el sensor se encuentra a una distancia entre 60 y 30 cm de este:
Se encendería el LED verde y el zumbador empezaría a emitir el sonido "1".

3. El cuerpo que detecta el sensor se encuentra a una distancia entre 30 y 10 cm de este:
Se encendería el LED amarillo y el zumbador empezaría a emitir el sonido "2".

4. El cuerpo que detecta el sensor se encuentra a una distancia de menos de 10 cm de este:
Se encendería el LED rojo y el zumbador empezaría a emitir el sonido "3".

Hay que tener en cuenta que en todos los casos la pantalla LCD mostrará la distancia a la que se encuentre el cuerpo del sensor en centímetros.

Código fuente


Enlace de descarga:
https://drive.google.com/file/d/1rNkqOCasxGvbOBAf1FA6eENJOgG8Jvpi/view?usp=sharing



Montaje final










Contenedor Inteligente

 

Contenedor inteligente con Arduino y ThingSpeak

DATOS

Master Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas.

Universidad de Salamanca

Asignatura: Innovación Docente en la Especialidad de Tecnología.

Curso: 2020/2021

Autor: Álvaro Lozano Murciego

CONTEXTO 

La actividad se enmarca como un proyecto a desarrollar a lo largo de varias sesiones en la asignatura de Tecnología de 4ºESO de Aplicadas. Se parte de unos conocimientos mínimos previos de electrónica y se podrá enseñar programación con Arduino y temas más avanzados relacionados con la conexión con servicios de Internet.

Se encuentra enmarcado en el Bloque Robótica y Control.

ENUNCIADO

El objetivo de este proyecto es el desarrollo de un contenedor "inteligente" que presente las siguientes características:

  • Se pueda abrir su tapa sin contacto y sin esfuerzo: Se accionará con un sensor de ultrasonidos cuando la distancia con un obstáculo sea menor que cierto valor.
  • Monitorice y muestre el nivel de llenado y lo publique en un sitio web: el porcentaje de llenado deberá estar accesible tanto de forma online como localmente en el propio dispositivo.

MATERIALES NECESARIOS Y REQUISITOS PREVIOS

Para llevar a cabo el siguiente proyecto serán necesarios los siguientes materiales:
  • 1 x Cubo de basura comercial: shorturl.at/AHIW5. La idea principal es modificarlo para hacerlo "inteligente" con distintos sensores. Este apartado es libre.
  • 1 x Sensor de ultrasonidos HC-SR04: Tendrá la función de sensor de distancia para aproximar el porcentaje del contenedor, en este caso el sensor apuntará hacia el interior del contendor para tal fin.
  • 1 x Sensor de distancia Time of Flight (ToF): Se trata de un sensor de distancia más preciso que el de ultrasonidos y sin tanto rango de apertura. Este sensor será el empleado para accionar la apertura de la tapa del contenedor si se detecta una distancia menor a un umbral definido.

  • 1 x MicroServo 9g : Este actuador será el encargado de abrir la tapa del contenedor.



  • 1 x M5Stick C Plus: En este caso se empleará este dispositivo como microcontrolador. Este dispositivo esta basado en el microcontrolador ESP32 (de la empresa Espressiff) y forma parte de la empresa M5Stack, empresa de hardware electrónico educativo. La diferencia fundamental con Arduino UNO (ATMega328p) consiste en que el microcontrolador ESP32 posee conexión WiFi y Bluetooth BLE, un factor que lo hace perfecto para Internet de las Cosas (IoT) a la vez de su bajo coste, unos 5 euros un ESP32. Por lo demás, es posible utilizar el Core de Arduino (el lenguaje de programación Arduino y sus bibliotecas) con este microcontrolador. Para instalar esta placa en el IDE de Arduino es sumamente sencillo, basta seguir los pasos que se indican AQUI. Una vez instalado ya podemos seleccionar la placa en el IDE de Arduino. Una vez explicado qué es el ESP32, podemos abordar el M5Stick C Plus, dispositivo con distintos periféricos (Pantalla LED, Micrófono, Acelerómetro, etc.) Esto es muy útil ya que permite realizar muchas prácticas con el mismo dispositivo, sin embargo puede quedarse algo corto en cuanto a pines disponibles, M5Stack posee más dispositivos como el M5Stack Core Basic.

  • N x Cableado: Serán necesarios varios cables y jumpers para el prototipo en la protoboard y posteriormente para instalar el cableado en la papelera.
  • Pegamento termofusible: Necesario para fijar toda la parte de cableado y la caja en la parte de la tapa del contenedor.
Además de estos materiales, será necesario contar con el siguiente software/cuentas:
  • Arduino IDE y con placa ESP32 instalada:  Seguir los pasos descritos AQUI.
  • Cuenta en ThingSpeak: Será necesario crear una cuenta en https://thingspeak.com/ aquí podremos crear hasta 4 "channels" o canales donde podremos publicar la información del sensor. Con crear un solo canal será necesario. Posteriormente en el código se detallarán los pasos a seguir.
  • ThingSpeak Arduino: Será necesario instalar la biblioteca de ThingSpeak para Arduino en el IDE desde el gestor de bibliotecas.
  • M5Stick C Plus: Instalar la biblioteca con este nombre desde el gestor de bibliotecas.

DESCRIPCIÓN DE LOS MECANISMOS DEL PROTOTIPO Y DEL FUNCIONAMIENTO

La idea principal del proyecto consiste en conseguir desarrollar un programa que se accione un motor para poder abrir la tapadera durante unos segundos y posteriormente pasar a cerrarla. Por tanto, deberemos realizar un mecanismo con el que abrir la tapa como se muestra a continuación:


Por otro lado, el programa del microcontrolador también deberá medir la distancia desde la parte superior del contenedor de tal forma que se pueda aproximar el volumen de llenado del contenedor.

La información de llenado se enviará a ThingSpeak a través de una petición HTTP utilizando la biblioteca de Arduino para tal servicio. En ThingSpeak será necesario configurar un canal en el que recibir los datos y mostrar una visualización de éstos en una gráfica:

DISEÑO DEL CIRCUITO ELECTRÓNICO (TINKERCAD y Diagrams.net)



DIAGRAMA DE FLUJO DEL PROGRAMA



CÓDIGO ARDUINO, BIBLIOTECAS Y REPOSITORIO GITHUB

Bibliotecas Necesarias:

  • ESP32Servo
  • ThingSpeak Arduino ESP32
  • Wire
  • Wifi
Repositorio:

IMAGEN DEL PROTOTIPO




VIDEO DEMOSTRATIVO







lunes, 15 de febrero de 2021

Contador de tráfico mediante Arduino

Autor: Fernando Martín Pérez
Idea del Proyecto
Se ha ideado una herramienta que controla el número de vehículos que circula por una calle, de tal manera que se automatiza la cuenta de vehículos que circulan para poder realizar estudios y estadísticas.

Funcionamiento
Se incrustará en el centro del carril de la calzada una resistencia LDR (debidamente protegida para que en caso de que un vehículo la atraviese con las ruedas, no sea dañada). Cuando no circula ningún vehículo, la resistencia al paso de la corriente a través de ella es baja porque le llega la iluminación de la calle, por lo que Arduino considerará que está recibiendo una señal "HIGH".
En el momento que un coche circula por encima, le llegará muy poca iluminación, por lo que la resistencia será muy elevada, y arduino considerará que está recibiendo una señal "LOW".
Cuando recibe una señal "LOW", Arduino contará al coche y sumará el paso de un nuevo coche.

Para evitar desajustes, se han añadido dos pulsadores, uno restará el paso de coches, y otro lo sumará; es decir, si un coche atraviesa el sensor y por cualquier motivo Arduino no lo ha detectado, se puede añadir manualmente que ha pasado un coche. A su vez, si pasa una persona por encima (por ejemplo si atraviesa mal la calle y justo por el lector), con el seggundo pulsador se puede restar un paso por el lector.

A cada paso de vehículo, se encenderá un LED, que nos indicará que el sistema ha realizado una lectura correcta, y si se resta una lectura, se encenderá otro LED, para comprobar que se ha realziado correctamente esta sustracción.

Asimismo, para evitar exceso de cableado que dificulte la operación del sistema y visualización de datos, se opta por aprovechar las características de las placas protoboard y no emplear cables con banana, sino cables colocacdos a medida que permitan utilizar únicamente bananas para conectar la placa Arduino a la protoboard.

Materiales
  • 1 o 2 placas protoboard
  • 1 placa Arduino
  • 1 pantalla LCD Arduino
  • 1 potenciómetro 10 kohmios
  • 2 LED
  • 1 resistencia LDR
  • 2 pulsadores
  • 3 resistencias de 10 kohmios
  • 1 resistencia de 1 kohmio
  • cables necesarios para realizar conexiones 
Esquema conexionado
El esquema de conexiones es el siguiente:


Imágenes del montaje








Vídeo demostrativo



Código
El código, explicado mediante comentarios, es el siguiente:


#include <LiquidCrystal.h>
//Incluye la librería para utilizar la pantalla LCD

 

 

LiquidCrystal lcd(7,6,5,4,3,2); //Define los pines a utilizar de la pantalla LCD

 

//Se declaran las variables necesarias

int LED1=0;

int LED2=1;

int BOTON1=8;

int BOTON2=9;

int val1;

int val2;

const int LDR1 = 12;

int vehiculos=0;

 

 

//Setup, se desarrolla solo una vez, al inicio

void setup() {

 //Se especifica si los pines van a ser de salida o entrada

pinMode(LED1,OUTPUT);

pinMode(BOTON1,INPUT);

pinMode(LED2,OUTPUT);

pinMode(BOTON2,INPUT);

pinMode(LDR1, INPUT);

 

//Se inicializa el uso de pantalla LCD

lcd.begin(16,2);

 

//Loop, se desarrolla en bucle constantemente

}

void loop() {

 //Muestra en la pantalla LCD cuántos vehículos han pasado

lcd.setCursor(0,0);

lcd.print("Vehículos:");

lcd.setCursor(0,1);

lcd.print(vehiculos);

 

//Variables para controlar el estado de los pulsadores

val1=digitalRead(BOTON1);

val2=digitalRead(BOTON2);

 

//Variable que nos dice si la LDR está recibiendo luz (HIGH), u oscuridad (LOW)

int value1 = digitalRead(LDR1);

 

 

//Bucle if para contar un vehículo si se atraviesa la LDR

if (value1 == LOW)

 {

  vehiculos=vehiculos+1;

  digitalWrite(LED1,HIGH);

  delay(1000);

  digitalWrite(LED1,LOW);

 }

 

//Bucle if para contar un vehículo si se pulsa el pulsador de sumar un vehículo y encender el LED de vehículo contado

if(val1==HIGH)

{

  vehiculos=vehiculos+1;

  digitalWrite(LED1,HIGH);

  delay(1000);

  digitalWrite(LED1,LOW);

  }

 

else { digitalWrite(LED1,LOW);

}

 

//Bucle if para restar un vehículo si se pulsa el pulsador de restar y encender el LED de vehículo restado

if(val2==HIGH)

{

  vehiculos=vehiculos-1;

  digitalWrite(LED2,HIGH);

  delay(1000);

  digitalWrite(LED2,LOW);

  }

 

else { digitalWrite(LED1,LOW);

}

 

}

DISPENSADOR DE GOLOSINAS AUTOMÁTICO



PROYECTO DE DISPENSADOR AUTOMÁTICO DE GOLOSINAS CON ARDUINO





INFORMACIÓN PRELIMINAR:

Máster Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas (MUPES)
Universidad de Salamanca

Asignatura: Innovación Docente en la Especialidad de Tecnología

Curso: 2020/2021



TRABAJO REALIZADO POR:

Abel Olmedo Rodríguez 


CONTEXTO ADECUADO:

Este proyecto puede resultar adecuado para cualquier curso de Secundaria en la asignatura de Tecnología, ya sea en 1º de ESO, en 3º de ESO como en 4º de ESO, tando en la modalidad de Académicas como de Aplicadas. 

También puede ser adecuado para  la asignatura de Tecnología industrial I y II, de 1º y 2º de Bachillerato respectivamente.

En particular se propone para el 4º curso de ESO de la asignatura de Tecnología modalidad Académicas para el bloque de Control y robótica.
  

DESCRIPCIÓN DEL FUNCIONAMIENTO:

El funcionamiento se basa en que mediante un pulsador, se dispensan pequeñas gominolas de manera automática. El pulsador hace girar a un servomotor el cual está solidarizado con un pequeño cilindro con una oquedad en un lateral. 

Al alinearse esta oquedad con una perforación en el envase de las golosinas, caen por gravedad al interior del cilindro una cantidad controlada de las mismas. 

Posteriormente, el cilindro gira en sentido contrario para dejarlas caer por una rampa que desemboca en un pequeño recipiente para que las golosinas puedan ser tomadas.

En estado normal podemos apreciar un led RGB que luce con una tonalidad azul y una pantalla LCD que nos muestra la frase "¿QUIERE GOLOSINAS? - SON GRATIS". 

Cuando se acciona el pulsador y el cilindro comienza a girar, el led RGB, que en estado normal luce azul, se torna rojo advirtiendo de que el servomotor está trabajando acompañado a su vez de la pantalla LCD mencionada en la cual en esta ocasión se puede leer el mensaje "EN PROCESO... ESPERE".

El funcionamiento termina cuando el servomotor acaba de realizar todos los movimientos programados y habiendo depositado ya las golosinas en el recipiente final. En este momento en la pantalla LCD se puede leer la frase "AQUÍ TIENE SUS RICAS GOLOSINAS" acompañado de un parpadeo del led RGB, esta vez con tonalidad verde, apoyado a su vez por varios sonidos de un zumbador, advirtiendo de que todo el proceso ha terminado y puede recoger las golosinas.


El proyecto cuenta también con otra posibilidad manual, mediante el accionamiento de un joystick en el eje y. Los movimientos serían los equivalentes a la modalidad automática pero abarcando directamente desde 0 a 90 y 180º , es decir solo en dos movimientos, desde reposo a 90º, giraría a 0º para recoger golosinas y después moviendo el joystick hacia el lado contrario el servomotor giraría hasta los 180 º, dejando caer las golosinas a la rampa inferior.

En este caso no seactivaría ningún otro elemento, pueso que está pensado explusivamente para un accionamiento manunal llegado el caso de que el mecanismo se atascase.



VIDEO:







ESQUEMA DEL CIRCUITO EN TINKERCAD:







COMPONENTES DE ARDUINO UTILIZADOS:

  • Placa protoboard
  • Placa ARDUINO
  • Potenciómetro
  • Joystick
  • Pulsador
  • Zumbador
  • Servomotor
  • Pantalla LCD
  • Led RGB
  • Resistencias 220
  • Cables


MATERIALES UTILIZADOS PARA LA MAQUETA:

  • Tableros DM
  • Tornillería 3x25mm para madera
  • Silicona termofusible
  • Varilla roscada 4mm
  • Arandelas metálicas 4mm
  • Tuercas hexagonales 4mm
  • Poliestireno extruido
  • Bote de galletas saladas
  • Lata de atún


FOTOGRAFÍAS DEL MONTAJE DEL CIRCUITO:





























CÓDIGO ARDUINO:

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);


#include <Servo.h>

    Servo Abel;


#include "pitches.h"

    int melody[] = {

    NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};

    int duration = 500;  // 500 miliseconds


const int SW_pin = 4; // digital pin connected to switch output

const int X_pin = A0; // analog pin connected to X output

const int Y = 0; // analog pin connected to Y output


#define BLUE 3

#define GREEN 5

#define RED 6

 

void setup() {

pinMode(SW_pin, INPUT);

digitalWrite(SW_pin, HIGH);

Serial.begin(9600);


Abel.attach(2);

delay(10);


lcd.begin(16, 2);

lcd.print("QUIERE GOLOSINAS");


pinMode(RED, OUTPUT);

pinMode(GREEN, OUTPUT);

pinMode(BLUE, OUTPUT);


digitalWrite(RED, HIGH);

digitalWrite(GREEN, HIGH);

digitalWrite(BLUE, HIGH);

}

 int redValue;

int greenValue;

int blueValue;

 

void loop() {

if (digitalRead(SW_pin) == HIGH)

{

    Serial.print("Switch:  HIGH-->");

    Serial.print(digitalRead(SW_pin));

}


if (digitalRead(SW_pin) == LOW)

{

    lcd.begin(10, 2);

    lcd.print(" EN PROCESO...");

    lcd.setCursor(0, 1);

    lcd.print("     ESPERE     ");


    digitalWrite(RED, HIGH);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);


    Abel.write(90);

    delay(2000);

    Abel.write(45);

    delay(2000);

    Abel.write(0);

    delay(2000);

    Abel.write(45);

    delay(2000);

    Abel.write(180);

    delay(2000);

    Abel.write(90);

    delay(2000);


    lcd.begin(3, 2);

    lcd.print(" AQUI TIENE SUS");

    lcd.setCursor(0, 1);

    lcd.print("RICAS GOLOSINAS");


    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);


    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    Serial.print("Switch:  LOW-->");

    Serial.print(digitalRead(SW_pin));

    lcd.begin(3, 2);

    lcd.print("QUIERE GOLOSINAS");

}


int position_Y= analogRead(Y);

int angulo = map(position_Y, 0, 1023, 0, 180);

Abel.write(angulo);

delay(10);

Serial.print("Switch:  ");

Serial.print(digitalRead(SW_pin));

Serial.print("\n");

Serial.print("X-axis: ");

Serial.print(analogRead(X_pin));

Serial.print("\n");

Serial.print("Y-axis: ");

Serial.println(analogRead(Y));

Serial.print("\n\n");

delay(100);


lcd.setCursor(3, 1);

lcd.print("SON GRATIS");


digitalWrite(RED, LOW);

digitalWrite(GREEN, LOW);

digitalWrite(BLUE, HIGH);

}