const byte interruptPin = 2;
const byte buttonPin = 3;
volatile byte state = LOW;
long ts=0;
float tp=0;
long running_time_in_sec = 0;
long pulse_counter=0;
long button_counter=0;
// Defining frequency
const int min_frequency = 1;
const int max_frequency = 150;
long frequency_counter=0;
// Defining Time
const int min_time = 1;
const int max_time = 10;
long time_counter=0;
//Definig Channel
const int min_channel = 1;
const int max_channel = 4;
long channel_counter=0;
//Channels
const int CH1Pin = 9;
const int CH2Pin = 10;
const int CH3Pin = 11;
const int CH4Pin = 12;
//Function for Selecting Frequency
void frequency_value() {
if (pulse_counter > 2) {
pulse_counter = 0;
frequency_counter++;
if(frequency_counter >= max_frequency) {
frequency_counter = max_frequency;
}
Serial.print("Frequency:");
Serial.println(frequency_counter);
}
if (pulse_counter < -2) {
pulse_counter = 0;
frequency_counter--;
if(frequency_counter <= min_frequency) {
frequency_counter = min_frequency;
}
Serial.print("Frequency:");
Serial.println(frequency_counter);
}
}
//Function for Selecting Time
void time_value() {
pulse_counter++;
if (pulse_counter > 2) {
pulse_counter = 0;
time_counter++;
if(time_counter >= max_time) {
time_counter = max_time;
}
Serial.print("Time:");
Serial.println(time_counter);
}
pulse_counter--;
if (pulse_counter < -2) {
pulse_counter = 0;
time_counter--;
if(time_counter <= min_time) {
time_counter = min_time;
}
Serial.print("Time:");
Serial.println(time_counter);
}
}
//Function for Selecting Channels
void channel_value() {
pulse_counter++;
if (pulse_counter > 2) {
pulse_counter = 0;
channel_counter++;
if(channel_counter >= max_channel) {
channel_counter = max_channel;
}
Serial.print("Channel:");
Serial.println(channel_counter);
}
pulse_counter--;
if (pulse_counter < -2) {
pulse_counter = 0;
channel_counter--;
if(channel_counter <= min_channel) {
channel_counter = min_channel;
}
Serial.print("Channel:");
Serial.println(channel_counter);
}
}
void setup() {
Serial.begin(115200);
pinMode(interruptPin, INPUT_PULLUP);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), counter_value, RISING);
pinMode(5,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(buttonPin), button_value, FALLING);
//PinMode Channels
pinMode(CH1Pin, OUTPUT);
pinMode(CH2Pin, OUTPUT);
pinMode(CH3Pin, OUTPUT);
pinMode(CH4Pin, OUTPUT);
// Set all channels to LOW initially
digitalWrite(CH1Pin, LOW);
digitalWrite(CH2Pin, LOW);
digitalWrite(CH3Pin, LOW);
digitalWrite(CH4Pin, LOW);
Serial.println ("Allah is Greatest");
}
void loop() {
if(state)
{
state=0;
}
switch(button_counter){
//selection of Frequency
case 1:
{
while(button_counter==1)
{
frequency_value();
}
}
delay(500);
break;
//selection of Time
case 2:
{
while(button_counter==2)
{
time_value();
}
}
delay(500);
break;
//selection of Channel
case 3:
{
while(button_counter==3)
{
channel_value();
}
}
delay(500);
break;
case 4:
{
Serial.println("System has Started");
while(button_counter==4)
{
running_time_in_sec = time_counter;
running_time_in_sec = running_time_in_sec * 1000;
ts = millis();
while(millis() - ts < running_time_in_sec)
{
tp = 1/frequency_counter;
tp = tp/2;
if(channel_counter == 1)
{
digitalWrite(CH1Pin,HIGH);
delay(tp);
digitalWrite(CH1Pin,LOW);
delay(tp);
}
else if (channel_counter == 2)
{
digitalWrite(CH2Pin,HIGH);
delay(tp);
digitalWrite(CH2Pin,LOW);
delay(tp);
}
else if (channel_counter == 3)
{
digitalWrite(CH3Pin,HIGH);
delay(tp);
digitalWrite(CH3Pin,LOW);
delay(tp);
}
else if (channel_counter == 4)
{
digitalWrite(CH4Pin,HIGH);
delay(tp);
digitalWrite(CH4Pin,LOW);
delay(tp);
}
Serial.println(millis()-ts);
delay(100);
}
button_counter=0;
pulse_counter = 0;
delay(5000);
}
}
delay(500);
break;
}
}
unsigned long int tv=0;
unsigned long int tv1=0;
void counter_value() {
tv1=millis();
if(tv1-tv<1)
{
tv=tv1;
return;
}
tv=tv1;
state=1;
if(digitalRead(4))
{
pulse_counter++;
}else
{
pulse_counter--;
}
}
unsigned long int tv2=0;
unsigned long int tv3=0;
void button_value(){
tv3=millis();
if(tv3-tv2<50)
{
tv2=tv3;
return;
}
tv2=tv3;
while(!digitalRead(3))
{
delay(10);
}
delay(500);
button_counter++;
if(button_counter>4){button_counter=4;}
Serial.print("Push button:");
Serial.println(button_counter);
}