PROYECTOS FÁCILES CON ARDUINO


esta vez lo que haremos es una serie de proyectos que no requieren de mucho presupuesto y son de dificultad fácil - intermedia -difícil y en ese orden, pero que a la vez no saldrían  tan costosos de realizarse. esta entrada va a tener prioridad debido a que tendremos la siguiente mecánica:


  •  cada día se actualizara esta pagina: debido a que usaremos cosas que aun no hemos visto se publicaran el contenido necesario para entender lo que se hace en los proyectos; por lo tanto cada día se publicara un nuevo proyecto, avanzando de la dificultad fácil a la difícil/compleja  
  • los proyectos tendrán sus enlaces de descarga, pero serán un día después de su publicación (se pide comprensión)
  • se creara otra pagina donde se colocaran los diagramas y los planos por separado para hacer mas fácil al usuario acceder a ellos sin necesidad de recorrer toda la entrada para buscarlo  
  • se creara una nueva sección al final de cada proyecto llamada "sección de preguntas"  


MATERIALES GENERALES:

  • arduino (UNO, NANO, MEGA, ETC.) 
  • protoboard 
  • cables para hacer los puentes
  • resistencias (puede ser de 1K, etc)
  • LED'S
  • LCD 16x2**
**el LCD tal vez sea lo único que su coste sea un poco elevado, pero nos sera de gran ayuda para los proyectos de dificultad intermedia y difícil. 

una vez ya visto eso empecemos:

DIFICULTAD FÁCIL
esta sección consta de 10 proyectos fáciles que puedes hacer solo con el arduino y unos cuantos LEDS pero en este veremos mas programación y menos hardware, aunque en esencia es fácil, solo usaremos lo siguiente(por si no los dominas bien, checa las entradas anteriores):

  • variables 
  • función IF
  • función FOR
  • DELAY
  • puerto Serial
  • monitor Serial(se usara en lugar de la LCD)
  • sub-rutinas 
  • uso de los puertos digitales
  • uso de los puertos análogos
  • uso de los puertos PWM
algunos no los vimos a fondo y por ello esta entrada se actualizara continuamente mientras se publica la demás información.

PROYECTO 1:luces  policiales    

a pesar de que no tengo imaginación para los nombres, este es el proyecto mas sencillo y barato de hacer, en términos de programación lo catalogaría como básica, funciona de la siguiente manera:

al encender el arduino el LEDA se encienda y se apague cuando el LEDB se encienda:

**esquema de funcionamiento:

es importante resaltar que la duración del encendido/apagado de los leds depende del tamaño del delay. como es fácil el código no se requiere de diagrama de flujo

**esquema electrónico:



como observarán el diagrama es el mismo que vimos en la entrada de "FUNCIÓN IF"
aunque el botón es innecesario, por ahora

**codigo:

para empezar declaremos las variables:

const int LED1 = 13;
const int LED2 = 12;
int var = 1000;

ahora iniciamos con el Setup

void Setup(){
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);

}

seguimos con el LOOP:

  • una forma de lograr el propósito del programa seria solamente usar las funciones digitales:


void loop(){

digitalWrite(LED1, HIGH);//enciende el led1
digitalWrite(LED2, LOW);//apaga el led2
delay(var);
digitalWrite(LED1, LOW);//apaga el led1
digitalWrite(LED1, HIGH);//enciende el led2
delay(var);
}
como se observa el propósito se cumple, pero es muy básica; aunque como vimos es muy fácil de hacer.
**codigo completo

const int LED1 = 13;
const int LED2 = 12;
int var = 1000;

void Setup(){
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);

}

void loop(){

digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
delay(var);
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
delay(var);
}
montaje del circuito


SECCIÓN DE PREGUNTAS
¿crees que es la única forma de cumplir ese propósito?

¿como podrías usar la función IF para cumplir ese propósito?

¿existe una forma de reducir el código y cumplir ese propósito?



PROYECTO 2: JUEGO DE VARIABLES V1

este proyecto tiene como fin reforzar nuestro conocimiento y el uso posible que le podemos dar a las variables por medio de un sistema de condicionales tipo IF

**esquema del circuito:

es el mismo de las entradas anteriores.

**descripción del proyecto:


cuando arranque el programa deberemos presionar 10 veces el BOTON1 para poder encender el LED1 y si se presiona mas veces, se apague el LED1

para lograr esto recordemos de las funciones IF se usan como condicionales y este nos sera muy útil, pero antes de pasar al código debemos tener en cuenta que si bien requeriremos al menos 3 variables diferentes, pero ¿como se haria?

la respuesta es simple:

  • una variable contendrá el  estado del botón:
  • otra variable contendrá el  numero de veces que pulsamos el botón 
  • y la ultima tendrá el numero de veces que se requiere presionar el botón para hacer algo.
  ya sabemos que para almacenar en una variable en un botón se necesita lo siguiente:

var = digitalRead(BOTON);

-donde (var) es el nombre de la primera variable
-donde (BOTON) es el nombre del pin que se usara para el botón

Es sencillo almacenar la variable, pero para hacer el contador de las veces que pulsamos el botón requiere de la función IF y seria de la siguiente manera:

if(var == HIGH){

lop = lop + 1;
}

donde lop es el nombre de la segunda variable para el contador

entonces cuando se presiona el botón se suma 1 a la variable llamada lop, cada vez que se presione el botón se le sumara a la variable lop. solo falta una cosa ¿como hacemos que a X numero de pulsaciones de botón activen o hagan algo?

la respuesta es sencilla se usa otra vez la función IF y para ello se hace esto:

if(lop == resultado){
digitalWrite(LED1);
}

donde resultado es la ultima variable, es la que definirá cuantas veces debemos presionar el botón

entonces si el numero almacenado en lop es igual al numero almacenado en resultado se ejecutara lo que esta dentro del IF, pero en este caso solo encenderemos el LED1.

ya casi esta listo pero solo falta algo:
analicemos el código, si lo vemos desde un panorama general descubrimos que cuando el numero de pulsaciones del botón es mayor al de la variable resultado sigue encendido el LED y para evitar eso hay muchas formas pero para acortar el código usaremos la función ELSE. recordemos que esta función se usa para activarse en caso de no cumplirse la función IF

en resumen el codigo quedara asi

**creamos vas variables


int var = 0;
int lop = 1;
int resultado = 10;
const int LED1 = 13;
const int BOTON = 2;

algo importante a recalcar es que en este caso la variable lop debe iniciar en 1 porque arduino toma en cuenta el 0 así que "resultado" tendría que añadir 1 al numero que quieran pero es cuestión de gustos

** sigue el setup

void setup(){
pinMode(LED1, OUTPUT);
pinMode(BOTON, INPUT);
//Serial.begin(9600);
}

podemos también usar el puerto Serial si queremos, ahora esta fijado como comentario pero para activarlo debemos quitar los // del comando.

**por ultimo el loop

void loop(){

var = digitalRead(BOTON);

if(var == HIGH){

lop = lop + 1;
}

if(lop == resultado){
digitalWrite(LED1, HIGH);
}
else{
digitalWrite(DEL1, LOW);
}
delay(200);
}

el delay como siempre es opcional pero si es demasiado grande puede interferir con el conteo del boton

recuerda  que en la pestaña de proyectos descargas podrás acceder a los planos y podrás descargar el codigo :3

sección  de preguntas ¿?

¿es posible reducir el tamaño del código y cumplir la misma función ?

¿se puede añadir mas comparadores para hacer mas funciones a diferentes pulsaciones?

¿se puede emplear lo visto en la vida cotidiana?


Comentarios