/*
* LAB Name: Arduino Timer Preloading
*/
#include <LiquidCrystal.h>
unsigned long Mytime;
unsigned long Mytimeold;
unsigned long TimeStart;
unsigned long TimeStop;
boolean StopperRun=false;
unsigned long StackTime[ 9 ];
string StackEvent[ 9 ];
int datacounter=0;
int lcdcounter=0;
int lcdline=0;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7); // LCD pins (RS, E, D4, D5, D6, D7)
ISR(TIMER1_OVF_vect)
{
Mytime = micros();
// digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
Serial.print(Mytime);
Serial.print("\t\t"); // Double tab
Serial.print("Δt=");
Serial.print(Mytime-Mytimeold);
Serial.print("\t\t");
Serial.print("LDR1=");
Serial.print(!digitalRead(4)); // LDR1 status
Serial.print("\t");
Serial.print("LDR2=");
Serial.print(!digitalRead(3)); // LDR2 status
Serial.print("\t");
Serial.print("UP=");
Serial.print(!digitalRead(2)); // UP button status
Serial.print("\t");
Serial.print("Down=");
Serial.println(!digitalRead(13)); // DOWN button status
Mytimeold=Mytime;
// Handle Timer Interrupt
}
void setup()
{
Serial.begin(9600);
// pinMode(LED_BUILTIN, OUTPUT); // Pin13 felel meg a BiltInLED-nek, így az foglalt
TCCR1A = 0; // Init Timer1
TCCR1B = 0; // Init Timer1
TCCR1B |= B00000100; // Prescalar = 256
TCNT1 = 34286; // Timer Preloading: 0,500 s
TIMSK1 |= B00000001; // Enable Timer Overflow Interrupt
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("ARDUINO TIMERS");
delay(1000);
lcd.clear();
pinMode(6,INPUT); // Start button
pinMode(5,INPUT); // Stop button
pinMode(4,INPUT); // LDR1 photoresistor-sensor
pinMode(3,INPUT); // LDR2 photoresistor-sensor
pinMode(2,INPUT); // UP button
pinMode(13,INPUT); // DOWN button
}
void loop()
{
/*if(digitalRead(6)== LOW && StopperRun== false) // Start button pressed
{
TimeStart = micros();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(TimeStart);
StopperRun=true;
}
if(digitalRead(5)== LOW && StopperRun== true) // Stop button pressed
{
TimeStop = micros();
lcd.setCursor(0,1);
lcd.print(TimeStop);
StopperRun=false;
}
*/
if(digitalRead(6)== LOW && StopperRun== false && datacounter<10) // Start button pressed
{
TimeStart = micros();
StackTime[datacounter]=TimeStart
StackEvent[datacounter]="Start"
datacounter++
StopperRun=true;
text=datacounter + "Start:" + TimeStart;
lcdview(text);
}
}
void lcdview(char* text)
{
if(lcdline== 0)
{
lcd.clear();
lcd.setCursor(0, 0);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("button pressed:");
lcd.setCursor(0, 1);
lcd.print(text);
lcd.print(" code: ");
lcd.print(receiver.decodedIRData.command);
}