INTEGRANTES :

              Gustavo Tolentino Samar                                               William Percy Cahuana rosales




















CURSO DE :

           Arduino y algunas aplicaciones

Ambiente de programación de Arduino

Explorando el ambiente de programación con la ejecución de blink.



COMENTARIO 

En esta parte no habla de las partes del programa de ARDUINO y algunas funciones y variables que se van a utilizar mas adelante.



CIRCUITO MONTADO EN ARDUINO FÍSICO .


CÓDIGO 

/*
 Blink
 Turns on an LED on for one second, then off for one second, repeatedly.
 Most Arduinos have an on-board LED you can control. On the Uno and
 Leonardo, it is attached to digital pin 13. If you're unsure what
 pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc
 This example code is in the public domain.
 modified 8 May 2014
 by Scott Fitzgerald   */
// the setup function runs once when you press reset or power the board
void setup() {
 // initialize digital pin 13 as an output.
 pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
 digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(1000);              // wait for a second
 digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
 delay(1000);              // wait for a second
}
VÍDEO DE MUESTRA




TAREA DE CLASE 

circuito 


código

/*
  circuito de apredido tyres veces y apagado ..una secuencia de este
 */
// este es una funcion para designar los pines...
void setup() 
{
  // designamos pin 13 como un pin de salida.
  pinMode(13, OUTPUT);
}
// este es un bucle infinito siempre va a repetir...
void loop()
{
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(100);              // wait for a second
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(100);              // wait for a second
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
  }
video





Diferentes rutinas del prototipo de chaleco para ciclista

programas AltoSimple:

circuito 

codigo
/*
 codigo de led alto simple
 */
 int leds[]={4,5,6,7,8,9,10,11,12,13};
 int tiemporet=400;

 void setup()
 {
pinMode (leds[0],OUTPUT);
pinMode (leds[1],OUTPUT); 
pinMode (leds[2],OUTPUT);
pinMode (leds[3],OUTPUT); 
pinMode (leds[4],OUTPUT);
pinMode (leds[5],OUTPUT); 
pinMode (leds[6],OUTPUT);
pinMode (leds[7],OUTPUT); 
pinMode (leds[8],OUTPUT);
pinMode (leds[9],OUTPUT); 
 }

 void loop ()
 {
 digitalWrite (leds[0],HIGH);
 digitalWrite (leds[1],HIGH);
 digitalWrite (leds[2],HIGH);
 digitalWrite (leds[3],HIGH);
 digitalWrite (leds[4],HIGH);
 digitalWrite (leds[5],HIGH);
 digitalWrite (leds[6],HIGH);
 digitalWrite (leds[7],HIGH);
 digitalWrite (leds[8],HIGH);
 digitalWrite (leds[9],HIGH);
 delay (tiemporet);
 digitalWrite (leds[0],LOW);
 digitalWrite (leds[1],LOW);
 digitalWrite (leds[2],LOW);
 digitalWrite (leds[3],LOW);
 digitalWrite (leds[4],LOW);
 digitalWrite (leds[5],LOW);
 digitalWrite (leds[6],LOW);
 digitalWrite (leds[7],LOW);
 digitalWrite (leds[8],LOW);
 digitalWrite (leds[9],LOW);
 delay(tiemporet);
 }


vídeo 





SIMPLIFICAMOS EL CÓDIGO Y COMPLETAMOS EL CIRCUITO TAMBIÉN  USAMOS LA FUNCIÓN "FOR"




               

CIRCUITO 


CÓDIGO 

/*
 codigo de led alto simple
 */
 int leds[]={4,5,6,7,8,9,10,11,12,13};
 int nl=10;
  int tiemporet=400;
  int i;
  
 void setup()
 {
pinMode (2,INPUT);
for (i=0;i<nl;i++)
     {
        pinMode (leds[i],OUTPUT);
     }
 }
 void loop ()
 {
  boolean pinalto=digitalRead(2);
        if (pinalto==HIGH)
       {
           for (i=0;i<nl;i++)
            {
               digitalWrite (leds[i],HIGH);
            }
     delay (tiemporet);
         for (i=0;i<nl;i++)
               {
             digitalWrite (leds[i],LOW);
               }
       delay(tiemporet);
       }
 }
                                                                                VÍDEO





Realiza el encendido de los diez leds de la rutina Derecha.

CÓDIGO 

/* Programa DerechaEstructuras.ino
 Realiza el encendido de los diez leds de la rutina Derecha,
 y en cuyo código se incluye el uso de estructuras
 de programación */
// Variables
int bot = 2;
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int tiempoRet = 400;
int estePin;
int cuenta_der = 0;
boolean bot_der = LOW;
// Función setup
void setup ()
{
 pinMode (bot,INPUT);
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 pinMode (led[estePin],OUTPUT);
 }
}
// Función loop
void loop ()
{
 bot_der = digitalRead (bot);
 if (bot_der ==HIGH)
 {
 switch (cuenta_der)
 {
 case 0:
 digitalWrite (led[0],HIGH);
 digitalWrite (led[9],HIGH);
 digitalWrite (led[6],HIGH);
 break;
 case 1:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[4],HIGH);
 digitalWrite (led[8],HIGH);
 break;
 case 2:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[3],HIGH);

 digitalWrite (led[5],HIGH);
 break;
 default:
 ;
 }
 delay (tiempoRet);
 cuenta_der++;
 if (cuenta_der > 3)
 {
 cuenta_der = 0;
 }
 }
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],LOW);
 }
}

VÍDEO



Realiza el encendido de los diez leds de la rutina Izquierda.


CÓDIGO 
/* Programa IzquierdaEstructuras.ino
 Realiza el encendido de los diez leds de la rutina
 Izquierda, y en cuyo código se incluye el uso de
 Estructuras de programación */
// Variables
int bot = 3;
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int tiempoRet = 400;
int estePin;
int cuenta_izq = 0;
boolean bot_izq = LOW;
// Función setup
void setup ()
{
 pinMode (bot,INPUT);
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 pinMode (led[estePin],OUTPUT);
 }
}
// Función loop
void loop ()
{
 bot_izq = digitalRead (bot);
 if (bot_izq==HIGH)
 {
 switch (cuenta_izq)
 {
 case 0:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[8],HIGH);
 digitalWrite (led[3],HIGH);
 break;
 case 1:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[4],HIGH);
 digitalWrite (led[9],HIGH);
 break;
 case 2:
 digitalWrite (led[6],HIGH);
 digitalWrite (led[7],HIGH);
 digitalWrite (led[0],HIGH);
 break;
 default: ; }
 delay (tiempoRet);
 cuenta_izq++;
 if (cuenta_izq > 3)
 {
 cuenta_izq = 0;
 }
 }
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],LOW);
 }
}

VÍDEO 





CICLO DE VUELTAS ....


CÓDIGO 

/* Programa OciosaSimple.ino
 Realiza el encendido de los diez leds de la rutina Ociosa,
 cuyo código se escribe con sentencias simples */
// Variables
int led[] = {4,5,6,7,8,9,10,11,12,13};
int tiempoRet = 400;
int tiempoRetOciosa = 200;
// Función setup
void setup ()
{
 pinMode (led[0],OUTPUT);
 pinMode (led[1],OUTPUT);
 pinMode (led[2],OUTPUT);
 pinMode (led[3],OUTPUT);
 pinMode (led[4],OUTPUT);
 pinMode (led[5],OUTPUT);
 pinMode (led[6],OUTPUT);
 pinMode (led[7],OUTPUT);
 pinMode (led[8],OUTPUT);
 pinMode (led[9],OUTPUT);
}
// Función loop
void loop ()
{
 digitalWrite (led[0],HIGH);
 digitalWrite (led[1],HIGH);
 delay (tiempoRetOciosa);
 digitalWrite (led[0],LOW);
 digitalWrite (led[1],LOW);
 digitalWrite (led[4],HIGH);
 digitalWrite (led[2],HIGH);
 delay (tiempoRetOciosa);
 digitalWrite (led[4],LOW);
 digitalWrite (led[2],LOW);
 digitalWrite (led[3],HIGH);
 digitalWrite (led[6],HIGH);
 delay (tiempoRetOciosa);
 digitalWrite (led[3],LOW);
 digitalWrite (led[6],LOW);
 digitalWrite (led[5],HIGH);
 digitalWrite (led[7],HIGH);
 delay (tiempoRetOciosa);
 digitalWrite (led[5],LOW);
 digitalWrite (led[7],LOW);
}
VÍDEO





PROYECTO FINAL  UNIR TODAS LAS PARTES ..

En esta parte vamos a juntar todas las parte anteriores y este es el final del proyecto ..





CÓDIGO


/* Programa ChalecoV5.ino
 Realiza el control de encendido de los leds del chaleco
 de seguridad para ciclistas */
// Variables
int bot[] = {1,2,3};
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int numBots = 3;
int tiempoRet = 400;
int tiempoRetOciosa = 200;
int estePin;
int cuenta_der = 0;
int cuenta_alto = 0;
int cuenta_izq = 0;
int cuenta_ocio = 0;
boolean bot_derecha = LOW;
boolean bot_alto = LOW;
boolean bot_izquierda = LOW;
// Función setup
void setup ()
{
 for (estePin = 0; estePin < numBots; estePin++)
 {
 pinMode (bot[estePin],INPUT);
 }
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 pinMode (led[estePin],OUTPUT);
 }
}
// Función loop
void loop ()
{
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin], LOW);
 }
 bot_derecha = digitalRead (bot[0]);
 bot_alto = digitalRead (bot[1]);
 bot_izquierda = digitalRead (bot[2]);
 if (bot_derecha==HIGH)
{
 Derecha ();
}
 else if (bot_alto==HIGH
)
{
 Alto ();
}
 else if (bot_izquierda==HIGH
)
{
 Izquierda ();
}
 else
{
 Ociosa ();
}
}
// Función Derecha
void Derecha () {
 switch (cuenta_der)
{
 case 0:
 digitalWrite (led[0],HIGH);
 digitalWrite (led[8],HIGH);
 digitalWrite (led[6],HIGH);
 break;
 case 1:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[9],HIGH);
 digitalWrite (led[5],HIGH);
 break;
 case 2:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[3],HIGH);
 digitalWrite (led[4],HIGH);
 break;
 default:;
}
 delay (tiempoRet);
 cuenta_der++;
 if (cuenta_der > 3)
{
 cuenta_der = 0;
 }
}
// Función Alto
void Alto ()
{
 if (cuenta_alto == 1)
 {
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],HIGH);
 }
 }
 else
 {
 for (estePin = 0; estePin < numLeds; estePin++)
 {
 digitalWrite (led[estePin],LOW);
 }
 }
 delay (tiempoRet);
 cuenta_alto++;
 if (cuenta_alto > 1)
 {
 cuenta_alto = 0;
 }
}
// Función Izquierda
void Izquierda ()
{
 switch (cuenta_izq)
 {
 case 0:
 digitalWrite (led[2],HIGH);
 digitalWrite (led[9],HIGH);
 digitalWrite (led[4],HIGH);
 break;
 case 1:
 digitalWrite (led[1],HIGH);
 digitalWrite (led[8],HIGH);
 digitalWrite (led[5],HIGH);
 break;
 case 2:
 digitalWrite (led[0],HIGH);
 digitalWrite (led[7],HIGH);
 digitalWrite (led[6],HIGH);
 break;
 default: ;
 }
 delay (tiempoRet);
 cuenta_izq++;
 if (cuenta_izq > 3)
 {
 cuenta_izq = 0;
 }
}
// Función Ociosa
void Ociosa ()
{
 digitalWrite (led[cuenta_ocio],HIGH);
 digitalWrite (led[cuenta_ocio+4],HIGH);
 delay (tiempoRetOciosa);
 cuenta_ocio++;
 if (cuenta_ocio > 3)
 {
 cuenta_ocio = 0;
 }
}

DESPUÉS DE ESTO LO CARGAMOS A LA TARJETA  "ARDUINO "




CIRCUITO


VÍDEO



trabajo final evaluado 



FIN DE LA SEMANA DOS 


SEMANA TRES
Actividad de alarma parte(1)
/* Programa AlarmaV3.ino
Hace sonar intermitentemente un buzzer, y al mismo
tiempo prende dos leds intermitentemente, hasta que
se oprime el botón de apagado de la alarma */
// Variables
int pinBuzzer = 15;
int pinLed1 = 16;
int pinLed2 = 17;
int pinBoton = 2;
boolean banderaAlarma = HIGH;
int rep;
int numRep = 10;
int tiempoEnc = 600;
int tiempoApag = 400;
int tiempoEspera = 9900;
// Función setup
void setup()
{
pinMode(pinBuzzer, OUTPUT);
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinBoton, INPUT);
attachInterrupt(0, Interruptor, RISING);
}
// Función loop
void loop()
{
banderaAlarma = HIGH;
do
{
Alarma();
} while(banderaAlarma == HIGH);
}
// Función Alarma
void Alarma()
{
for (rep = 0; rep < numRep; rep++)
{
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
delay(tiempoEnc);
digitalWrite(pinBuzzer, LOW);
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
delay(tiempoApag);
}
delay(tiempoEspera);
}
// Función Interruptor
void Interruptor()
{
banderaAlarma = LOW;
}
Actividad sobre la activación del motor parte (2)

/* Programa ActivaMotorV2.ino
Realiza el control del motor de CD del pastillero,
con base en la señal de un interruptor de lámina
activa alta */
// Variables
int pinIntLamina = 5;
int pinIN1 = 7;
int pinIN2 = 8;
int pinPWM = 9;
boolean estadoIntLamina;
int valorPWM = 230;
long tiempoActual;
long tiempoActivacion[5];
int toma = 0;
// Función setup
void setup()
{
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinIntLamina, INPUT);
tiempoActivacion[0] = 30000;
tiempoActivacion[1] = 60000;
tiempoActivacion[2] = 120000;
tiempoActivacion[3] = 240000;
tiempoActivacion[4] = 24*60*60000;
}
// Función loop
void loop()
{
digitalWrite(pinIN1, 0);
digitalWrite(pinIN2, 0);
analogWrite(pinPWM, valorPWM);
do
{
tiempoActual = millis();
} while(tiempoActual < tiempoActivacion[toma]);
activaMotor();
toma++;
}
/* Función que hace que el motor mueva al carrusel del
pastillero un compartimento */
void activaMotor()
{
do
{
digitalWrite(pinIN1, 1);
estadoIntLamina = digitalRead(pinIntLamina);
} while(estadoIntLamina == HIGH);
delay(200);
do
{
digitalWrite(pinIN1, 1);
estadoIntLamina = digitalRead(pinIntLamina);
}
while(estadoIntLamina == LOW);
digitalWrite(pinIN1, 0);
}

Control de el LCD parte (3)

/* Programa RelojLCDv4.ino
Despliega en un LCD la hora, con formato h:min:seg
de 24 h.
// Variables
long tiempoMs;
long tiempoBase;
long tiempoActual;
long hora;
long minuto;
long horaActual;
long minActual;
long segActual;
int tiempoRet = 500;
// Se incluye el código de la biblioteca del LCD
#include <LiquidCrystal.h>
// Inicializa la biblioteca con el número de los pines
LiquidCrystal lcd(4, 6, 11, 12, 13, 14);
// Función setup
void setup()
{
// Hora de reinicio
hora = 23;
minuto = 59;
// Cálculo tiempo base
ConversionHminMs();
tiempoBase = tiempoMs;
// Configuración del número de columnas y renglones del LCD
lcd.begin(16,2);
}
// Función loop
void loop()
{
// Calcula el tiempoActual con resprcto al tiempoBase
2
tiempoActual = millis() + tiempoBase;
// Conversión del tiempoActual a horas:munutos:segundos
ConversionMsHmin();
// Despliegue de la hora
Despliegue();
// Deja pasar cerca de un segundo
delay(tiempoRet);
}
// Función ConversionHminMs
void ConversionHminMs()
{
minuto = minuto + hora*60;
tiempoMs = minuto*60000;
}
// Función ConversionMsHmin
void ConversionMsHmin()
{
horaActual = tiempoActual/60/60000;
minActual = tiempoActual/60000 - horaActual*60;
segActual = tiempoActual/1000 - horaActual*60*60 -
minActual*60;
}
// Función Despliegue
void Despliegue()
{
// Se inicializa el LCD
lcd.begin(16,2);
// Se coloca el cursor en el origen
lcd.setCursor(0,0);
// Limpia el primer renglón
lcd.print(" ");
// Se coloca el cursor en el origen
lcd.setCursor(0,0);
// Escribe el letrero Hora
lcd.print("Hora ");
// Escribe horas:minutos:segundos
lcd.print(horaActual);
lcd.print(":");
lcd.print(minActual);
lcd.print(":");
lcd.print(segActual);


Despliegue de la hora-toma parte(4)

/* Función DespliegueHoraToma
Despliega en el segundo renglón del LCD la hora de la toma de
las pastillas, indicando también a qué toma corresponde */
void DespliegueHoraToma()
{
Despliegue();
// Calcula el tiempo de la toma con respecto al tiempoBase
tiempoActual = tiempoActivacion[toma];
// Conversión del tiempoActual a horas:munutos
ConversionMsHmin();
// Se coloca el cursor en el origen del segundo renglón
lcd.setCursor(0,1);
// Limpia el segundo renglón
lcd.print(" ");
// Se coloca el cursor en el origen
lcd.setCursor(0,1);
// Escribe el número de la toma
lcd.print(toma+1);
// Escribe el letrero "a toma "
lcd.print("a toma ");
// Escribe horas:minutos
lcd.print(horaActual);
lcd.print(":");
lcd.print(minActual);
}

LA INTEGRACIÓN DE LOS CÓDIGOS FINAL DEL PASTILLERO



/* Programa PastilleroV10.ino
Controla la operación del pastillero.
Contiene, además de las funciones setup() y loop(),
las funciones ConversionHminMs(), ConversionMsHmin(),
ActivaMotor(), Alarma(), Despliegue(),
DespliegueHoraToma() e Interruptor(). */
// Variables Alarma
int pinBuzzer = 15;
int pinLed1 = 16;
int pinLed2 = 17;
int pinBoton = 2;
boolean banderaAlarma = HIGH;
int rep;
int numRep = 10;
int tiempoEnc = 600;
int tiempoApag = 400;
int tiempoEspera = 9900;
// Variables ActivaMotor
int pinIntLamina = 5;
int pinIN1 = 7;
int pinIN2 = 8;
int pinPWM = 9;
boolean estadoIntLamina;
int valorPWM = 230;
long tiempoActivacion[5];
int toma = 0;
// Variables Despliegue
long tiempoMs;
long tiempoBase;
long tiempoActual;
long hora;
long minuto;
long horaActual;
long minActual;
int tiempoRet = 19000;
// Se incluye el código de la biblioteca del LCD
#include <LiquidCrystal.h>
// Inicializa la biblioteca con el número de los pines
LiquidCrystal lcd(4, 6, 11, 12, 13, 14);
2
// Función setup
void setup()
{
// Hora de reinicio
hora = 8;
minuto = 39;
// Cálculo tiempo base
ConversionHminMs();
tiempoBase = tiempoMs;
// Configuración del número de columnas y renglones del LCD
lcd.begin(16,2);
// Configuración terminales buzzer, led y botón alarma
pinMode(pinBuzzer, OUTPUT);
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinBoton, INPUT);
attachInterrupt(0, Interruptor, RISING);
// Configuración terminales del puente H y del interruptor
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinIntLamina, INPUT);
// Cálculo tiempos de activación del motor
// Hora de la primera toma
hora = 9;
minuto = 00;
ConversionHminMs();
tiempoActivacion[0] = tiempoMs;
// Hora de la segunda toma
hora = 12;
minuto = 30;
ConversionHminMs();
tiempoActivacion[1] = tiempoMs;
// Hora de la tercera toma
hora = 15;
minuto = 00;
ConversionHminMs();
tiempoActivacion[2] = tiempoMs;
// Hora de la cuarta toma
hora = 18;
minuto = 45;
ConversionHminMs();

tiempoActivacion[3] = tiempoMs;
// En caso de que haya más tomas, agregarlas a continuación:
// Hora final
hora = 23;
minuto = 59;
ConversionHminMs();
tiempoActivacion[4] = tiempoMs;
}
// Función loop
void loop()
{
// Envío señales iniciales al puente H: motor detenido
digitalWrite(pinIN1, 0);
digitalWrite(pinIN2, 0);
analogWrite(pinPWM, valorPWM);
Despliegue();
delay(tiempoRet);
/* Mientras el tiempoActual sea menor que el tiempoActivacion[toma]
+ tiempoBase, sólo despliega la hora */
do
{
Despliegue();
delay(tiempoRet);
tiempoActual = millis() + tiempoBase;
} while(tiempoActual < tiempoActivacion[toma]);
/* Cuando el tiempoActual es mayor que el tiempoActivacion[toma]
se sale de la estructura do–while, activa el motor, despliega la
hora de toma y enciende la alarma */
ActivaMotor();
banderaAlarma = HIGH;
do
{
// Despliegue de la hora de toma
DespliegueHoraToma();
Alarma();
} while(banderaAlarma == HIGH);
/* La alarma se apagará cuando se oprima el botón de apagado, el
cual hará que la variable banderaAlarma tome el valor LOW, de
manera que se saldrá de la estructura do–while anterior */
// Borra lcd
lcd.clear();
toma++;

}
/* Función ConversionHminMs
Convierte el tiempo en horas y minutos a milisegundos */
void ConversionHminMs()
{
minuto = minuto + hora*60;
tiempoMs = minuto*60000;
}
/* Función ConversionMsHmin
Convierte el tiempo en milisegundos a horas y minutos */
void ConversionMsHmin()
{
horaActual = tiempoActual/60/60000;
minActual = tiempoActual/60000 - horaActual*60;
}
/* Función Despliegue
Despliega en un LCD la hora, con formato hora:minutos 24 h

void Despliegue()
{
// Calcula el tiempoActual con respecto al tiempoBase
tiempoActual = millis() + tiempoBase;
// Conversión del tiempoActual a horas:munutos
ConversionMsHmin();
// Se inicializa el LCD
lcd.begin(16,2);
// Se coloca el cursor en el origen
lcd.setCursor(0,0);
// Limpia el primer renglón
lcd.print(" ");
// Se coloca el cursor en el origen
lcd.setCursor(0,0);
// Escribe el letrero Hora
lcd.print("Hora ");
// Escribe horas:minutos

lcd.print(horaActual);
lcd.print(":");
lcd.print(minActual);
}
/* Función Activa Motor
Controla el motor de CD del pastillero, con base en
la señal de un interruptor de lámina activa alta */
void ActivaMotor()
{
do
{
digitalWrite(pinIN1, 1);
estadoIntLamina = digitalRead(pinIntLamina);
} while(estadoIntLamina == HIGH);
delay(200);
do
{
digitalWrite(pinIN1, 1);
estadoIntLamina = digitalRead(pinIntLamina);
} while(estadoIntLamina == LOW);
digitalWrite(pinIN1, 0);
}
/* Función Alarma
Hace sonar intermitentemente un buzzer, y al mismo tiempo
prende un led intermitentemente, hasta que se oprime el
botón de apagado de la alarma */
void Alarma()
{
for (rep = 0; rep < numRep; rep++)
{
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
delay(tiempoEnc);
digitalWrite(pinBuzzer, LOW);
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
delay(tiempoApag);
}
delay(tiempoEspera);
}
/* Función Interruptor
Rutina de servicio de interrupción */
void Interruptor()
{
banderaAlarma = LOW;
}
/* Función DespliegueHoraToma
Despliega en el segundo renglón del LCD la hora de la toma de
las pastillas, indicando también a qué toma corresponde */
void DespliegueHoraToma()
{
Despliegue();
// Calcula el tiempo de la toma con respecto al tiempoBase
tiempoActual = tiempoActivacion[toma];
// Conversión del tiempoActual a horas:munutos
ConversionMsHmin();
// Se coloca el cursor en el origen del segundo renglón
lcd.setCursor(0,1);
// Limpia el segundo renglón
lcd.print(" ");
// Se coloca el cursor en el origen
lcd.setCursor(0,1);
// Escribe el número de la toma
lcd.print(toma+1);
// Escribe el letrero "a toma "
lcd.print("a toma ");
// Escribe horas:minutos
lcd.print(horaActual);
lcd.print(":");
lcd.print(minActual);
}

VIDEO







Comentarios