Sida 2 av 2
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 15:45:25
av Al_Bundy
Som jag uppfattar digitala signaler så är det 1:or och 0:or under ett visst tidsintervall. Det betyder alltså att man skickar en kod.
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?
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 16:11:10
av sodjan
> Som jag uppfattar digitala signaler så är det 1:or och 0:or under ett visst tidsintervall.
Nej. Eller ja.
> Det betyder alltså att man skickar en kod.
Tja, ibland är det väl det.
> 16 bit är väll storleken på information den kan skicka?
Vad syftar "den" på ??
> 2^16 = 65536 byte.
Nej. 2^16 = 65536.
> Och vad är registret?
Det som databladet kallar "register", i och för sig på engelska
men det betyder samma sak på svenska...
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 16:13:19
av SeniorLemuren
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 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.
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å.

Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 16:21:55
av sodjan
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 16:33:59
av Al_Bundy
Det kommer ta tid innan jag lärt mig det där.
Kanske lika bra att köpa en färdig sats istället för att hålla på räkna bit osv hela tiden.
EDIT:
Jag återkommer med svar. Har en litet dokument om just detta ämne jag måste läsa på lite först! Höres!
P.S Jag har skickat ett mail till dig angående segementen. Kanske är intresserad om dessa passar till MAX7219/7221
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 16:36:31
av Al_Bundy
SeniorLemuren skrev: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 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.
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å.

Jag laddade ner Ledcontroller.h och jag fick ändra lite i .cpp och .h filen för att det ska fungera.
Jag tror inte heller att jag skulle lyckas bättre. Jag brukar inte skapa bibliotek, utan jag kör bara med det som finns tillgängligt av enkelhetens skull.
Jag hatar LCD displayer. Dom har svikit mig

Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 18:40:40
av Al_Bundy
Hej!
Nu har jag lyckats få en 7-segment display att skriva 0 till 9 med 2 sekunders mellanrum.
Det är en exempelkod som jag har använt mig av och ändrat lite. Men en sak förstår jag inte.
Vad gör bitRead() för något?
Jag vet att den ger ut värdet 1 eller 0. Men jag kan inte förstå anledningen varför.
Så om jag skriver bitRead(B11111011, 0) så blir det? En etta?
http://arduino.cc/en/Reference/bitRead
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);
}
}
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 18:52:20
av Nisse
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 18:59:50
av Al_Bundy
Jag har redan läst den. Funktionen returnerar värdet 1 eller 0 beroende på argumenten x och n.
Men jag kan inte förstå vad detta ska vara bra till.
Om jag har x = 10 och n = 1. Men varför ska det vara så? Vad vill jag få ut?
Jag vet om att 11111011 blir värdet 251. Men det säger inget om det är sant eller falskt.
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 19:10:56
av Nisse
Vad du vill få ut kan inte vi andra veta.
Funktionen läser en bit i ett tal.
Är talet=0x0101010 och n=1 tittar funktionen på position 1 i talet. Position 1 i talet är 1 alltså returneras 1.
bitRead(0x010
1, 0) = 1
bitRead(0x01
01, 1) = 0
bitRead(0x0
101, 2) = 1
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 19:52:48
av Al_Bundy
Men det där känner jag igen från en sanningstabell.
Nu börjar jag förstå koden.
Om den ska skriva ut t.ex. en 3:a så går den igenom varje lampa i displayen och kollar om det är sant om just denna lampa ska lysa eller inte.
Och angående sanningstabellen så trodde jag att den tog hela värdet och spottade ut ett tal.
// 1
Vilket ger en 1:a för första 1:an är just en 1:a
och sen när det kommer till 5:a så blir det en 0:a
// 0
Hmm, rätt smart metod ändå.
Nu förstår jag varför sanningstabellerna helt plötsligt kan vara sant eller falskt beroende på vilken rad man är! Denna metod ska jag lägga på minnet!
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 20:04:10
av Nisse
bitRead(B11111011, 5) = 1
n: which bit to read, starting at 0 for the least-significant (rightmost) bit
Re: Hur kan radvis 7-segments visa olika om dem är parallell
Postat: 20 september 2014, 20:39:33
av Al_Bundy
Jaha! Det är från höger till vänster som man börjar räkna ifrån! Men då vet jag!
För att försäkra dig att jag vet så säger jag att
bitRead(B11111011, 2) = 0
och
bitRead(B10111011, 6) = 0
samt
bitRead(B10111011, 0 = 1