Hur startar man MAX7219 ? 7-segment

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

Det finns inget setlcd i min kod.
Min kod ser ut så här just nu

Kod: Markera allt

[code]#include <LedControl.h>

// inputs: DIN pin, CLK pin, LOAD pin. number of chips
LedControl mydisplay = LedControl(7, 6, 8 , 1);
int i = 0;

void setup() 
{
   
   mydisplay.shutdown(0, false);  // turns on display
   mydisplay.setIntensity(0, 15); // 15 = brightest
   
 
}

void loop() 
{
   while (i <= 8)
   {
     i++;
     mydisplay.setDigit(0, 0, i, true);
     mydisplay.setDigit(0, 1, i, true);
     mydisplay.setDigit(0, 2, i, true);
     mydisplay.setDigit(0, 3, i, true);
     delay(1000);
     if (i >= 9)
     {
       i = 0;
     }
     
   }
}
Jag har kopplat in 0.1uF keramik kondensator och 10 uF elektrolytkondensator mellan VCC och GND. Då fungerar det att ha GND inkopplat.

När jag kör denna kod så visar alla segment samma nummer, men det blir samma sak igen att alla segment dör vid numret 7.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av sodjan »

> Jag har kopplat in 0.1uF keramik kondensator och 10 uF elektrolytkondensator mellan VCC och GND. Då fungerar det att ha GND inkopplat.

Och det gjorde du *nu* !?
Du är ju fullständigt hopplös...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

Nej, jag är inte hopplös. Faktumed så fungerar det att köra UTAN GND. Magi eller curse, jag vet inte. Men troligtvis så får den spänning och ström från DIN och SCK kabeln.

Men det är så lustigt att den kan bara räkna till 7 och sen så dör dessa. Nästan som det vore fel i biblioteket.
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Icecap »

Det finns två allvarliga fel.
1: det är Al som håller på vilket betyder att det utförs av en person med väl bevisat extrem brist på kunnande och vägran att ta till sig information.
2: koden. Den kommer till 7 och stannar sedan där - enkom pga. fel programskrivning.

Sedan är det som vanligt: "oj då, libbet verkar inte fungera" när felen i grunden bottnar i en extrem inkompetens. Att ens få tanken att köra utan GND och påstå att det fungerar bekräftar bara detta.
hummel
Inlägg: 2544
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av hummel »

Al_Bundy skrev:Det finns inget setlcd i min kod.
Min kod ser ut så här just nu

Kod: Markera allt

[code]#include <LedControl.h>

// inputs: DIN pin, CLK pin, LOAD pin. number of chips
LedControl mydisplay = LedControl(7, 6, 8 , 1);
int i = 0;

void setup() 
{
   
   mydisplay.shutdown(0, false);  // turns on display
   mydisplay.setIntensity(0, 15); // 15 = brightest
   
 
}

void loop() 
{
   while (i <= 8)
   {
     i++;
     mydisplay.setDigit(0, 0, i, true);
     mydisplay.setDigit(0, 1, i, true);
     mydisplay.setDigit(0, 2, i, true);
     mydisplay.setDigit(0, 3, i, true);
     delay(1000);
     if (i >= 9)
     {
       i = 0;
     }e
     
   }
}
Jag har kopplat in 0.1uF keramik kondensator och 10 uF elektrolytkondensator mellan VCC och GND. Då fungerar det att ha GND inkopplat.

När jag kör denna kod så visar alla segment samma nummer, men det blir samma sak igen att alla segment dör vid numret 7.

Felskrivet av mig, jag menar funktionerna som börjar med mydisplay...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

Icecap skrev:Det finns två allvarliga fel.
1: det är Al som håller på vilket betyder att det utförs av en person med väl bevisat extrem brist på kunnande och vägran att ta till sig information.
2: koden. Den kommer till 7 och stannar sedan där - enkom pga. fel programskrivning.

Sedan är det som vanligt: "oj då, libbet verkar inte fungera" när felen i grunden bottnar i en extrem inkompetens. Att ens få tanken att köra utan GND och påstå att det fungerar bekräftar bara detta.
Nej. Felet är att multiplexern inte orkar "dra runt". Skulle jag ha haft ett scop så skulle jag lättare kunna felsöka. Men just nu så testar jag mig fram, uteslutningsmetoden och LED-metoden.

När jag endast multiplexar ett segment så orkar den dra runt och visa alla siffror från 1 till 9. Men när jag kör fyra segment så stannar alla vid 7.

Jag har även läst databladet riktigt och löst varför jag inte kunde koppla in MAX7219's GND med processorns GND och det har med att jag inte hade kopplat in 0.1 uF keramikkondensator och 10 uF elektrolytkondensator mellan GND och VCC.
To minimize power-supply ripple due to the peak digit
driver currents, connect a 10μF electrolytic and a 0.1μF
ceramic capacitor between V+ and GND as close to
the device as possible. The MAX7219/MAX7221 should
be placed in close proximity to the LED display, and
connections should be kept as short as possible to
minimize the effects of wiring inductance and electromagnetic
interference. Also, both GND pins must be
connected to ground.
Ur databladet
http://datasheets.maximintegrated.com/e ... AX7221.pdf


Jag har ändå löst problemet.
The current per segment is approximately 100 times
the current in ISET. To select RSET, see Table 11. The
MAX7219/MAX7221’s maximum recommended segment
current is 40mA. For segment current levels
above these levels, external digit drivers will be needed.
In this application, the MAX7219/MAX7221 serve
only as controllers for other high-current drivers or transistors.
Therefore, to conserve power, use RSET = 47kΩ
when using external current sources as segment drivers.
och
The MAX7219/MAX7221 allow display brightness to be
controlled with an external resistor (RSET) connected
between V+ and ISET. The peak current sourced from
the segment drivers is nominally 100 times the current
entering ISET. This resistor can either be fixed or variable
to allow brightness adjustment from the front
panel. Its minimum value should be 9.53kΩ, which typically
sets the segment current at 40mA. Display brightness
can also be controlled digitally by using the
intensity register.
Just nu kör jag med ett motstånd som är på ca 47 kOhm och alla segment lyser perfekt och rullar mellan 1 till 9. 10 kOhm var allt för kraftigt för MAX7219 och det blev en "peek" och då stängdes den av.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

hummel skrev:
Al_Bundy skrev:Det finns inget setlcd i min kod.
Min kod ser ut så här just nu

Kod: Markera allt

[code]#include <LedControl.h>

// inputs: DIN pin, CLK pin, LOAD pin. number of chips
LedControl mydisplay = LedControl(7, 6, 8 , 1);
int i = 0;

void setup() 
{
   
   mydisplay.shutdown(0, false);  // turns on display
   mydisplay.setIntensity(0, 15); // 15 = brightest
   
 
}

void loop() 
{
   while (i <= 8)
   {
     i++;
     mydisplay.setDigit(0, 0, i, true);
     mydisplay.setDigit(0, 1, i, true);
     mydisplay.setDigit(0, 2, i, true);
     mydisplay.setDigit(0, 3, i, true);
     delay(1000);
     if (i >= 9)
     {
       i = 0;
     }e
     
   }
}
Jag har kopplat in 0.1uF keramik kondensator och 10 uF elektrolytkondensator mellan VCC och GND. Då fungerar det att ha GND inkopplat.

När jag kör denna kod så visar alla segment samma nummer, men det blir samma sak igen att alla segment dör vid numret 7.

Felskrivet av mig, jag menar funktionerna som börjar med mydisplay...
Det var fel motstånd mellan ISET och V+. Jag hade endast 10 kOhm motstånd och det blir för kraftigt för MAX7219 om den nu ska driva 4 stycken segment samtidigt. Därför använder jag en extrakälla(i detta fall USB uttaget) för att driva dessa segment och då kräver den 47 kOhm motstånd mellan ISET och V+.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av jesse »

Icecap skrev:Fel:
Den kommer till 7 och stannar sedan där - enkom pga. fel programskrivning..
Nej, har inget med programmeringen att göra den här gången.
Skulle varit osannolikt att Arduinos LED-bibliotek skulle vara fel på.
Eftersom GND inte var anslutet kom spänningen till kretsen på odefinierat vis. När sedan alla segment skulle tändas (en åtta) gick det inte längre.
Jag antar att det funkar nu när GND och kondensatorer är på plats.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

De problem jag hade var:
1. Någon störning mellan programmeraren och själva DIN, CLK från MAX7219 - Löst - Fick byta plats
2. Skulle GND från MAX7219 kopplas tillsammans med ATmegans GND så dog alla segment - Löst - Enligt databladet så behövdes 0.1 uF keramikkondensator och 10 uF elektrolytkondensator mellan VCC och GND för att annars orkar inte MAX7219 drivas. MAX7219 fick bara sin spänning och ström från DIN och CLK.
3. Mellan ISET och V+ så var det ett 10 kOhms motstånd. Minimum var 9.53 kOhm och skulle man använda en annan spänningskälla/strömkälla( i detta fall USB uttaget 5volt 500 mA) så krävdes det minst 47 kOhm mellan V+ och ISET för annars blir det så kraftig "peek" så MAX7219 stänger ned sig.

Jupp. Databladet!
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Al_Bundy »

En sak som jag märkte är att vad lite utrymme det är mellan en 16x2 display och 4 stycken segment.
En klassisk 1602 display med Arduinos standardbibliotek tar ca 8 kbytes i minne, medan 7 segment, 4 stycken, tar ca 2 kbytes i minne.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av jesse »

Hade du skrivit koden själv hade du nog hamnat på några hundra bytes på sin höjd. Det är ju inget avancerat.
Användarvisningsbild
Icecap
Inlägg: 26648
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Icecap »

Med alphanumeriska display brukar man ju ladda in stdio.h för att använda printf() osv. - och det tar plats!

Själva styrningen av displayen brukar ett par hundra bytes.
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Re: Hur startar man MAX7219 ? 7-segment

Inlägg av Nisse »

Al_Bundy skrev:2. Skulle GND från MAX7219 kopplas tillsammans med ATmegans GND så dog alla segment - Löst - Enligt databladet så behövdes 0.1 uF keramikkondensator och 10 uF elektrolytkondensator mellan VCC och GND för att annars orkar inte MAX7219 drivas. MAX7219 fick bara sin spänning och ström från DIN och CLK.

Jupp. Databladet!
Stod det verkligen så i databladet? För den snutt du länkade in tidigare sa inte det :-)
Skriv svar