 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 12 24, 15:31. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » 7 segmentu ekrano problema
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 29, 00:11 |
|
|
|
|
| Niekas nepasikeite, bandem ivairiai, pajungti tik 5v, pajungti tik 15v ir abu kartu. |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 29, 02:41 |
|
|
|
|
Beda greiciausiai programoje, tik nelabai sugalvojam kaip pakeisti, cia radom sita problema: http://forums.parallax.com/showthread.php?126915-Uneven-brightness-of-the-LED-matrix-display
gal kyla minciu kaip pataisyti problema?
cia musu kodas:
| Citata: |
#include <LedControl.h>
LedControl lc=LedControl(12,11,10,1); // Set up an LED object on pins 12,11,10
#define minutes_adjust 6 // Input pin for minutes adjust button
#define mins_adjust 7 // Input pin for seconds adjust button
int buffer = 0;
int c = '0';
boolean start = false;
boolean pause = false;
int milis_ones;
int milis_tens;
int seconds_ones;
int seconds_tens; // these are the values actually sent to the LEDs
int minutes_ones;
int minutes_tens;
volatile unsigned char tick;
unsigned char milis = 0;
unsigned char seconds = 0; // Inititialise actual values for h,m,s
unsigned char minutes = 0;
int minutes_increase = 0;
int mins_increase = 0;
ISR (TIMER1_OVF_vect)
{
TCNT1=0xe796; // When timer2 overflows...
if(start)
tick++; // increment tick
display_time (); // send the time to the LEDs to be displayed
}
void set_time() { // Function for setting the time
pinMode(minutes_adjust,INPUT); // Set the adjust buttons as inputs
pinMode(mins_adjust,INPUT);
minutes_increase = digitalRead(minutes_adjust); // Read the adjust buttons
mins_increase = digitalRead(mins_adjust);
while(minutes_increase==HIGH || mins_increase==HIGH){ // If either of the adjust buttons are high
if (minutes_increase==HIGH){ // Increase minutes if minutes button pressed
minutes = minutes + 1;
}
if (mins_increase==HIGH){ // Increase seconds if seconds button pressed
seconds = seconds + 1;
}
display_time(); // Send the time to the LEDs
delay(750);
minutes_increase = digitalRead(minutes_adjust); // Increase the values of minutes and/or mins as necessary
mins_increase = digitalRead(mins_adjust);
}
}
void display_time () { // Function to display the time
milis_tens = milis;
seconds_ones = seconds % 10; // Repeat for seconds
if (seconds>=10){
seconds_tens = seconds / 10 ;}
else {
seconds_tens = 0;}
minutes_ones = minutes % 10; // Repeat for milis
if (minutes>=10){
minutes_tens = minutes / 10 ;}
else {
minutes_tens = 0;}
lc.setDigit(0,0,(byte)milis_tens,false); // Send digits to LEDs
lc.setDigit(0,1,(byte)seconds_ones,false);
lc.setDigit(0,2,(byte)seconds_tens,false);
lc.setDigit(0,3,(byte)minutes_ones,false);
lc.setDigit(0,4,(byte)minutes_tens,false);
}
void setup_timer2 () { // Set up function
TIMSK1=0x01; // enabled global and timer overflow interrupt;
TCCR1A = 0x00; // normal operation page 148 (mode0);
TCNT1= 0xe796; // set initial value to remove time error (16bit counter register)
TCCR1B = 0x04; // start timer/ set clock 256 prescaler
}
void setup () {
setup_timer2 (); // Set up the timer options
lc.shutdown(0,false); // Turn on the LEDs
lc.setIntensity(0,15); // Set intensity to full
set_time(); // Run the time set function
Serial.begin(9600);
}
void loop () {
if (Serial.available())
{
int in = Serial.read();
c = in;
Serial.flush();
if(c == '1') //start
{
start = true;
pause = false;
}
if(c == '0') //stop
{
start = false;
milis = 0;
seconds = 0;
minutes = 0;
}
if( c == '2') //pause
{
start = false;
pause = true;
}
if( c == '3')
{
buffer = milis + seconds * 10 + minutes * 1000;
Serial.print(buffer);
}
}
if (tick)
{ // If a tick has occured
milis = milis + 1; // Increment the milis
tick = 0; // reset the tick flag
if (milis>9)
{ // If a minute has passed
milis = 0; // Send milis back to 0
seconds = seconds + 1; // Increment the seconds
if (seconds >59)
{ // If an hour has passed
minutes = minutes + 1; // Increment the minutes
seconds = 0; // Send the seconds back to 0
if (minutes > 59)
{ // If a day has passed
minutes = 0; // Set minutes back to 0
}
}
}
}
} |
|
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 02:54 |
|
|
|
|
| AlgisL rašo: |
nesiuliau be, sakiau 1-a ismesk. t.y. suvienodink uzlaikymo laikus arba aparatiskai arba programiskai t.y. pries keisdamas duomenis isjunk trumpam viska pvz 0,1..5mks
pries keisdamas duomenis irasyk 0x0000, 0x00FF, 0xFF00, 0xFFFF (priklausomai kokia kombinacija uzgesina visus segmentus) i max'a ir islaikyk trumpam |
Padarem pagal tavo patarima su 0x0000, 0x00FF, 0xFF00, 0xFFFF
Niekas nepasikeite, bandem koki 100 skirtingu variantu keisti programa, bet visais atvejaisbuvo tas pats..
Cia pvz tas kodo gabalas pagal tave pakeistas:
// issiunti 0xf kad uzgesintum segmentus
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 0xF);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
delay(5);
//siunti skaiciu kuri nori atvaizduoti
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 1);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
ir vistiek tas vienetas svyti antrame skaiciuje. |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 09:34 |
|
|
|
|
| Mantgirdas rašo: |
| AlgisL rašo: |
nesiuliau be, sakiau 1-a ismesk. t.y. suvienodink uzlaikymo laikus arba aparatiskai arba programiskai t.y. pries keisdamas duomenis isjunk trumpam viska pvz 0,1..5mks
pries keisdamas duomenis irasyk 0x0000, 0x00FF, 0xFF00, 0xFFFF (priklausomai kokia kombinacija uzgesina visus segmentus) i max'a ir islaikyk trumpam |
Padarem pagal tavo patarima su 0x0000, 0x00FF, 0xFF00, 0xFFFF
Niekas nepasikeite, bandem koki 100 skirtingu variantu keisti programa, bet visais atvejaisbuvo tas pats..
Cia pvz tas kodo gabalas pagal tave pakeistas:
// issiunti 0xf kad uzgesintum segmentus
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 0xF);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
delay(5);
//siunti skaiciu kuri nori atvaizduoti
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 1);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
ir vistiek tas vienetas svyti antrame skaiciuje. |
tas atvejis butu veikes jei pats vykdytum regeneracija, tad zvilgtelejus i aprasyma pamaciau jog sis pats turi regeneracija ir tai tau nepades.
ziurek ru susidaro frontu persiklojimai arba sroves nuotekiai del talpumu ar sviesdiodziai nelaiko atbulines ir t.t. |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 15:58 |
|
|
|
|
| AlgisL rašo: |
| Mantgirdas rašo: |
| AlgisL rašo: |
nesiuliau be, sakiau 1-a ismesk. t.y. suvienodink uzlaikymo laikus arba aparatiskai arba programiskai t.y. pries keisdamas duomenis isjunk trumpam viska pvz 0,1..5mks
pries keisdamas duomenis irasyk 0x0000, 0x00FF, 0xFF00, 0xFFFF (priklausomai kokia kombinacija uzgesina visus segmentus) i max'a ir islaikyk trumpam |
Padarem pagal tavo patarima su 0x0000, 0x00FF, 0xFF00, 0xFFFF
Niekas nepasikeite, bandem koki 100 skirtingu variantu keisti programa, bet visais atvejaisbuvo tas pats..
Cia pvz tas kodo gabalas pagal tave pakeistas:
// issiunti 0xf kad uzgesintum segmentus
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 0xF);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
delay(5);
//siunti skaiciu kuri nori atvaizduoti
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 1);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
ir vistiek tas vienetas svyti antrame skaiciuje. |
tas atvejis butu veikes jei pats vykdytum regeneracija, tad zvilgtelejus i aprasyma pamaciau jog sis pats turi regeneracija ir tai tau nepades.
ziurek ru susidaro frontu persiklojimai arba sroves nuotekiai del talpumu ar sviesdiodziai nelaiko atbulines ir t.t. |
Bet, kode nustacius kad yra tik 3 o ne 5 skaiciai, likusiuose 2 skaiciuose, nebera to aido, nors pagal ideja jeigu butu kazkokie nutekejimai jie turetu pereiti i tuos skaicius irgi. |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 17:10 |
|
|
|
|
Visu pirma ivertink, kad visus skaicius turi uzvelint, o paskutinio velinimas turi but mazesnis, nes paskutinis skaicius dega tavo uzduota velinimo termina + visa programos sukimosi laika, kol ji apeina rata ir vel pradeda skaiciu atnaujinimo cikla.
Visu antra, mirgejimo isvengsi tuo atveju, jei skaicius rodysi pastoviai tuos pacius, o atnaujinsi tik jiems pasikeitus, nes dabar itariu tu visais atvejais isvedineji ta pacia reiksme pernauja.
Neperneshu tos arduino kalbos, tai neskaiciau sourco, bet kai pats dariau su atmega 7seg valdyma, tai butent taip reikejo sprest ta mirgejimo klausima. |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 17:21 |
|
|
|
|
| Socrates rašo: |
Visu pirma ivertink, kad visus skaicius turi uzvelint, o paskutinio velinimas turi but mazesnis, nes paskutinis skaicius dega tavo uzduota velinimo termina + visa programos sukimosi laika, kol ji apeina rata ir vel pradeda skaiciu atnaujinimo cikla.
Visu antra, mirgejimo isvengsi tuo atveju, jei skaicius rodysi pastoviai tuos pacius, o atnaujinsi tik jiems pasikeitus, nes dabar itariu tu visais atvejais isvedineji ta pacia reiksme pernauja.
Neperneshu tos arduino kalbos, tai neskaiciau sourco, bet kai pats dariau su atmega 7seg valdyma, tai butent taip reikejo sprest ta mirgejimo klausima. |
O kai darei valdyma su 7seg, su kokiais driveriais juos valdei? nes max7219 negali veikti taip kaip tu aiskini, nes skaicius atnaujina pats max`as. Atnaujinimo greiti pakeiciant keiciasi tik ryskumas/skaiciu kiekis |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 19:15 |
|
|
|
|
| AlgisL rašo: |
| Mantgirdas rašo: |
| AlgisL rašo: |
nesiuliau be, sakiau 1-a ismesk. t.y. suvienodink uzlaikymo laikus arba aparatiskai arba programiskai t.y. pries keisdamas duomenis isjunk trumpam viska pvz 0,1..5mks
pries keisdamas duomenis irasyk 0x0000, 0x00FF, 0xFF00, 0xFFFF (priklausomai kokia kombinacija uzgesina visus segmentus) i max'a ir islaikyk trumpam |
Padarem pagal tavo patarima su 0x0000, 0x00FF, 0xFF00, 0xFFFF
Niekas nepasikeite, bandem koki 100 skirtingu variantu keisti programa, bet visais atvejaisbuvo tas pats..
Cia pvz tas kodo gabalas pagal tave pakeistas:
// issiunti 0xf kad uzgesintum segmentus
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 0xF);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
delay(5);
//siunti skaiciu kuri nori atvaizduoti
shiftOut(dataPin, clkPin, MSBFIRST, OP_DIGIT0);
shiftOut(dataPin, clkPin, MSBFIRST, 1);
digitalWrite(loadPin, LOW);
digitalWrite(loadPin, LOW);
ir vistiek tas vienetas svyti antrame skaiciuje. |
tas atvejis butu veikes jei pats vykdytum regeneracija, tad zvilgtelejus i aprasyma pamaciau jog sis pats turi regeneracija ir tai tau nepades.
ziurek ru susidaro frontu persiklojimai arba sroves nuotekiai del talpumu ar sviesdiodziai nelaiko atbulines ir t.t. |
beje kaip siulai tai patikrinti? |
|
|
|
|
|
 |
 |
7 segmentu ekrano problema |
Parašytas: 2011 11 30, 22:53 |
|
|
|
|
| Mantgirdas rašo: |
| O kai darei valdyma su 7seg, su kokiais driveriais juos valdei? nes max7219 negali veikti taip kaip tu aiskini, nes skaicius atnaujina pats max`as. Atnaujinimo greiti pakeiciant keiciasi tik ryskumas/skaiciu kiekis |
Tiesiai valdziau. 8 kojos nuo proco per 220ohm i visus segmentus (7seg + taskas) ir 4 kojos per tranzus i katodus (4 skaiciukai). Nematau tikslo naudot kazkokius specializuotus chipus  |
|
|
|
|
|
 |
7 segmentu ekrano problema |
Parašytas: 2011 12 01, 00:08 |
|
|
|
|
74hc595 keleta ir gausi ta pati tik visiskai valdoma, tik teks paciam pastoviai regeneruoti
jei 4 stukas segmentams
1 stuka skaitmenims isrinkti
reset skaitmenu
per spi pasiunti skaitenu isrinkimo baita ir 4 baitus segmentu kas 4-ta
suvartai lath
ir pigiau ir trabliemu maziau |
|
|
|
|
|
 |
7 segmentu ekrano problema |
Parašytas: 2011 12 01, 01:48 |
|
|
|
|
maxus lengviau valdyt, jiem biblioteka yra, maziau laidu reikia ir as jau nusipirkes maxus, viska suprojektaves, nebesinori visko perdaryti nu bet jeigu reiks tai teks. tik man nelabai aisku del ju jungimo su 3 laidais kiek gali pajungti daugiausiai 595? |
|
|
|
|
|
 |
7 segmentu ekrano problema |
Parašytas: 2011 12 01, 09:27 |
|
|
|
|
RESET ir LATH gali suformuoti is vieno signalo skirtingu frontu
DATA, CLK tau betkuriuo atveju tektu panaudot
beje, tau teikes keliu MAX'u ir juos kazkaip atskirti, tad tau daug daugiau laiduku reikes.
74hc595 uztenka eilines SPI bibliotekos, o per tuos 3 laidukus galesi pajungt pakankamai dideli kieki LED'iniu zenklu
pvz jungiant grupemis po 4 su 5vnt slankiu registru valdysi 32 zenklus
su 6vnt jau 64 zenklus. |
|
|
|
|
|
 |
7 segmentu ekrano problema |
Parašytas: 2011 12 01, 19:19 |
|
|
|
|
Radau toki dalyka :
The problem you are having is caused by stored charge in the output drivers
of the MAX chip and the LEDs themselves. The cure is to reduce the scan
frequency and to increase the dead time between each digit as it is scanned
(inter-digit blank time). Cia pagal sita zmogu koki rezistoriu pagal ideja reiktu pastatyti, ar blogai galvoju? |
|
|
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |