Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CENTRO DE
CENTRO LOGISTICO Y DE PROMOCION ECOTURISTICA SENA
FORMACIÓN
REGIONAL MAGDALENA
EJECUTOR
El sector agrícola también puede ser beneficiado, pues con este equipo
de pueden hacer herramientas livianas que les sean de bajo costo y que
faciliten sus actividades diarias.
Hay que tener bien claro que acompañado al equipo debe haber un plan
de capacitación muy robusto que permita al usuario final realizar un
procedimiento de transformación adecuado.
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
Hardware
Software
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
#include <EEPROM.h
El código fuente:
void datosReloj() : función que permite leer los datos del RTC y
guardarlos en variables para su posterior análisis.
Firmas:
__________________________
Subdirector de Centro
__________________________
__________________________
Investigador
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
Anexos.
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
// librerias a usar:
#include <Keypad.h> //teclado
#include <LiquidCrystal.h> //LCD
#include <Wire.h>
#include "RTClib.h"
#include <EEPROM.h>
RTC_DS1307 rtc;
//variables globales
boolean dato[50] = {};
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
const int BOMBA = 13, EV1 = 12, EV2 = 11;
char key, numEV; //tecla pulsada
int inChar = 0;
int address = 0;
boolean HA1 = false;
boolean HA2 = false;
int Tiniciales[6] = {}, Tfinales[6] = {}, tiempo = 0, posCursor = 0, aux[8] = {}, modo = 0, DatoIn[14] =
{};
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8}; //connect to the column pinouts of the keypad
// inicializa librerias
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //teclado
LiquidCrystal lcd(10, 9, A3, A2, A1, A0); //LCD
void setup(){
//inicializacion de librerias
Serial.begin(9600);
lcd.begin(16, 2);
Wire.begin();
rtc.begin();
//inicia la bomba y electrovalvulas apagadas
pinMode(BOMBA,OUTPUT);
pinMode(EV1,OUTPUT);
pinMode(EV2,OUTPUT);
digitalWrite(BOMBA,LOW);
digitalWrite(EV1,LOW);
digitalWrite(EV2,LOW);
//lee los datos de programacion programados en la eeprom y los escribe en el vector Tiniciales[]
for(int i = 0; i <= 5; i ++) {
Tiniciales[i] = EEPROM.read(i);
Tfinales[i] = EEPROM.read(i + 6);
Serial.print(Tiniciales[i]);
}
Serial.print('\t');
for (int i = 0; i <= 5; i ++){
Serial.print(Tfinales[i]);
}
Serial.println();
//texto_inicio();
lcd.clear();
for (int i = 0; i <= 3; i ++){
//clean();
}
lcd.clear();
}
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
void loop(){
//funcion de configuraciones o inicio
menu_iniciar();
while(true){
sale();
if (key == '#') break;
lcd.clear();
if (modo == 'p') {
for (int i = 0; i <= 20; i ++){
datosReloj();
comparacion();
delay(1000);
}
sale();
if (key == '#') break;
lcd.clear();
for (int i = 0; i <= 2; i ++){
clean();
comparacion();
}
sale();
}
switch (modo){
case 'a':
bluetooth();
break;
case 'p':
comparacion();
break;
}
sale();
if (key == '#') break;
}
}
//------------------------------------------------
//funcion de lectura del RTC
void datosReloj(){
DateTime now = rtc.now();
lcd.clear();
lcd.setCursor(3, 0);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
lcd.print(now.year(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.day(), DEC);
lcd.setCursor(4,1);
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
}
//-------------------------------------------------------
// interrupcion por recepcion de dato serial
void bluetooth() {
tiempo = 0;
while (true) {
sale();
while (Serial.available()) {
lcd.print("AREA 2: regando");
digitalWrite(EV2,HIGH);
digitalWrite(BOMBA, HIGH);
} else {
sale();
lcd.setCursor(0,1);
lcd.print("AREA 2: completo");
digitalWrite(EV2,LOW);
}
sale();
if (HA1 == true && HA2 == true) digitalWrite(BOMBA, LOW);
}
}
//-----------------------------------------------
//funcion que muestra todos los mensajes iniciales
void texto_inicio(){
lcd.setCursor(0, 0);
lcd.print(" BIENVENIDO ");
lcd.setCursor(0, 1);
lcd.print("RIEGO AUTOMATICO");
delay(1500);
lcd.setCursor(0, 0);
lcd.print("RIEGO AUTOMATICO");
lcd.setCursor(0, 1);
lcd.print(" Y PROGRAMADO ");
delay(1500);
lcd.setCursor(0, 0);
lcd.print(" Y PROGRAMADO ");
lcd.setCursor(0, 1);
lcd.print(" CLEAN ENERGY ");
delay(1500);
lcd.setCursor(0, 0);
lcd.print(" CLEAN ENERGY ");
lcd.setCursor(0, 1);
lcd.print("ENGINEERING SAS");
delay(4000);
}
//-----------------------------------------------
//MENSAJE CLEAN CLEAN ENERGY ENGINEERING S.A.S
void clean(){
lcd.setCursor(16, 0);
lcd.print("CLEAN ENERGY ENGINEERING");
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
lcd.setCursor(16, 1);
lcd.print("SOLUCIONES EN INGENIERIA");
// scroll 13 positions (string length) to the left
// to move it offscreen left:
for (int positionCounter = 0; positionCounter < 39; positionCounter++) {
// scroll one position left:
lcd.scrollDisplayLeft();
// wait a bit:
delay(200);
if (modo == 'p') comparacion();
}
}
//----------------------------------------------------------------
//CONDICIONES DE SELECCION CONFIGURACIONES O INICIO
void menu_iniciar(){
while (true){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" menu");
lcd.setCursor(0, 1);
lcd.print("1:conf 3:inicio");
teclado();
switch (key){
case '1':
lcd.setCursor(0, 0);
lcd.print("ingresando a las");
lcd.setCursor(0, 1);
lcd.print("configuraciones ");
delay(1000);
lcd.clear();
lcd.print(" configure las ");
lcd.setCursor(0, 1);
lcd.print("horas para riego");
menu_configuraciones();
break;
case '3':
lcd.setCursor(0, 0);
lcd.print(" ingresando al ");
lcd.setCursor(0, 1);
lcd.print("inicio predeterm");
delay(3000);
lcd.clear();
lcd.print(" seleccione ");
lcd.setCursor(0, 1);
lcd.print("1:auto 3:program");
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
selecInicio();
break;
}
if (modo != 0) break;
}
}
//----------------------------------------------------------------
//****************************************************************
//menu de configuraciones
void menu_configuraciones(){
while (true) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("1:t1 2:t2");
lcd.setCursor(0, 1);
lcd.print("3:t3 #:salir");
teclado();
if (key == '#') break;
switch (key){
case '1':
tiempo1();
break;
case '2':
tiempo2();
break;
case '3':
tiempo3();
break;
}
}
for(int i = 0; i <= 5; i ++){
EEPROM.write(i, Tiniciales[i]);
EEPROM.write(i + 6, Tfinales[i]);
}
}
//----------------------------------------------------------------
//seleccion del inicio
void selecInicio(){
while (true) {
teclado();
switch (key){
case '1':
lcd.setCursor(0, 0);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
//------------------------------------------------------
//funciones para configuracion de los horarios de regado
void tiempo1 (){
cambiaTiempo();
delay(3000);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
//-------------------------------------------------------------
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
void cambiaTiempo () {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("inicio 00:00 ");
// lcd.setCursor(8,0);
// lcd.print(aux[0]);
// lcd.print(aux[1]);
// lcd.setCursor(11,0);
// lcd.print(aux[2]);
// lcd.print(aux[3]);
lcd.setCursor(0, 1);
lcd.print("final 00:00 ");
while (true) {
if (posCursor >= 8) break;
switch (posCursor) {
case 0:
do{
key = keypad.getKey();
lcd.setCursor(8, 0);
lcd.write(255);
delay(100);
lcd.setCursor(8, 0);
lcd.print(aux[0]);
delay(200);
}while(key != '0' && key != '1' && key != '2');
lcd.setCursor(8, 0);
aux[0] = key - 48;
lcd.print(aux[0]);
posCursor ++;
break;
case 1:
if (aux[0] != 2){
do{
key = keypad.getKey();
lcd.setCursor(9, 0);
lcd.write(255);
delay(100);
lcd.setCursor(9, 0);
lcd.print(aux[1]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5' &&
key != '6' && key != '7' && key != '8' && key != '9');
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
} else {
do{
key = keypad.getKey();
lcd.setCursor(9, 0);
lcd.write(255);
delay(100);
lcd.setCursor(9, 0);
lcd.print(aux[1]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3');
}
lcd.setCursor(9, 0);
aux[1] = key - 48;
lcd.print(aux[1]);
posCursor ++;
break;
case 2:
do{
key = keypad.getKey();
lcd.setCursor(11, 0);
lcd.write(255);
delay(100);
lcd.setCursor(11, 0);
lcd.print(aux[2]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5');
lcd.setCursor(11, 0);
aux[2] = key - 48;
lcd.print(aux[2]);
posCursor ++;
break;
case 3:
do{
key = keypad.getKey();
lcd.setCursor(12, 0);
lcd.write(255);
delay(100);
lcd.setCursor(12, 0);
lcd.print(aux[3]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5' &&
key != '6' && key != '7' && key != '8' && key != '9');
lcd.setCursor(12, 0);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
case 4:
do{
key = keypad.getKey();
lcd.setCursor(8, 1);
lcd.write(255);
delay(100);
lcd.setCursor(8, 1);
lcd.print(aux[4]);
delay(200);
}while(key != '0' && key != '1' && key != '2');
lcd.setCursor(8, 1);
aux[4] = key - 48;
lcd.print(aux[4]);
posCursor ++;
break;
case 5:
if (aux[4] != 2){
do{
key = keypad.getKey();
lcd.setCursor(9, 1);
lcd.write(255);
delay(100);
lcd.setCursor(9, 1);
lcd.print(aux[5]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5' &&
key != '6' && key != '7' && key != '8' && key != '9');
} else {
do{
key = keypad.getKey();
lcd.setCursor(9, 1);
lcd.write(255);
delay(100);
lcd.setCursor(9, 1);
lcd.print(aux[5]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3');
}
lcd.setCursor(9, 1);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
case 6:
do{
key = keypad.getKey();
lcd.setCursor(11, 1);
lcd.write(255);
delay(100);
lcd.setCursor(11, 1);
lcd.print(aux[6]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5');
lcd.setCursor(11, 1);
aux[6] = key - 48;
lcd.print(aux[6]);
posCursor ++;
break;
case 7:
do{
key = keypad.getKey();
lcd.setCursor(12, 1);
lcd.write(255);
delay(100);
lcd.setCursor(12, 1);
lcd.print(aux[7]);
delay(200);
}while(key != '0' && key != '1' && key != '2' && key != '3' && key != '4' && key != '5' &&
key != '6' && key != '7' && key != '8' && key != '9');
lcd.setCursor(12, 1);
aux[7] = key - 48;
lcd.print(aux[7]);
posCursor ++;
break;
}
// if (posCursor <= 0) posCursor = 0;
// if (posCursor >= 3) posCursor = 3;
// if (tiempo <= 0) tiempo = 0;
// if (key == '#') break;
// switch (posCursor){
// case 0:
// lcd.setCursor(8,0);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
// lcd.cursor();
// aux[0] = tiempo;
// if (tiempo == 24) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(8,0);
// }
// break;
// case 1:
// lcd.setCursor(11,0);
// lcd.cursor();
// aux[1] = tiempo;
// if (tiempo == 60) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(11,0);
// }
// break;
// case 2:
// lcd.setCursor(8,1);
// lcd.cursor();
// aux[2] = tiempo;
// if (tiempo == 24) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(8,1);
// }
// break;
// case 3:
// lcd.setCursor(11,1);
// lcd.cursor();
// aux[3] = tiempo;
// if (tiempo == 60) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(11,1);
// }
// break;
// }
// lcd.print(tiempo);
}
for (int i = 0; i <= 7; i ++) {
Serial.print(aux[i]);
}
Serial.println();
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
posCursor = 0;
}
//void cambiaTiempo () {
// lcd.setCursor(0, 0);
// lcd.print("2:+ 8:-");
// lcd.setCursor(0, 1);
// lcd.print(" 6:>>");
// delay(2500);
// lcd.clear();
// lcd.print("inicio : ");
// lcd.setCursor(0, 1);
// lcd.print("final : ");
// while (true) {
// teclado();
// switch (key) {
// case '2':
// tiempo++;
// break;
// case '8':
// tiempo--;
// break;
// case '6':
// posCursor++;
// tiempo = 0;
// break;
// }
// if (posCursor <= 0) posCursor = 0;
// if (posCursor >= 3) posCursor = 3;
// if (tiempo <= 0) tiempo = 0;
// if (key == '#') break;
// switch (posCursor){
// case 0:
// lcd.setCursor(8,0);
// lcd.cursor();
// aux[0] = tiempo;
// if (tiempo == 24) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(8,0);
// }
// break;
// case 1:
// lcd.setCursor(11,0);
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
// lcd.cursor();
// aux[1] = tiempo;
// if (tiempo == 60) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(11,0);
// }
// break;
// case 2:
// lcd.setCursor(8,1);
// lcd.cursor();
// aux[2] = tiempo;
// if (tiempo == 24) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(8,1);
// }
// break;
// case 3:
// lcd.setCursor(11,1);
// lcd.cursor();
// aux[3] = tiempo;
// if (tiempo == 60) {
// tiempo = 0;
// lcd.print(" ");
// lcd.setCursor(11,1);
// }
// break;
// }
// lcd.print(tiempo);
// }
// posCursor = 0;
// tiempo = 0;
//}
//-------------------------------------------------------
// funcion para comparar los datos que fueron programados
void comparacion (){
DateTime now = rtc.now();
///condiciones para tiempo 1
if (Tiniciales[0] == now.hour()){
if (Tiniciales[1] == now.minute()){
enciende();
}
}
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
if (Tfinales[0] == now.hour()){
if (Tfinales[1] == now.minute()){
apaga();
}
}
///condiciones para tiempo 2
if (Tiniciales[2] == now.hour()){
if (Tiniciales[3] == now.minute()){
enciende();
}
}
if (Tfinales[2] == now.hour()){
if (Tfinales[3] == now.minute()){
apaga();
}
}
///condiciones para tiempo 3
if (Tiniciales[4] == now.hour()){
if (Tiniciales[5] == now.minute()){
enciende();
}
}
if (Tfinales[4] == now.hour()){
if (Tfinales[5] == now.minute()){
apaga();
}
}
}
///-------------------------------------------------------
//funcion que verifica que no hayan tiempos inconsistentes
void verifica (){
if(Tiniciales[tiempo] <= Tfinales[tiempo]){
if (Tiniciales[tiempo] == Tfinales[tiempo]){
if (Tiniciales[tiempo + 1] <= Tfinales[tiempo + 1]){
if (tiempo == 0) lcd.print("t1 configurado");
if (tiempo == 2) lcd.print("t2 configurado");
if (tiempo == 4) lcd.print("t3 configurado");
delay(2000);
} else {
lcd.print("Hinicio > Hfinal");
lcd.setCursor(0, 1);
lcd.print("ERROR-ERROR-ERRO");
delay(3000);
}
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
}
}else {
lcd.print("Hinicio > Hfinal");
lcd.setCursor(0, 1);
lcd.print("ERROR-ERROR-ERRO");
delay(3000);
}
}
//----------------------------------------------
//funcion que llama el teclado
void teclado (){
do{
key = keypad.getKey();
}while (!key);
}
//----------------------------------------------
//funcion para encender la bomba y ev
void enciende(){
digitalWrite(BOMBA, HIGH);
switch (numEV) {
case '1':
digitalWrite(EV1, HIGH);
break;
case '2':
digitalWrite(EV2, HIGH);
break;
case '3':
digitalWrite(EV1, HIGH);
digitalWrite(EV2, HIGH);
break;
}
}
//----------------------------------------------
//funcion para apagar la bomba y ev
void apaga(){
digitalWrite(BOMBA, LOW);
switch (numEV) {
case '1':
digitalWrite(EV1, LOW);
break;
case '2':
Dirección de Formación Profesional
Sistema de Investigación, Desarrollo Tecnológico e
Innovación – SENNOVA
Formato Presentación Propuestas y/o Proyectos de Innovación y/o
Desarrollo Tecnológico – 2016
digitalWrite(EV2, LOW);
break;
case '3':
digitalWrite(EV1, LOW);
digitalWrite(EV2, LOW);
break;
}
}
void sale(){
for (int i = 0; i <= 200; i ++){
key = keypad.getKey();
delay (1);
if (key == '#') break;
}
}