#include "ArduinoTrace.h"
int ledPin[] = {7,8,9,10};
const int buttonPin=2;
bool buttonPresent=HIGH,buttonLast=HIGH;
int counter;
byte led_pin_2[] = {3, 4};
const byte button_pin_2 = 13;
bool button_present_2 = HIGH, button_last_2 = HIGH;
byte counter_2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(button_pin_2, INPUT_PULLUP);
for(int j = 0; j < 2; ++j){
pinMode(led_pin_2[j], OUTPUT);
}
for (int i =0;i<4;i++)
{
pinMode(ledPin[i], OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
displayBinary(counter);
}
void loop()
{
Task1();
Task2();
}
void display_binary_2(byte num){
for(int i = 0; i < 2; ++i){
if(bitRead(num, i) == 1){
digitalWrite(led_pin_2[i], HIGH);
}
else{
digitalWrite(led_pin_2[i], LOW);
}
}
}
void Task2(){
static unsigned long previous_millis = 0;
if((millis() - previous_millis) > 100){
button_last_2 = button_present_2;
button_present_2 = digitalRead(button_pin_2);
//DUMP(button_present_2);
if(button_present_2 == LOW && button_last_2 == HIGH){
if(counter_2 < 3){
++counter;
}
else{
counter = 0;
}
display_binary_2(counter);
}
previous_millis = millis();
}
}
bool Task1()
{
static unsigned long previousMillis=0;
if((millis()-previousMillis)>100)
{
buttonLast=buttonPresent;
buttonPresent=digitalRead(buttonPin);
//DUMP(buttonPresent);
if(buttonPresent==LOW && buttonLast==HIGH)
{
if(counter<15)
{
counter++;
}
else
{
counter=0;
}
displayBinary(counter);
}
previousMillis=millis();
}
}
void displayBinary(byte numToShow)
{
for (int i =0;i<4;i++)
{
if (bitRead(numToShow, i)==1)
{
digitalWrite(ledPin[i], HIGH);
}
else
{
digitalWrite(ledPin[i], LOW);
}
}
}