init commit
This commit is contained in:
+132
@@ -0,0 +1,132 @@
|
||||
/*
|
||||
Truth Table
|
||||
Switch 1: start/stop
|
||||
Switch 1, 2: increment until 9, buzzer sounds
|
||||
Switch 1, 4: decrement until 0, buzzer sounds
|
||||
*/
|
||||
|
||||
//Output Pins for Display
|
||||
int pinArray[7] = {8, 9, 10, 11, 12, 13, 6}; //{pinA, pinB, pinC, pinD, pinE, pinF, pinG};
|
||||
|
||||
//Input Pins from Dip Switch
|
||||
int pin0 = 0;
|
||||
int pin1 = 1;
|
||||
int pin2 = 2;
|
||||
int pin3 = 3;
|
||||
|
||||
//Output pin for Buzzer
|
||||
int buzzPin = 7;
|
||||
|
||||
//Digital Display values
|
||||
byte values[10][7] = {
|
||||
{1, 1, 1, 1, 1, 1, 0}, //number 0
|
||||
{0, 1, 1, 0, 0, 0, 0}, //number 1
|
||||
{1, 1, 0, 1, 1, 0, 1}, //number 2
|
||||
{1, 1, 1, 1, 0, 0, 1}, //number 3
|
||||
{0, 1, 1, 0, 0, 1, 1}, //number 4
|
||||
{1, 0, 1, 1, 0, 1, 1}, //number 5
|
||||
{1, 0, 1, 1, 1, 1, 1}, //number 6
|
||||
{1, 1, 1, 0, 0, 0, 0}, //number 7
|
||||
{1, 1, 1, 1, 1, 1, 1}, //number 8
|
||||
{1, 1, 1, 0, 0, 1, 1} //number 9
|
||||
};
|
||||
|
||||
//Value to know where the counter is in the countdown(up)
|
||||
int curVal = 0;
|
||||
|
||||
//Boolean to know if the buzzer is triggered or not
|
||||
bool buzzed = false;
|
||||
|
||||
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
//Set up for 7 seg display
|
||||
for(int x = 0; x < 7; x++)
|
||||
{
|
||||
pinMode(pinArray[x], OUTPUT);
|
||||
}
|
||||
|
||||
//Set up for Dip Switch
|
||||
pinMode(pin0, INPUT);
|
||||
pinMode(pin1, INPUT);
|
||||
pinMode(pin2, INPUT);
|
||||
pinMode(pin3, INPUT);
|
||||
|
||||
//Set up for buzzer pin
|
||||
pinMode(buzzPin, OUTPUT);
|
||||
//Sets Display to current value (Will start at 0)
|
||||
writeNum(curVal);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void loop() {
|
||||
//Remains in loop if Start/Stop is triggered
|
||||
while(digitalRead(pin3) == 1){}
|
||||
//Waits 1 second
|
||||
delay(1000);
|
||||
|
||||
//Increases value to next level as long as it is less than 9, incrementer is triggered, and decrementer is not triggered
|
||||
if(curVal < 9 && digitalRead(pin2) == 0 && digitalRead(pin0) != 0)
|
||||
{
|
||||
curVal++;
|
||||
writeNum(curVal);
|
||||
|
||||
//Triggers buzzer if value is 9 after incrementing
|
||||
if(curVal == 9)
|
||||
{
|
||||
writeNum(curVal);
|
||||
alarmBuzzer();
|
||||
}
|
||||
}
|
||||
//Decreases value to next level as long as it is greater than 0, decrimenter is triggered, and incrementer is not triggered
|
||||
else if(curVal > 0 && digitalRead(pin0) == 0 && digitalRead(pin2) != 0)
|
||||
{
|
||||
curVal--;
|
||||
writeNum(curVal);
|
||||
|
||||
//Triggers buzzer if value is 0 after decrementing
|
||||
if(curVal == 0)
|
||||
{
|
||||
writeNum(curVal);
|
||||
alarmBuzzer();
|
||||
}
|
||||
}
|
||||
//If buzzer is triggered, waits for 3rd switch to be hit to turn off before continuing
|
||||
while(buzzed && digitalRead(pin1) == 1){}
|
||||
|
||||
//After 3rd switch is hit, turns buzzer off
|
||||
if(buzzed)
|
||||
{
|
||||
disarmBuzzer();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void alarmBuzzer()
|
||||
{
|
||||
if(digitalRead(pin1) == 1)
|
||||
{
|
||||
buzzed = true;
|
||||
digitalWrite(buzzPin, HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void disarmBuzzer()
|
||||
{
|
||||
buzzed = false;
|
||||
digitalWrite(buzzPin, LOW);
|
||||
}
|
||||
|
||||
|
||||
//Writes number to display
|
||||
void writeNum(int n) {
|
||||
for(int x = 0; x < 7; x++)
|
||||
{
|
||||
digitalWrite(pinArray[x], values[n][x]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user