3. const int sensor = 0;
const int led rojo = 5;
const int led azul = 6;
long milivolts;
long temperatura;
long int brillo;
void setup () {
pinMode(ledrojo, OUTPUT);
pinMode(ledazul, OUTPUT);
}
7. /* Definicion de Variables
*/
long time1=0; //Variable de tiempo para el inicio.
long time2=0; //Variable de tiempo para el final.
int buttonPin1 = 10; //pin para el boton 1
int buttonPin2 = 9; //pin para el boton 2
int ledPin = 13; //Pin àra el led
int buttonState1 = 0; //Variable para leer boton1
int buttonState2 = 0; //Variable para leer boton2
int clock = 100; //retardo del reloj
int hour = 0; //horas
int min = 0; //minutos
int sec = 0; //segundos
int dcsec = 0; //decimas de segundo
boolean run = true; //estado del cronometro
void setup() {
clearLCD(); //Borra el LCD
pinMode(ledPin, OUTPUT); //Inicia el pin de LED como salida
Serial.begin(9600); //Configura la velocida del puerto serie
}
8. void loop() {
time1 = millis(); //comprueba el tiempo al inicio del loop
buttonState1 = digitalRead(buttonPin1); //Lees estado boton1
buttonState2 = digitalRead(buttonPin2); //Lees estado boton2
if (buttonState1 == HIGH) { //Si el boton1 esta pulsado
digitalWrite(ledPin, HIGH); //Enciende el led
hour = 0; //Pone el contador a cero
min = 0;
sec = 0;
dcsec = 0;
run=false; //Para el cronometro
delay(500); //pausa
printtime();
selectLineTwo();
Serial.print("Parado");
digitalWrite(ledPin, LOW); //apaga el led
}
if (buttonState2 == HIGH) { //Si el boton1 esta pulsado
digitalWrite(ledPin, HIGH); //Enciende el led
if (run == true) { //Comprueba si el cronometro esta en marcha
run=false; //Para el cronometro
selectLineTwo();
Serial.print("Parado");
}
else { //si esta parado
run=true; //lo pone en marcha
}
delay(500); //pausa
digitalWrite(ledPin, LOW); //apaga el led
}
9. if (run == true) { //Comrprueba el estado del cronometro (Marcha o paro)
dcsec = dcsec + 1; //Suma una decisima de segundo
if (dcsec > 9) { //Contador de decimas a segundos a minutos y a horas
dcsec = 0;
sec = sec + 1;
}
if (sec > 59) {
sec = 0;
min = min + 1;
}
if (min > 59) {
min = 0;
hour = hour + 1;
}
if (hour > 23) {
hour = 0;
}
time2 = millis(); //comprueba el tiempo al final del loop
time2=time2 - time1; //calcula la diferencia
if (time2 >=90 ){
time2=50;
}
clock=90-time2; //hace la rectificacion con delay
delay(clock);
printtime(); //Imrpime el tiempo en el LCD
}
10. /*
Definicion de funciones de control LCD
printtime();
Escribe el tiempo
selectLineOne();
Escribir en la 1ª linea
selectLineTwo();
Escribir en la 1ª linea
clearLCD();
Borrar el LCD
*/
void printtime(){
clearLCD();
Serial.print(hour);
Serial.print(":");
Serial.print(min);
Serial.print(":");
Serial.print(sec);
Serial.print(".");
Serial.print(dcsec);
time2 = millis();
time2=time2 - time1;
Serial.print(" ");
Serial.print(time2);
}
void selectLineOne(){ //Seleccionar 1ª línea
Serial.print(0xFE, BYTE); //comando control
Serial.print(128, BYTE); //posición para la línea 1
}
void selectLineTwo(){ //Seleccionar 2ª línea
Serial.print(0xFE, BYTE); //comando control
Serial.print(192, BYTE); //posición
}
void clearLCD(){ //Borrar LCD
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE); //comando de borrado
}