Ejercicios Arduino 2
Ejercicios Arduino 2
int rele = 8;
void setup() {
pinMode(rele, OUTPUT);
}
void loop() {
digitalWrite(rele, HIGH);
delay(2000);
digitalWrite(rele, LOW);
delay(2000);
}
Desafio,:
Incorporar una pantalla LCD (16x2), activar led (alarma) mediante un pulsador, la alarma esta cableada a
una fuente externa de 9V. Funcionamiento: cuando se active el pulsador se debe enviar un mensaje a
traves de la pantalla LCD y encender los leds de alarma, opción colocar un buzzer.
Uso modulo ultrasonido
int TRIG = 3;
int ECO = 2;
int ledred = 8;
int ledyellow = 9;
int ledgreen = 10;
int duracion;
int distancia;
void setup()
{
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT);
pinMode(ledred, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(ledgreen, OUTPUT);
}
void loop()
{
digitalWrite(TRIG, HIGH);
delay(1);
digitalWrite(TRIG, LOW);
distancia = duracion/58.2;
//velocidad del sonido = 340m/s / 2 = 58.2
Serial.print(distancia);
Serial.println(" cm");
delay(200);
Incorporar una pantalla LCD (16x2), activar led (alarma) mediante el uso del modulo de ultrasonido, la
alarma esta cableada a una fuente externa de 9V. Funcionamiento: cuando se active el modulo van a
abrir o cerrar una llave de agua hasta que el tanque este completamente lleno. Se debe visualizar los
niveles de agua a medida que se va llenando el tanque e igualmente deben colocar un sistema visual
(led’s) que indique si esta vacio, medio, o lleno. Cuando el sistema este lleno debe emitir una alarma
sonora durante 15 segundos.
#include <LiquidCrystal.h> // Entre los símbolos <> buscará en la carpeta de librerías configurada
#include <EasyBuzzer.h>
// Lo primero is inicializar la librería indicando los pins de la interfaz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int ledred = 8;
int ledyellow = 9;
int ledgreen = 10;
int rele=18;
int duracion;
int distancia;
void setup() {
// Configuramos las filas y las columnas del LCD en este caso 16 columnas y 2 filas
lcd.begin(COLS, ROWS);
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT);
pinMode(ledred, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(rele, OUTPUT);
void loop() {
lcd.setCursor(0,0);
lcd.print("Distancia");
digitalWrite(TRIG, HIGH);
delay(1);
digitalWrite(TRIG, LOW);
lcd.setCursor(0,1);
lcd.print(distancia);lcd.print("cm");
Serial.print(distancia);
Serial.println(" cm");
delay(200);
}
if(distancia == 3){
digitalWrite(ledred, HIGH);
delay(distancia*10);
digitalWrite(ledred, LOW);
//generar tono de 440Hz durante 1000 ms
tone(pinBuzzer, 440);
delay(2000);
noTone(pinBuzzer);
digitalWrite(rele,HIGH);
}
else if(distancia >3){
noTone(pinBuzzer);
digitalWrite(rele,LOW);
}
}
#include <LiquidCrystal.h> // Entre los símbolos <> buscará en la carpeta de librerías configurada
#include <EasyBuzzer.h>
#include <Keypad.h> //incluir libreria para trabajar con teclado matricial
int TRIG = 6;
int ECO = 7;
const int pinBuzzer = 19;
int ledred = 8;
int ledyellow = 9;
int ledgreen = 10;
int rele=18;
int duracion;
int distancia;
int cerradura=38;
int ventilacion=40;
int alarmamov=42;
int detector_mov=44;
int movimiento=0;
void setup() {
// Configuramos las filas y las columnas del LCD en este caso 16 columnas y 2 filas
lcd.begin(COLS, ROWS);
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT);
pinMode(ledred, OUTPUT);
pinMode(ledyellow, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(rele, OUTPUT);
pinMode(cerradura, OUTPUT);
pinMode(ventilacion, OUTPUT);
pinMode(alarmamov, OUTPUT);
pinMode(detector_mov, INPUT);
digitalWrite(rele,HIGH);
lcd.clear(); //limpiamos la pantalla LCD
lcd.setCursor(0, 0); //ubicamos el cursor en la (columna, fila) convenientemente
lcd.print("Ingrese su clave"); //imprimir mensaje
void loop() {
digitalWrite(cerradura, HIGH);
tone(pinBuzzer, 900);
delay(3000);
noTone(pinBuzzer);
lcd.clear();
delay(100);
lcd.setCursor(0, 1); //ubicamos el cursor en la (columna, fila) convenientemente
lcd.print(" Clave correcta "); //imprimimos el letrero diciendo clave correcta
delay(3000); //esperamos 3 segundos
lcd.clear(); //limpiamos la pantalla LCD
digitalWrite(cerradura, LOW); //apagamos el led verde
}
else //de lo contrario (si el "codigo" es diferente a la "clave")
{
delay(500); //esperamos medio segundo
//digitalWrite(12, HIGH); //encendemos el led rojo
lcd.setCursor(0, 2); //ubicamos el cursor en la (columna, fila) convenientemente
lcd.print("Clave incorrecta"); //imprimimos el letrero diciendo clave incorrecta
delay(2000); //esperamos 2 segundos
lcd.clear(); //limpiamos la pantalla LCD
//digitalWrite(12, LOW); //apagamos el led rojo
}
digito = 0; //reseteamos la variable digito
lcd.setCursor(0, 0); //ubicamos el cursor en la (columna, fila) convenientemente
lcd.print("Ingrese su clave"); //volvemos a imprimir el letrero pidiendo la clave
delay(500); //esperamos medio segundo
}
}
digitalWrite(TRIG, HIGH);
delay(1);
digitalWrite(TRIG, LOW);
duracion = pulseIn(ECO, HIGH);
distancia = duracion/58.2;
//velocidad del sonido = 340m/s / 2 = 58.2
Serial.print("Distancia ");
Serial.print(distancia);
Serial.println(" cm");
delay(400);
https://create.arduino.cc/projecthub/ies-clara-campoamor/invernadero-domotizado-8e9470
#include <Key.h>
#include <Keypad.h>
#include <Servo.h>
#include <LiquidCrystal.h>
//#include <DHTesp.h>
#include "DHT.h"
#include <Wire.h>
#define DHTPIN 10
#define DHTTYPE DHT11
//#define RELE 2
//#define SIMULADOR 4
#define LED 13
//int push_lee = 0;
bool estadoLed=true;
LiquidCrystal lcd(18,19,14,15,16,17);
DHT dht(DHTPIN, DHTTYPE);
Servo ServoMotor;
char* password = "4273"; // change the password here, just pick any 3 numbers
int position = 0;
const byte ROWS = 4;
const byte COLS = 4;
char teclas[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9, 8, 7, 6 };
byte colPins[COLS] = { 5, 4, 3, 2 };
Keypad keypad = Keypad( makeKeymap(teclas), rowPins, colPins, ROWS, COLS );
int RedpinLock = 12;
int GreenpinUnlock = 13;
void setup()
{
pinMode(RedpinLock, OUTPUT);
pinMode(GreenpinUnlock, OUTPUT);
ServoMotor.attach(11);
LockedPosition(true);
lcd.begin(COLS,ROWS);
lcd.clear();
//Inicio Sensor Temperatura
dht.begin();
//pinMode(RELE, OUTPUT);
//pinMode(LED, OUTPUT);
//pinMode(SIMULADOR, INPUT);
//digitalWrite(LED, HIGH);
}
void loop()
{
Segundo dia
// Apertura con Clave y opcion de cambio de Clave
// by: www.elprofegarcia.com
int estado = 0;
int tecla=0;
char opcion_seleccionada=' ';
int menu_nivel = 0;
int valor = 0; // 0=cerrado 1=abierto
Servo servo11; // Crea el objeto servo11 con las caracteristicas
de Servo
void loop() {
lcd.clear();
if(menu_nivel == 0){
lcd.print("Selec. opcion");
lcd.setCursor(0,1);
lcd.print("Pass >A ");
while(tecla == NULL){
tecla = teclado.getKey();
if(tecla == 'A' || tecla == 'B' || tecla == 'C' || tecla == 'D'){
opcion_seleccionada = tecla;
menu_nivel = 1;
}
}
}
if(opcion_seleccionada != ' '){
switch(opcion_seleccionada){
case 'A':
opcion_a();
break;
case 'B':
opcion_b();
break;
case 'C':
opcion_c();
break;
case 'D':
opcion_d();
break;
}
}
}
void opcion_a(){
int INDICE=0;
valor = 0;
tecla = 0;
lcd.clear();
lcd.home();
lcd.print("Ingresa Clave");
lcd.setCursor(0,1);
while(tecla != '#'){
char CLAVE[5]; // almacena en un array 4 digitos
ingresados
char CLAVE_MAESTRA[5] = "0000"; // almacena en un array la contraseña
inicial
tecla = teclado.getKey();
if(tecla)
{
CLAVE[INDICE] = tecla; // almacena en array la tecla presionada
INDICE++; // incrementa indice en uno
lcd.print("*"); // envia al LCD la tecla presionada
}
if(INDICE == 4) // si ya se almacenaron los 4 digitos
{
lcd.clear();
if(!strcmp(CLAVE, CLAVE_MAESTRA)) // compara clave ingresada con clave
maestra
abierto();
else
error();
INDICE = 0;
}
menu_nivel=0;
}
}
void opcion_b(){
lcd.clear();
lcd.home();
lcd.print("Ingresaste: ");
lcd.print(valor);
delay(3000);
menu_nivel = 0;
}
void opcion_c(){
lcd.clear();
lcd.home();
lcd.print("Aqui va el codigo");
lcd.setCursor(0,1);
lcd.print("para la opcion C");
delay(3000);
menu_nivel = 0;
}
void opcion_d(){
lcd.clear();
lcd.home();
lcd.print("Aqui va el codigo");
lcd.setCursor(0,1);
lcd.print("para la opcion D");
delay(3000);
menu_nivel = 0;
}
void error(){
lcd.setCursor(0,1);
lcd.print("ERROR DE CLAVE ");
limpia();
}
void abierto(){
if(estado==0){
estado=1;
lcd.setCursor(0,1);
lcd.print("Abierto "); // imprime en el LCD que esta abierta
servo11.write(30); // Gira el servo a 30 grados abre la
puerta
delay(2000);
loop();
}
else{
estado=0;
lcd.setCursor(0,1);
lcd.print("Cerrado "); // imprime en el LCD que esta cerrada
servo11.write(150); // Gira el servo a 150 grados cierra la
puerta
delay(2000);
//seleccion();
}
//escoger();
}
void limpia(){
lcd.setCursor(0,0);
lcd.print("CLAVE : ");
lcd.setCursor(9,0);
}
void intro_0(){
lcd.clear(); // Borra el LCD
lcd.setCursor(3,0); // Se posiciona en la Columna 3, Fila 0
lcd.print("BIENVENIDO ");
lcd.setCursor(1,1);
lcd.print("PRUEBA DE MENU");
delay(4000); // espera 4 segundos mostrando el intro
lcd.clear();
}
Codigo Funciona
// Prueba de Menu con LCD y Teclado
// by: http://elprofegarcia.com
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h> // Incluir la libreria Servo
// Sensor humedad-temperatura.
#include <DHT.h>
#define DHTPIN 10
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Humedad Temperatura.
float humedad = 0.0;
float temperatura = 0.0;
float temperatura_old = 0.1;
boolean temperatu = false;
int tecla = 0;
int menu_nivel = 0;
int valor = 0;
char opcion_seleccionada = ' ';
char TECLA; // almacena la tecla presionada
char CLAVE[5]; // almacena en un array 4 digitos ingresados
char CLAVE_MAESTRA[5] = "0000"; // almacena en un array la contraseña inicial
byte INDICE = 0;
//char contrasena[] = "1234"; //definimos una contraseña
de 4 digitos
//char codigo[4]; //arreglo donde
almacenaremos la contraseña digitada
//int digito = 0;
Servo servo11;
int estado = 0;
int RELET = 13;
int RELEH = 12; //variable que
nos dira en que digito vamos
void loop(){
lcd.clear();
if(menu_nivel == 0){
lcd.setCursor(0,0);
lcd.print("PASS >A");
lcd.setCursor(9,0);
lcd.print("TEMP >B");
lcd.setCursor(0,1);
lcd.print("HUM >C");
tecla = 0;
while(tecla == NULL){
tecla = teclado.getKey();
if(tecla == 'A' || tecla == 'B' || tecla == 'C' || tecla == 'D'){
opcion_seleccionada = tecla;
menu_nivel = 1;
}
}
}
void intro_0(){
lcd.clear(); // Borra el LCD
lcd.setCursor(3,0); // Se posiciona en la Columna 3, Fila 0
lcd.print("BIENVENIDO ");
lcd.setCursor(1,1);
lcd.print("PRUEBA DE MENU");
delay(1500); // espera 4 segundos mostrando el intro
lcd.clear();
}
void abierto(){
if(estado==0){
estado=1;
lcd.setCursor(6,1);
lcd.print("Abierto"); // imprime en el LCD que esta abierta
servo11.write(30); // Gira el servo a 30 grados abre la
puerta
delay(5000);
servo11.write(150);
//loop();
}
}
void error(){
lcd.setCursor(0,0);
lcd.print("Clave Errada"); // imprime en el LCD que esta cerrada
lcd.setCursor(0,1);
lcd.print("Cerrado");
lcd.setCursor(9,1);
lcd.print("press #");
servo11.write(150); // Gira el servo a 150 grados cierra la
puerta
delay(2000);
}
void opcion_b(){
lcd.clear();
lcd.home();
//temperatura = dht.readTemperature();
//if (temperatura != temperatura_old) { // Para que no parpadee.
//temperatura_old = temperatura;
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Temperatura");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(temperatura);
if (temperatura>=25)
encender_aire();
else
digitalWrite(RELET,LOW);
delay(5000);
//}
menu_nivel = 0;
}
void opcion_c(){
lcd.clear();
lcd.home();
//humedad = dht.readHumidity();
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Humedad");
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print(humedad);
if (humedad<=55)
encender_bomba();
else
digitalWrite(RELEH,LOW);
delay(3000);
menu_nivel = 0;
}
void encender_aire(){
lcd.clear();
lcd.home();
digitalWrite(RELET,HIGH);
lcd.setCursor(5,0);
lcd.print("aire");
lcd.setCursor(2,1);
lcd.print("encendido");
menu_nivel = 0;
}
void encender_bomba(){
lcd.clear();
lcd.home();
digitalWrite(RELEH,HIGH);
lcd.setCursor(2,0);
lcd.print("bomba agua");
lcd.setCursor(2,1);
lcd.print("encendido");
menu_nivel = 0;