Paso 5: Arduino Sketch - programación
Sketch\code final para Arduino a continuación:/*
Bosquejo \ código por Chuppandi aka Subu
Chuppandi
www.chuppandee.blgospot.com
*/
#include < StopWatch.h >
#include < LiquidCrystal.h >
LiquidCrystal lcd (7, 8, 9, 10, 11, 12); Declaración de pines del LCD
int switchPin1 = 3; / / switch1 es conectado al pin 3
int switchPin2 = 2; / / switch2 está conectada al pin 2
int ledPin = 13; LED está conectado al pin 13 de arduino
int val1;
int val2;
int frameRate = 500; la velocidad de fotogramas (fotogramas por segundo) en el que el cronómetro corre - cambio para adaptarse a
largo intervalo de tiempo = (1000/frameRate); intervalo de parpadeo
char buf [15f00]; búfer de cadena para la función itoa
sin firmar largo starttime = 0;
endtime larga sin signo = 0;
sin firmar largo lasttime = 0;
currenttime larga sin signo = 0;
Cronómetro sw_millis; MILLIS (por defecto)
Cronómetro sw_micros(StopWatch::MICROS);
Cronómetro sw_secs(StopWatch::SECONDS);
void setup() {}
LCD.Begin(16,2);
pinMode (switchPin1, entrada);
pinMode (switchPin2, entrada);
pinMode (ledPin, salida);
Serial.Begin(9600);
sw_millis.Start();
sw_micros.Start();
sw_secs.Start();
}
void loop() {}
val1 = digitalRead(switchPin1); leer valor de entrada y almacena en val
val2 = digitalRead(switchPin2); leer valor de entrada y almacena en val
Si (val1 == baja & & val2 == LOW)
{
digitalWrite (ledPin, HIGH); encender LED
CurrentTime = (sw_millis.elapsed() - lasttime);
Serial.Print("sw_millis=");
Serial.println(sw_millis.Elapsed());
Serial.Print("sw_micros=");
Serial.println(sw_micros.Elapsed());
Serial.Print("sw_secs=");
Serial.println(sw_secs.Elapsed());
LCD.Clear();
LCD.Print("secs:");
flotador seg = sw_millis.elapsed () / 10;
LCD.Print(SEC);
int elapsedMinutes = (currenttime / 60000L);
int elapsedSeconds = (currenttime / 1000 L);
int elapsedFrames = (currenttime / intervalo);
int fractionalSecs = (int) (elapsedSeconds % 60L);
int fraccional = (int) (elapsedFrames % tasa de fotogramas); utilizar modulo operador para obtener la parte fraccionaria de segundos 100
fractionalSecs = (int) (elapsedSeconds % 60L); utilizar modulo operador para obtener la parte fraccionaria de segundos 60
int fractionalMins = (int) (elapsedMinutes % 60L); utilizar modulo operador para obtener la parte fraccionaria de 60 minutos
LCD.Clear(); claro la pantalla LCD
LCD.Print("Time:");
Si (fractionalMins < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fractionalMins, buf, 10)); convertir el int en una cadena y una parte fraccional de 60 minutos a la pantalla de impresión
LCD.Print(":"); imprimir un Colán.
Si (fractionalSecs < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fractionalSecs, buf, 10)); convertir el int en una cadena e imprimir una parte fraccional de 60 segundos en la pantalla LCD
LCD.Print(":"); imprimir un Colán.
Si (fraccional < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fraccional, buf, 10)); convertir el int en una cadena y una parte fraccional de 25 Frames a la pantalla de impresión
lcd.setCursor (0, 1);
LCD.Print ("actuador TIMER");
EndTime = currenttime;
/ * lcd.print ("ms =");
LCD.Print(sw_millis.Elapsed());
lcd.setCursor (0, 1);
LCD.Print("US=");
LCD.Print(sw_micros.Elapsed());
*/
Delay(10);
}
Si (val1 == LOW) {}
digitalWrite (ledPin, LOW);}
Else {}
lasttime = sw_millis.elapsed();
endTime = (sw_millis.elapsed() - starttime);
endTime = (currenttime - starttime);
digitalWrite (ledPin, LOW);
int elapsedMinutes = (endtime / 60000L);
int elapsedSeconds = (endtime / 1000 L);
int elapsedFrames = (endtime / intervalo);
int fractionalSecs = (int) (elapsedSeconds % 60L);
int fraccional = (int) (elapsedFrames % tasa de fotogramas); utilizar modulo operador para obtener la parte fraccionaria de segundos 100
fractionalSecs = (int) (elapsedSeconds % 60L); utilizar modulo operador para obtener la parte fraccionaria de segundos 60
int fractionalMins = (int) (elapsedMinutes % 60L); utilizar modulo operador para obtener la parte fraccionaria de 60 minutos
LCD.Clear(); claro la pantalla LCD
LCD.Print("Time:");
Si (fractionalMins < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fractionalMins, buf, 10)); convertir el int en una cadena y una parte fraccional de 60 minutos a la pantalla de impresión
LCD.Print(":"); imprimir un Colán.
Si (fractionalSecs < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fractionalSecs, buf, 10)); convertir el int en una cadena e imprimir una parte fraccional de 60 segundos en la pantalla LCD
LCD.Print(":"); imprimir un Colán.
Si (fraccional < 10) {/ / teclado en ceros
LCD.Print("0"); Añadir un cero
}
LCD.Print (itoa (fraccional, buf, 10)); convertir el int en una cadena y una parte fraccional de 25 Frames a la pantalla de impresión
lcd.setCursor (0, 1);
LCD.Print ("actuador TIMER");
}
}
Final del programa