Lesson 10 Timer Code Example
// By Roee Bloch TIMER EXAMPLE
//All right Reserved
// Copyright (c) 2015 All Right Reserved, http://www.electronics-freak.com
//
// This source is subject to the Roee Bloch License.
// Please see the License.txt file for more information.
// All other rights reserved.
//
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// </copyright>
// <author>Roee Bloch</author>
// <email>roeebloch@walla.co.il</email>
// <date>June 2015</date>
#define analog_in 0 // define analog input pin in use
#define Seconds 2 // this pin will be seconds
#define Minutes 3 // this pin will be Minutes
#define start_timer 4 // start timer command pin
#define LED 13 // on board LED
#define timer_out 7 // timer output command
char function = 0; // 0 ->will be for after time -> ON, 1 -> after time off
int my_analog;
int remap;
char opt_chosen; // for seconds 1, for minutes 2
char light = 0, start;
char state = 0; // for on board LED to blink
void setup() {
// put your setup code here, to run once:
pinMode(Seconds, INPUT);
digitalWrite(Seconds, HIGH); // week pullup on this pin
pinMode(Minutes, INPUT);
digitalWrite(Minutes, HIGH); // week pullup on this pin
pinMode(start_timer, INPUT);
digitalWrite(start_timer, HIGH); // week pullup on this pin
Serial.begin(9600); // Serial monitor
pinMode(timer_out, OUTPUT);
pinMode(LED, OUTPUT);
if (function == 1)
{
digitalWrite(timer_out, 1);
}
else
{
digitalWrite(timer_out, 0);
}
// Serial.println("state = ");
// Serial.println(function);
// Serial.println("now state = ");
// Serial.println(function);
// state = function; // start command state
}
void loop() {
// put your main code here, to run repeatedly:
my_analog = analogRead(analog_in);
// Serial.println (my_analog); //for debug only
Serial.println (remap); // also for debug
if (digitalRead(Seconds) == 0)
{
opt_chosen = 1;
}
if (digitalRead(Minutes) == 0)
{
opt_chosen = 2;
}
remap = map (my_analog, 0, 1024, 0, 100); // remapping to switch case
switch (opt_chosen)
{
case 2: Serial.println("Minutes");
break;
case 1: Serial.println("Seconds");
break;
default:
Serial.println("Nothing was chosen");
}
start = digitalRead(start_timer);
if (start == 0)
{
Serial.println("Timer started");
Run_timer(opt_chosen, remap);
}
delay(200); // 200mS sedlay
}
void Run_timer(char opt_chosen, int mytime)
{
if ( opt_chosen == 1) //seconds chosen
{
for (int x = 0; x < mytime ; x++)
{
delay(1000);
Serial.println(x);
digitalWrite(LED, state);
state = ~ state; // change LED state
} // of for
Serial.println("Timer Finished!");
Serial.println(function);
if (function == 1)
{
digitalWrite(timer_out, LOW);
}
else
{
digitalWrite(timer_out, HIGH);
}
loop1:
goto loop1;
return;
} // of if
if ( opt_chosen == 2) //seconds chosen
{
for (int x = 0; x < mytime ; x++)
for (int y = 0; y < 60; y++)
{
{
delay(1000);
Serial.print("Minutes=");
Serial.println(x);
Serial.print("Seconds=");
Serial.println(y);
digitalWrite(LED, state);
state = ~ state; // change LED state
} // of for
}
Serial.println("Timer Finished!");
Serial.println(function);
if (function == 1)
{
digitalWrite(timer_out, LOW);
}
else
{
digitalWrite(timer_out, HIGH);
}
loop2:
goto loop2;
return;
} // of if
}
Video Based on this Code: lesson-10-arduino-timer-multi-functions
| [adsenseyu6] |