Noticias

Los ultimos avances Tecnológicos.

Arduino

Proyectos hechos en Arduino.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Redes Sociales

Visitamos en nuestras redes sociales.

viernes, 25 de diciembre de 2015


Funcionamiento del Sensor Magnético FASE 1




Funcionamiento del Sensor Magnético FASE 2




Funcionamiento del Sensor de Movimiento FASE 1




Funcionamiento del Sensor de Movimiento FASE 2




Segunda Entrega





Tercera Entrega





Cuarta Entrega


jueves, 24 de diciembre de 2015

CUARTA ENTREGA DEL PROYECTO (SISTEMA DE SEGURIDAD)

Para realizar esta cuarta entrega se ha trabajado con lo que es el módulo GSM para enviar y recibir mensajes, para esto también he utilizado el módulo de cuatro relés en los cuales voy a poder conectar lo que son dos focos y una radio, los mismos que funcionan con energía de 110 voltios.


La finalidad de trabajar con el módulo GSM es para mediante un mensaje nosotros poder controlar nuestra alarma, es decir que podamos activar y desactivar nuestra alarma de seguridad, es este caso como no contamos aún con la alarma simularemos encendiendo lo que son focos y una radio mediante el envío de un mensaje.



Para ello utilizaremos lo siguiente:



  • MÓDULO GSM



Añade capacidades de monitoreo y control remoto, datos, SMS y llamadas de voz con Arduino. El shield GSM GPRS SIM900 o ICOMSAT, permite conectar el Arduino a la red de telefonía celular de tu preferencia y hacer uso de todos los servicios que esta te ofrece (voz y datos). El módulo de SIMCOM SIM900 es capaz de funcionar en cualquier red GSM en el mundo gracias a que se trata de un dispositivo de 4 bandas (850/900/1800/1900MHz.



CARACTERÍSTICAS



   - Operación global y con cualquier proveedor (multibanda).

   - Se controla mediante comandos AT y comandos AT extendidos.

   - Incluye stack TCP/IP soporta TCP, HTTP, FTP mediante comandos AT.
   - Ideal para transmisión de datos sobre GPRS.
   - Ancho de banda de descarga 85.6 kbps.
   - Ancho de banda de subida 42.8 kbps.
   - SMS en modo PDU y Texto
   - La interfaz de control del módem GSM se puede asociar con varios pines del Arduino no      solamente los del UART, permitiendo usar librerías como SoftSerial
   - Incluye super capacitor para almacenamiento persistente de datos
   - Librería para funcionar con Arduino.


  • PLACA ARDUINO



Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

El hardware consiste en una placa con un microcontrolador y puertos de entrada y salida.Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación que es ejecutado en la placa. Se programa en el ordenador para que la placa controle los componentes electrónicos.


  • El protoboard o breadboard



Es una especie de tablero con orificios, en la cual se pueden insertar componentes electrónicos y cables para armar circuitos. Como su nombre lo indica, esta tableta sirve para experimentar con circuitos electrónicos, con lo que se asegura el buen funcionamiento del mismo. 


  • MÓDULO DE 4 RELÉS


El relé es el elemento que necesitas si quieres gestionar grandes voltajes y corrientes (como los que pueden tener en la red eléctrica de tu casa). Se trata simplemente de un interruptor eléctrico que puedes encender y apagar enviando señales desde tu placa Arduino, o cualquier otro controlador . Esto te permite desde encender y apagar la luz de tu habitación cuando alguien entre, hasta hacer una casa domótica completa, el límite aquí es tu imaginación.


  • CONEXIÓN 

Para comenzar vamos a conectar la placa arduino con el módulo GSM de la siguiente manera.



Una vez conectado realizamos el siguiente circuito.





  • CÓDIGO

#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8);

char numero_cell[]="0981762111";//meter numero de telefono
int pulsador =9;

int rele1 =10;
int rele2 =11;
int reler =12;

boolean valor=true;
int a=0;
int b=0;

char DAT;
char DAT_dos;


boolean condicion=true;

char datosSERIAL[3];
char clave_1[]={'1','O','N'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL
char clave_2[]={'1','O','F'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL
char clave_3[]={'2','O','N'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL
char clave_4[]={'2','O','F'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL
char clave_5[]={'3','O','N'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL
char clave_6[]={'3','O','F'};//AQUI CAMBIAMOS TODO EL MENSAJE DE CONTROL

void setup()
{
  pinMode(pulsador,INPUT);
  pinMode(rele1,OUTPUT);
  pinMode(rele2,OUTPUT);
  pinMode(reler,OUTPUT);

  Serial.begin(9600);
  mySerial.begin(9600);
  
  delay(2000);
  configuracion_inicial();
  Serial.println("sistema de alarma EDITRONIKX m95 encendida");
 
  delay(1000);
}
/////////////////////////
void loop()
{
 
Serial.println("esperando recibir mensaje...");
while(true)
{
  leer_mensaje(); 
}
 
}
///////////////////////
void configuracion_inicial()//configura los codigos de lectura de mensajes
{
  mySerial.println("AT+IPR=9600");//modo texto
  Serial.println("AT+IPR=9600");//modo texto
  delay(300);
  mySerial.println("AT+CMGF=1");//modo texto
  Serial.println("AT+CMGF=1");//modo texto
  delay(300);
  mySerial.println("AT+CMGR=?");//ACTIVAMOS CODIGO PARA RECIBIR MENSAJES
  Serial.println("AT+CMGR=?");//ACTIVAMOS CODIGO PARA RECIBIR MENSAJES
 delay(300);
  mySerial.println("AT+CNMI=2,2,0,0");//ACTIVAMOS PARA VER MENSAJES
  Serial.println("AT+CNMI=2,2,0,0");//ACTIVAMOS PARA VER MENSAJES
  //Serial1.println("AT+CNMI=3,3,0,0");//ACTIVAMOS PARA VER MENSAJES
  //Serial.println("AT+CNMI=3,3,0,0");//ACTIVAMOS PARA VER MENSAJES
  delay(300);
  Serial.println("configuracion terminada");
  delay(300);
    
}
///////////////////
void leer_mensaje()
{
  salir:
    if (mySerial.available()>0)
    {
      char DAT =mySerial.read();

      if(DAT=='@'){
            while(true)
            {
              if (mySerial.available()>0){
                 char DAT_dos =mySerial.read();
                 datosSERIAL[b]= DAT_dos;    
                 b++;
                 if (DAT_dos=='\n'){
                     Serial.println("Lectura:");
                     for(int a=0;a<=b;a++){
                         Serial.print(datosSERIAL[a]);}
                     led_on();
                     led_off();
                     delay(500);
                     for(int a=0;a<=b;a++){
                         datosSERIAL[a]==0;
                         DAT_dos=0;
                         DAT=0;}
                     b=0;
                     goto salir;}
                }
             }
        }
    }
}

//////////////////
void led_on()
{
  if(datosSERIAL[0]==clave_1[0] && datosSERIAL[1]==clave_1[1] && datosSERIAL[2]==clave_1[2])
   {
    digitalWrite(rele1,HIGH);
    Serial.println(" LED ON ACTIVADO");
    //mensaje_encendido();
   }
   
   if(datosSERIAL[0]==clave_3[0] && datosSERIAL[1]==clave_3[1] && datosSERIAL[2]==clave_3[2])
   {
    digitalWrite(rele2,HIGH);
    Serial.println(" LED ON ACTIVADO");
    //mensaje_encendido1();
   }
   
   if(datosSERIAL[0]==clave_5[0] && datosSERIAL[1]==clave_5[1] && datosSERIAL[2]==clave_5[2])
   {
    digitalWrite(reler,HIGH);
    Serial.println(" LED ON ACTIVADO");
    //mensaje_encendido2();
   }
}

void led_off()
{
  if(datosSERIAL[0]==clave_2[0] && datosSERIAL[1]==clave_2[1] && datosSERIAL[2]==clave_2[2])
   {
    digitalWrite(rele1,LOW);
    Serial.println(" LED OFF DESACTIVADO.....");
    //mensaje_apagado();
   }
   
   if(datosSERIAL[0]==clave_4[0] && datosSERIAL[1]==clave_4[1] && datosSERIAL[2]==clave_4[2])
   {
    digitalWrite(rele2,LOW);
    Serial.println(" LED OFF DESACTIVADO.....");
    //mensaje_apagado1();
   }
   
   if(datosSERIAL[0]==clave_6[0] && datosSERIAL[1]==clave_6[1] && datosSERIAL[2]==clave_6[2])
   {
    digitalWrite(reler,LOW);
    Serial.println(" LED OFF DESACTIVADO.....");
    //mensaje_apagado2();
   }
}


///////////////////////////////////////// ENVIO DE MENSAJES //////////////////////////////////////////////////////////////////
void mensaje_encendido()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("El foco de la habitacion 1 esta encendida");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("El foco de la habitacion 1 esta encendida");//mensaje que enviare
    }
    
void mensaje_encendido1()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("El foco de la habitacion 2 esta encendida");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("El foco de la habitacion 2 esta encendida");//mensaje que enviare
    }
    
void mensaje_encendido2()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("La radio se a encendido");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("La radio se a encendido");//mensaje que enviare
    }
    
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

void mensaje_apagado()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("El foco de la habitacion 1 esta apagado");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("El foco de la habitacion 1 esta apagado");//mensaje que enviare
    }

void mensaje_apagado1()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("El foco de la habitacion 2 esta apagado");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("El foco de la habitacion 2 esta apagado");//mensaje que enviare
    }
    
void mensaje_apagado2()
    {
      mySerial.println("AT+CMGF=1");//modo texto 
      //Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro
      delay(2000);
      mySerial.print("AT+CMGS=");// comando de envio de mensaje 
      //Imprime los datos al puerto serie como texto ASCII
      mySerial.print((char)34);//ponemos las comillas ", para que lo tome debe ser char de lo contrario el serial envia caracter por caracter
      mySerial.print(numero_cell);//colocamos numero de telefono
      mySerial.println((char)34);//volvemos a poner el caracter "
      delay(200);//tiempo para que de respuesta el modulo >
      mySerial.print("la radio se a apagado");//mensaje que enviare
      mySerial.print((char)26);//ponemos el simbolo ascii 26,que corresponde a CTRL+Z,con lo que el modulo sabe que el sms termino
      
      Serial.print("la radio se a apagado");//mensaje que enviare
    }
  • VIDEO
  • PODCAST

sábado, 19 de diciembre de 2015

MI PRIMER AVANCE

Este es mi primero avance que realizó el cual doy a conocer como va hacer el funcionamiento de mi proyecto de multimedia el cual ayudará a las niños de la escuela "Nuestra Señora del Rosario" en la enseñanza de la tabla del 7 en la multiplicación.

Aquí les presento mi primer avance 



En este caso he realizando la presentación solo de un número a multiplicar ya que es lo mismo para los demás números.

Esto es todo espero les haya gustado.

jueves, 17 de diciembre de 2015

¿Qué es Packet Tracer?


Como se acostumbra hacer en inglés, abreviaré su nombre como PT. El PT está vinculado con las academias de networking de Cisco, es una aplicación que permite diseñar topologías de red con los mismos íconos que se usan en el currículo oficial. Más allá de poder diseñar las topologías, el PT permite configurar los equipos con casi todas las tecnologías que se mencionan en los currículos y observar cómo funcionan como si fueran equipos reales.


Si tuviéramos que definir PT en una frase corta sería simulador de redes de datos. El objetivo inicial de PT es ser una herramienta didáctica, pero después de la versión 5.0, la capacidad de simulación es tal que prácticamente puede servir para pre configurar una red real o ver si alguna opción de implementación experimental puede ser viable. De todos modos hay que recordar que ese no es el objetivo de PT y por lo tanto no se puede asegurar que lo que funcione en el PT se pueda tomar seriamente como prueba de alguna implementación real, para eso es mejor diseñar topologías prototipo y probar con los equipos reales, con topologías controladas o usar emuladores, también con mucho cuidado.


  • ¿Qué se puede hacer con PT?


PT permite, como ya lo dije, diseñar topologías con los mismos iconos del currículo, lo que facilita el entendimiento del currículo mismo. Los equipos tienen referencias reales y su interfaz es tan realista que si se va a cambiar la configuración física de un enrutador o switch es necesario apagarlo. Otras características de realismo del PT es que incluyevarias formas de visualizar la topología, entre ellas, la vista física cuyo uso muestra un mapa de alguna ciudad (no me extrañaría que fuera San Francisco) y en ella la oficina y en la oficina el armario de cableado. Si llegamos en la vista física a dar clic en el armario de cableado nos muestra un bastidor con los equipos que tenemos en la topología como se verían realmente… ¡y hasta podríamos apagarlos desde ahí! (aunque sólo podríamos hacer eso). Aparentemente el espacio físico está inacabado pero permite llegar hasta los extremos de realismo que acabo de describir, adicionalmente se puede dividir el espacio físico en diferentes closets, ciudades o edificios, me imagino que eso tiende a la posibilidad futura de distribuir la topología por espacios físicos geográficamente separados como una topología real.

Referencia link

INSTALACIÓN PACKET TRACER 6.2 EN UBUNTU

Como primera parte tenemos que descargar el archivo 

           Cisco-PT-620.tar.g


PacketTracer funciona solo en modo 32bits, por lo que si tienes una instalación de arquitectura de 64bits, 

  • Deberás ejecutar los siguientes comandos.
              sudo dpkg --add-architecture i386

sudo apt-get install libnss3-1d:i386 libqt4-qt3support:i386 libssl1.0.0:i386libqtwebkit4:i386 libqt4-scripttools:i386

En mi caso estos trabajando con una arquitectura de 32bits por lo empezare desde aquí.

Nos ubicamos en la terminal y ejecutamos el siguiente comando

  • Ubicamos el archivo en descargas.
               cd Descargas/ 


  • Debemos descomprimir el archivo ejecutando el siguiente comando.

               sudo tar vfzx Cisco-PT-620.tar.gz


  • Luego ingresamos a la carpeta descomprimida.

              cd PacketTracer62Student/


  • Visualizamos el contenido del archivo con el comando.

              ls

  • Una visualizados buscamos el comando y  lo ejecutamos para instalarlo.

              install


  • Luego de eso debemos leer los términos presionando la tecla enter hasta llegar al 100%.

  • Una ves que se llega al 100% , nos pide aceptar términos (Y) O (N) ejecutamos la tecla Y para continuar.

  •  Luego de haber aceptado los términos presionamos la tecla enter para seleccionar la ruta de instalación predeterminada.

  • Luego de eso debemos ir pulsando así mismo la tecla Y para ir aceptando los términos que nos va dando.

  • Esperamos que concluya la instalación.

  • Para ejecutar el programa debemos hacerlo con el siguiente comando.
               packettracer

jueves, 10 de diciembre de 2015

Primera Semana


En la primera semana con Scratch vimos como hacer diálogos entre dos o mas objetos el cual se trataba de ir coordinando los mensajes enviamos como los recibidos para que exista un buen dialogo entre objetos.

A continuación les enseñare algunas ejemplos que desarrolle con Scratch.

  • Ejemplo N° 1
Diálogo entre tres objetos.

AUTOR: Byron Guanuchi

Aquí el link del código 


  • Ejemplo N° 2
Diálogo entre dos objetos utilizando los eventos de enviar y recibir mensajes.


AUTOR: Byron Guanuchi

Aquí el link del código 


  • Ejercicio (Juego)

   
AUTOR: Byron Guanuchi  
Vídeo de referencia link

Aquí el link del código 

TERCERA ENTREGA DEL PROYECTO (SISTEMA DE SEGURIDAD)

En esta tercera entrega daré a conocer la conexión del tercer prototipo, de un sistema de seguridad, para eso utilizaré un sensor magnético, entonces al momento de romperse el campo magnético enviará una señal a través del arduino al relé, para que permita encender el foco, también utilizamos un LCD con el cual visualizamos el estado de la alarma, también se utilizó un teclado matricial el cual permitirá mediante una contraseña apagar el foco.

Para ello utilizaremos lo siguiente:

  • Placa Arduino

Arduino es una plataforma de hardware libre, basada en una placa con un micro-controlador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

El hardware consiste en una placa con un micro controlador y puertos de entrada y salida.Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación que es ejecutado en la placa. Se programa en el ordenador para que la placa controle los componentes electrónicos.

  • El protoboard o breadbord

Es una especie de tablero con orificios, en la cual se pueden insertar componentes electrónicos y cables para armar circuitos. Como su nombre lo indica, esta tableta sirve para experimentar con circuitos electrónicos, con lo que se asegura el buen funcionamiento del mismo. 

  • Un Potenciómetro

Un potenciómetro es una Resistencia Variable. Así de sencillo, limitan el paso de la corriente eléctrica (Intensidad) provocando una caída de tensión en ellos al igual que en una resistencia, pero en este caso el valor de la corriente y la tensión en el potenciómetro las podemos variar solo con cambiar el valor de su resistencia. 

  • Una pantalla de cristal líquido (LCD) 

Es una pantalla de panel plana, representación visual electrónica, o pantalla de vídeo que utiliza la luz modulación propiedades de los cristales líquidos. Los cristales líquidos no emiten luz directamente. 

LCDs están disponibles para mostrar imágenes arbitrarias o imágenes fijas con bajo contenido de la información que pueden mostrarse u ocultarse, como palabras predefinidas, dígitos y 7 segmentos se muestra como en un reloj digital. Ellos usan la misma tecnología básica, excepto que las imágenes arbitrarias se componen de un gran número de pequeños píxeles, mientras que otras pantallas tienen elementos más grandes.

  • Sensor Magnético 

Reacciona ante la presencia de un campo magnético. En el caso que nos ocupa, permanece normalmente cerrado y cuando se le acerca un campo magnético, se abre. por tanto mientras ambas partes permanecen juntas, el interruptor queda abierto por culpa del imán y nada sucede, pero si se abre la puerta, ambas partes se separan, el interruptor se cierra al perder el campo magnético y enciende nuestro foco.

  • Teclado Matricial

Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de modo que se pueden leer varios botones con el mismo número de pines requeridos. Un teclado matricial 4x4 solamente 4 líneas de un puerto para las filas y otras 4 líneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un micro-controlador.

  • Módulo Relé

El relé es el elemento que necesitas si quieres gestionar grandes voltajes y corrientes (como los que pueden tener en la red eléctrica de tu casa). Se trata simplemente de un interruptor eléctrico que puedes encender y apagar enviando señales desde tu placa Arduino, o cualquier otro controlador . Esto te permite desde encender y apagar la luz de tu habitación cuando alguien entre, hasta hacer una casa domótica completa, el límite aquí es tu imaginación.

  • CIRCUITO


  • CÓDIGO 

#include <Keypad.h>
#include <EEPROM.h>

#include <LiquidCrystal.h>

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

/////////////////////////////////////////
const byte filas=4; //cuatro filas
const byte columnas=4; //cuatro columnas
byte pinsFilas[filas] = {7,6,5,4};
byte pinsColumnas[columnas] = {3,2,1,0};
char teclas[filas][columnas] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
Keypad teclado = Keypad(makeKeymap(teclas), pinsFilas, pinsColumnas, filas, columnas);
/////////////////////////////////////////
char password[5];
char ingreso;
char passUser[4];
char confirmPass[4];

int i=0;
int a; //aux
int b;
const int buttonPin = A0; // Variable para el sensor magnetico
const int Rele = A3;
int buttonState = 0;
int ledverde = A1;
int ledrojo = A2;

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("   BIENVENIDO");
  lcd.setCursor(0, 1);
  lcd.print("****************");
  pinMode(ledverde, OUTPUT);
  pinMode(ledrojo, OUTPUT);
  pinMode(Rele, OUTPUT);
  pinMode(buttonPin, INPUT);
  digitalWrite(ledverde, HIGH);
  if(EEPROM.read(4)!='Z'){
    EEPROM.write(0,'4');
    EEPROM.write(1,'5');
    EEPROM.write(2,'6');
    EEPROM.write(3,'7');
    EEPROM.write(4,'Z'); 
  }
   for (int i = 0; i <= 4; i++) { 
    password[i] = EEPROM.read(i);
  }              
}

void loop() {
   buttonState = digitalRead(buttonPin); // Almacena el valor de buttonPin
  if (buttonState == HIGH) // Si buttonState == HIGH: 
  { 
    lcd.setCursor(0, 0);
    lcd.print("**** ALERTA ****");
    lcd.setCursor(0, 1);
    lcd.print("-----____-------");
    digitalWrite(Rele, HIGH); // enciende el foco
    digitalWrite(ledverde, LOW);
        digitalWrite(ledrojo, HIGH);
    //delay(2000); 
  }else{ 
   leerIngreso(1); 
  }
}

void leerIngreso(int a) {
  ingreso = teclado.getKey();
  if (ingreso != NO_KEY)
    switch (ingreso) {
      //case '*':break; checkPassword(); delay(1); break;
     case 'A':    // es como el "enter" para introducir la password
        if(evaluar(1)==1){
        correcto();
      }else{
        msgError();
        }
        reset();
       break; 
      default: //si es un numero debe imprimirlo en el LCD y ademas guardarlo en el arreglo passUser
      if(a==1){
        passUser[i] = ingreso;
        printPass(passUser[i], 5 + i, 1);
        }
        if(a==2){
        confirmPass[i] = ingreso;
        printPass(confirmPass[i], 5 + i, 1);
        }
        i++;
        if (i > 3){
          i = 0;
        }
    }
  }

void correcto(){
  lcd.setCursor(0, 1);
  lcd.print("  DESACTIVADA   ");
  digitalWrite(Rele, LOW);
  digitalWrite(ledverde, HIGH);
  digitalWrite(ledrojo, LOW);      
}

void printPass(char a, int columna, int fila ) {
  lcd.setCursor(0, 1);
  lcd.setCursor(columna, fila);
  lcd.print(a);
  delay(100);
  lcd.setCursor(columna, fila);
  lcd.print("*");
}
int evaluar(int a) {
  int j = 0;
  if (a==1){
  for (int i = 0; i <= 3; i++) {
   if (password[i] == passUser[i]) {
        j++;
    }
  }
  }
  if(a==2){
  for (int i = 0; i <= 3; i++) {
    if (passUser[i] == confirmPass[i]) {
        j++;
    }
  }
  }
  if (j == 4) {
    return j=1;
  } else {
    return j=0;
  }
}

void reset() {
  lcd.setCursor(0, 0);
  lcd.print("**** ALERTA ****");
  lcd.setCursor(0, 1);
  lcd.print("");
  for(int i =0;i<=3;i++){
  passUser[i]=NO_KEY;
  confirmPass[i]=NO_KEY;
  }
  i=0;
}

void msgError(){ 
        lcd.setCursor(0, 0);
        lcd.print("      ERROR      ");
        delay(500);
  }

  • VÍDEO


  • PODCAST

Segunda Semana


En esta segunda semana vimos sobre sensores y operadores

  • SENSORES


Los sensores nos dan valores con información del entorno de la aplicación o información de condiciones que se cumplen o no, para ello realizar preguntas al usuario utilizando los sensores de scratch el cual me permitirá realiza cualquier pregunta, también consta de su respuesta el cual lo podemos visualizar

En este caso utilizamos los siguientes:

  • OPERADORES

Los operadores nos permite realizar cálculos matemáticos o comprobar condiciones a partir de la información de los sensores o variables.

En esta semana utilizamos el operador unir




Le presentamos un ejemplo:




  • PRÁCTICA 

Dialogo (volcán COTOPAXI)