
Jag förstog inte denna mening:
"CLK kockar in 16 bitar och LOAD "fryser dessa" i rätt register."
16 bit är väll storleken på information den kan skicka? 2^16 = 65536 byte.
Och vad är registret?
Jag känner inte till något om arduino och dess bibliotek, men jag ställer frågan var du har hämtat uppgifterna på att dett är buggigt.Al_Bundy skrev:Jag brukar sällan lita på gammalt arduino bibliotek. Det finns faktiskt ett bibliotek till MAX7219 men det är buggigt och jag litar inte på det. Jag skulle hellre försöka sätta mig in och skriva eget bibliotek för detta.
Jag laddade ner Ledcontroller.h och jag fick ändra lite i .cpp och .h filen för att det ska fungera.SeniorLemuren skrev:Jag känner inte till något om arduino och dess bibliotek, men jag ställer frågan var du har hämtat uppgifterna på att dett är buggigt.Al_Bundy skrev:Jag brukar sällan lita på gammalt arduino bibliotek. Det finns faktiskt ett bibliotek till MAX7219 men det är buggigt och jag litar inte på det. Jag skulle hellre försöka sätta mig in och skriva eget bibliotek för detta.
Jag tänker såhär (utan att vara Messerschmitt) att med ledning av de frågor du ställer i detta ämne så har jag svårt att tro att du skulle få till en buggfriare version inom överskådlig framtid.
Å andra sidan om det enbart är för att lära dig och du inte har bråttom med att få igång display så är det bara att kavla upp ärmarna och köra på.
Kod: Markera allt
/*
* SevenSegment sketch
* Shows numerals ranging from 0 through 9 on a single-digit display
* This example counts seconds from 0 to 9
*/
// bits representing segments A through G (and decimal point) for numerals 0-9
const byte numeral[10] = {
//ABCDEFG /dp
B11111011, // 0
B01100000, // 1
B11011100, // 2
B11110100, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pins for decimal point and each segment
// dp,G,F,E,D,C,B,A
const int segmentPins[8] = { 5, 9, 8, 7, 6, 4, 3, 2 };
void setup()
{
for (int i = 0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT); // set segment and DP pins to output
}
}
void loop()
{
for (int i = 0; i <= 10; i++)
{
showDigit(i);
delay(1000);
}
// the last value if i is 10 and this will turn the display off
delay(2000); // pause two seconds with the display off
}
// Displays a number from 0 through 9 on a 7-segment display
// any value not within the range of 0-9 turns the display off
void showDigit(int number)
{
boolean isBitSet;
for (int segment = 1; segment < 8; segment++)
{
if (number < 0 || number > 9){
isBitSet = 0; // turn off all segments
}
else{
// isBitSet will be true if given bit is 1
isBitSet = bitRead(numeral[number], segment);
}
//isBitSet = !isBitSet; // remove this line if common cathode display
digitalWrite(segmentPins[segment], isBitSet);
}
}
Kod: Markera allt
isBitSet = bitRead(B11111011, 0);
Kod: Markera allt
isBitSet = bitRead(B11111011, 5);