Hi. I´m looking for 7 segment 4 digit led display library. I have searched from google, but i can´t find good at all. I need your skills to find out perfect library to it. I don´t even know can i post this to this forum
It can also work with 74hc595an. I´m going to make a temp meter, but i don´t know how to multiplex or how i can control graphics with arduino. I´m looking for simple library, like Arduino´s own LCD library.
I hope you guys can help me! I thank you already for replying this, because you want to answer to me at go to google, but i want just ask from real people! 8)
Why do you want a library? Why not just program it, it's not hard. You never know you might just learn something instead of using crutches like libraries for trivial tasks.
If you are disinclined to re-invent the wheel but inclined to use common cathode LEDs
It is hardly a wheel for godsake, it is a nail.
// Define GPIO pins.
const int digit1 = A3;
const int digit2 = A2;
const int digit3 = A1;
const int digit4 = A0;
const int segA = 0;
const int segB = 1;
const int segC = 2;
const int segD = 3;
const int segE = 4;
const int segF = 5;
const int segG = 6;
const int segDP = 7;
int dispcount = 0;
void setup() {
// Configure GPIO pins.
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
digitalWrite(segDP, LOW); // We aren't going to use segment DP.
}
int count = 0;
void loop() {
// Display counter is separate from main counter so pausing count doesn't pause display refresh.
dispcount ++;
if (dispcount==4) dispcount = 0;
// Display Count - illuninate one of the digits each time through to effect multiplexing.
// Turn off our current display so as we set it up we don't get ghosting.
switch (dispcount) {
case 0:
digitalWrite(digit1, LOW);
break;
case 1:
digitalWrite(digit4, LOW);
break;
case 2:
digitalWrite(digit3, LOW);
break;
case 3:
digitalWrite(digit2, LOW);
break;
}
// Illuminate segments for the current digit.
// Figure out digits for current display and current count, i.e. ones digit for display zero, tens digit for display two, etc.
for (int i=0;i<dispcount;i++)
{
count /= 10;
}
count = count % 10;
// Actual segment map courtesy of the Arabs.
switch (count) {
case 0:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
break;
case 1:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 2:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 3:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
break;
case 4:
digitalWrite(segA, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 5:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 6:
digitalWrite(segA, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 7:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
break;
case 8:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 9:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
}
// Now switch on the common cathode of the current display.
switch (dispcount) {
case 0:
digitalWrite(digit4, HIGH);
break;
case 1:
digitalWrite(digit3, HIGH);
break;
case 2:
digitalWrite(digit2, HIGH);
break;
case 3:
digitalWrite(digit1, HIGH);
break;
}
// A little time to allow the LEDs to stay illuminated.
delay(1);
}