uploaded it to a txt file here http://snuletek.com/ting/code.txt
its also there |
/
/*
okay so this code is used for a 3 digit 7 segment display multiplexed.
it counts down from 900 (seconds) to 0, in the begining it turns on pin 13 (which is a npn transistor controlling a relay)
the segments are common anode, the way its controlled is by 3 pnp transistors on the anodes and 7 npn on the cathodes.
*/
unsigned long timeStart; //setting up the variables used globaly
boolean lastButton = LOW;
boolean currentButton = LOW;
void setup() //setting up the pins for the segments button and relay
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
boolean deBounce (boolean last) //a debounce function as shown in sciguy14´s arduino tutorial 06
{ //( http://www.youtube.com/watch?v=g0pSfyXOXj8 )
boolean current = digitalRead(12);
if (last != current)
{
delay(5);
current = digitalRead(12);
}
return current;
}
void number(int var)
{
switch(var)
{
case 0:
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
break;
case 1:
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
break;
case 2:
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
digitalWrite(11, LOW);
break;
case 3:
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(10, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(11, LOW);
digitalWrite(9, LOW);
break;
case 4:
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
break;
case 5:
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
break;
case 6:
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
break;
case 7:
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
break;
case 8:
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
break;
case 9:
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
break;
}
}
/* if (var == 10)
{
for (int i=5; i <12; i++)
{
digitalWrite(i, LOW);
}
}
if (var == 0)
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
}
if (var == 1)
{
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
if (var == 2)
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
}
if (var == 3)
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(10, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if (var == 4)
{
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
if (var == 5)
{
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if (var == 6)
{
digitalWrite(5, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, HIGH);
}
if (var == 7)
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
if (var == 8)
{
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
}
if (var == 9)
{
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
}
*/
void loop()
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
//currentButton = deBounce(lastButton); //Using the debounce function to see if the button has been pushed
//if (lastButton == LOW && currentButton == HIGH)
//{
digitalWrite(13, HIGH); //turns on the relay
for(int x=900; x >=0; x--) //starts the timer at 900 seconds
{
int A = x/100; //splits the int x (the current second) into three individual int´s
int B = x/10 - A*10; //needed to send to the displays
int C = x - A*100 - B*10;
Serial.print(A);
Serial.print(B);
Serial.println(C);
timeStart = millis(); //sets the unsigned long timeStart to the current millis()
//(read about millis on the arduino site)
while ((millis() - timeStart) <= 1000) //runs this loop while millis() - timeStart) is less than or equal to 1 second
{
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
number(A);
delay(10);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
number(B);
delay(10);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
number(C);
delay(10);
}
}
//}
}