Hello
I have been trying (and learning) with my Arduino Duemilanove and a 4 digit 7 segment 16 pin display for a few days (weeks) now and when i manage to understand one thing there is something new around the corner which totally throws me.
I would like the display to show numbers, which will change from 1 to 9999 while the arduino is running. My question is, how can I convert for example 267 in to instructions for the 7 segment display to turn on and off certatin segments?
the sketch i have so far..
int segmentPins[7] = {2,3,4,5,6,7,8};
int digitPins[4] = {9,10,11,12};
int digit[4];
int escalated_number = 1;
int instruction_for_display;
void setup()
{
Serial.begin(9600);
for(int i=0; i<7; i++)
{
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], HIGH);
}
for (int i=0; i<4; i++)
{
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], LOW);
}
}
void loop()
{
Count();
Convert();
Displaynumber();
delay(1000);
}
void Count()
{
escalated_number++;
Serial.println(escalated_number);
if (escalated_number>10000)
{
End();
}
}
void Convert()
{
//this should convert the escalated_number value to instructions for each digit on the display
}
void Displaynumber()
//i think this bit needs to be completely changed, but it would depend on how the Convert() function works out.
{
int number[4];
number[0] = 1;
number[1] = 4;
number[2] = 4;
number[3] = 1;
if (number[0] == 0)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], HIGH);
}
else if (number[0] == 1)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
}
else if (number[0] == 2)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], HIGH);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 3)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 4)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], HIGH);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 5)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 6)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], HIGH);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 7)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], HIGH);
digitalWrite(segmentPins[6], HIGH);
}
else if (number[0] == 8)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], LOW);
digitalWrite(segmentPins[4], LOW);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
}
else if (number[0] == 9);
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(segmentPins[0], LOW);
digitalWrite(segmentPins[1], LOW);
digitalWrite(segmentPins[2], LOW);
digitalWrite(segmentPins[3], HIGH);
digitalWrite(segmentPins[4], HIGH);
digitalWrite(segmentPins[5], LOW);
digitalWrite(segmentPins[6], LOW);
}
//etc.
}
void End()
{
//when the counting reaches over 9999, a different message should be displayed and the process should start again.
}