Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
#81
Ne odustaj.... sutra cu napraviti isti hardver kao ti i testirati kod... Ako sad odustanes na ovako laganom primeru onda ces tek bezati od 'tezih' programa...

Ako koristis gotov display sa 4 cifre jel sa zajednickom anodom ili katodom?
Reply
#82
Nemoj sad da odustaješ. Ovaj kod je za multipleks displeja sa zajedničkom anodom. Da li je tvoj displej takav? Primer je jednostavan mada se multipleks ne radi tako ali mora da radi.
Reply
#83
Ne znam počeo sam da gubim volju...

Ne koristim gotov displey, napravio sam od led trake brojeve/segmente, i tako da mogu koristiti zajedničku koju hoću, jer sam radio logičko kolo sa tranzistorima na eksternoj pločici (možda se neko sjeća), tako da segmente i dig palim naponom, a tranzistori odrađuju svoje, ako trebaju slike postaviću.?

Problemi su sledeći, @YuMERA mi je odradio dio koda za taster uslov i izbacio pisanje broja u serialu, kada je taster pritisnut tad je pauza i ne broji, čim pustim taster on nastavlja brojanje, a trebao bi da radi kada pritisnem taster i odmah pustim on da nastavio brojati ili da pauzaira zavisno od prethodne situacije?
A drugi problem je taj samo što ne gasi potrebne ledice kada treba, već samo umanji intenzitet svjetlosti?
A ako bih to uspjeo sve oživjeti da radi dobro, onda bih trebao dodati još 5 cifru/broj (mm : ss : s) i fino podesti vrijeme jer mi sada prebrzo broji.?
Reply
#84
Vidi Makso. Ovo sto si ti pokusao da uradis iskljucivo je zanimljivo za testiranje kako radi 7 segmentni display u praksi i da razumes kako kod programa pali i gasi segmente i na taj nacin vrsi prikaz brojeva... ako hoces da pravis nesto tipa sat ili prikaz temperature na led traci kojom kreiras cifre displeja onda se to na ovaj nacin ne radi i ne predlazem da sa ovim primerom pravis gotov projekat nego malo da pogledas po netu kako se multiplex radi u praksi (74HC595, max7219....itd).
Reply
#85
To sam već radio, samo sam koristio 74HC540, ULN2803 i UDN2981A, preko MAX7219 i nije mi uspjelo, jednostavno nije mi dalo maksimalnu svjetlost, napajao sam sa 12V a dobijao 9V na ledicama.

Možda da pokušam samo sa Arduinom + 74HC595, da odradim ovako velike brojeve?
Reply
#86
Aj daj šemu po kojoj sada radiš pa da pomognemo. Nacrtaj nešto rukom i uslikaj bar za jednu cifru kako izgleda. To je jednostavno mora da radi. 
Inače, ako to radiš sa tvojim velikim displejima jedan od načina je da za jednu cifru ide 74HC595 i ULN2803. 
Prvi 74HC595 se povezuje na MCU a sledeći se nižu jedan na drugi i tu nije potreban multipleks.
Reply
#87
Evo slike kao to sve trenutno izgleda, na slikama bi trebalo da se prikazuje broj 4, teško je kamerom uočiti da neke slabije sijaju.


A evo i pdf šeme tranzistora/logičkih kola.

.pdf   Sprint-Layout 6.0 - [C__Users_MAKSO_Desktop_ARDUINO nano segment.lay6].pdf (Size: 40,1 KB / Downloads: 17)


Da li imaš neki projekat kao prijedlog sa 74HC595 i ULN2803?
Reply
#88
(10-09-2016, 07:57 PM)Makso Wrote: Evo slike kao to sve trenutno izgleda, na slikama bi trebalo da se prikazuje broj 4, teško je kamerom uočiti da neke slabije sijaju.


A evo i pdf šeme tranzistora/logičkih kola.



Da li imaš neki projekat kao prijedlog sa 74HC595 i ULN2803?

Makso,

koliko mogu da vidim pogresno su ti nacrtani silkovi za tranzistore. Kod tranzistora u plasticnom TO-92 kucistu raspored nozica je CBE, a kod tebe je EBC. Proveri kako si zalemio tranzistore. Takodje bi bilo dobro da nacrtas detaljnu elektricnu semu po kojoj si radio, sa vrednostima komponenti. Koja je frekvencija multipleksa sa kojom radis. Sve ovo te pitaam, posto ovo mora da radi.
Sto se tice projekta sa 595 i ULN, postavljas ih direktno jedan na drugi, tj. ULN je samo strujni pojacavac, posto HC595 ne moze da da dovoljnu struju da ukljuci segment.
Reply
#89
Što se tiče pločice sa tranzistorima (2N2222 i 2N5401) nju sam testirao sa nekoliko kodova i ona je ispravna.
Frekvenciju multipleksinga ne znam a ne bih znao ni prepoznati, a program nisam ja ni pisao iskopao sam na netu pa smo pretađivali. A kod je sasvim normalno radio dok su se brojevi pisali u serialu ručno, dok nismo dodali uslov za taster, otad su nastali problemi...

Pogledaću šta ima sve sa HC i ULN.
Reply
#90
Photo 
Evo ti primera sa 74HC595. 

https://www.sqlskills.com/blogs/paulsele...plays.aspx

Tu ti ne treba multipleks. 74HC595 su povezani jedan na drugi (pogledaj pinove serout i serin). Za običan mali displej ti ne treba ULN jer mogu da ga pogone direktno izlazi iz 74HC595. Za tvoje displeje će verovatno trebati. Na svaki 595 ide jedan ULN.


Attached Files Thumbnail(s)

Reply
#91
Eto Makso ovaj zadnji primer koji ti je predlozio @gorankg je najbolje za prikaz cifara bez multiplexa. Znaci nema treperenja prilikom snimanja kamerom i nema smanjenog inteziteta svetlosti segmenata tj svetle punim intezitetom. Sto je najbitnije za Arduino ti treba samo 3 pina...
Reply
#92
Baš gledam kako kod funkcioniše, samo na konkretnom primjeru što je @gorankg predložio je isto tako ispisivanje brojeva iz seriala i tu bi mi opet trebala prepravka koda. E sad opet neko od mojih pitanja, da li bih mogao vezati ovu svoju pločicu sa tranzistorima umjesto ULN-a da li bi ih HC mogao pogoniti jer mi je u planu da odradim brojeve u RGB verziji, pa da poručim par komada HC-ova?.
Reply
#93
Mislim da si okrenuo logiku za uključivanje pojedinačnih displeja.
Ako sam dobro video sa ovih tvojih fotografija jedan displej treba da se uključi logičkom jedinicom na NPN funkcijom digitalWrite( GNDX, HIGH);.
Za to vreme ostala tri treba da su isključena.
Potom na segmente funkcijom pickNumber(digX); dovodiš logičku jedinicu za one koje želiš da uključiš.
Iza toga sledi kašnjenje delay(DTime);
Pa isključenje tog displeja digitalWrite( GND4, LOW);

Dakle, početak funkcije loop izmeni ovako:

void loop()
{
 digitalWrite( GND1, LOW);
 digitalWrite( GND2, LOW);
 digitalWrite( GND3, LOW);
 digitalWrite( GND4, LOW);


A na kraju unesi:

 digitalWrite( GND4, HIGH);    //digit 4
 pickNumber(dig4);

 delay(DTime);
 digitalWrite( GND4, LOW);
 
 digitalWrite( GND3, HIGH);    //digit 3
 pickNumber(dig3);
 delay(DTime);
 digitalWrite( GND3, LOW);
 
 digitalWrite( GND2, HIGH);   //digit 2
 pickNumber(dig2);
 delay(DTime);
 digitalWrite( GND2, LOW);
 
 digitalWrite( GND1, HIGH);   //digit 1
 pickNumber(dig1);
 delay(DTime);
 digitalWrite( GND1, LOW);

I proveri da nisi naopako okrenuo tranzistore. Ovaj 2N2222 izgleda može da bude sa različitim izvodima. Pogledaj sliku.


Attached Files Thumbnail(s)

Reply
#94
Ovo za 2N2222 tranzistor sznam da imaju u dvije verzije i to sam pazio i to je uredu.

@gorankg probao sam sad ovu prerpavku kodu i sada gasi normalno, samo što ipak ostaju malo da sijaju, ali se sada gase i brojevi su uočljivi, da li bi moglo biti još do delay(DTime); da njega malo promjenim?
Samo je ostao problem sada sa tasterom jer odmah broji čim se Arduino upali i pravi pauzu samo kada je taster aktivan?
Reply
#95
(10-10-2016, 10:14 PM)Makso Wrote: @gorankg probao sam sad ovu prerpavku kodu i sada gasi normalno, samo što ipak ostaju malo da sijaju, ali se sada gase i brojevi su uočljivi, da li bi moglo biti još do delay(DTime); da njega malo promjenim?
Samo je ostao problem sada sa tasterom jer odmah broji čim se Arduino upali i pravi pauzu samo kada je taster aktivan?

Povećavaj DTime pa isprati displej. Kako je taster povezan? Kod je napisan tako da se sa svakim pritiskom tastera naizmenično aktivira brojanje i pauza. Da li tako treba da radi?
Reply
#96
Kada povećavam DTime one što trebaju biti ugašene ostaju isto da malo sijaju kao i prije samo onda okom mogu vidjeti brzo treperenje onih koje svijetle punim intenzitetom, a kada smanjim DTime isto se ne gase do kraja ali te koje trebaju biti ugašene trepere kako prate neki drugi digit i tako se mjenjaju brojevi.?

A za taster, trebao bih da radi tako kao si opisao, da kada se Arduino upali on ne broji, pritisnem i pustim taster on broji, pritisnem i pustim taster on pravi pauzu i tako u krug, ali on sada broji dok se Arduino upali i pauza je dok god ja držim taster i čim pustim on nastavlja da broji što nije dobro.
Reply
#97
Dodaj  clearLEDs(); ovako: 


 digitalWrite( GND4, HIGH);    //digit 4
 pickNumber(dig4);
 delay(DTime);
 digitalWrite( GND4, LOW);
 clearLEDs();
 
 digitalWrite( GND3, HIGH);    //digit 3
 pickNumber(dig3);
 delay(DTime);
 digitalWrite( GND3, LOW);
 clearLEDs();
 
 digitalWrite( GND2, HIGH);   //digit 2
 pickNumber(dig2);
 delay(DTime);
 digitalWrite( GND2, LOW);
 clearLEDs();
 
 digitalWrite( GND1, HIGH);   //digit 1
 pickNumber(dig1);
 delay(DTime);
 digitalWrite( GND1, LOW);
 clearLEDs();
Reply
#98
Ako hoces da ne broji kad se starta arduino onda na vrhu u deklaraciji umesto :

boolean toggleKey = true;

stavi

boolean toggleKey = false;
Reply
#99
@gorankg
Probao, i radi izvanredno,. Kralj si... Big Grin

Sad je ostao taster, a onda bih trebao dodati još jedan broj da ih bude 5 ukupno, da li će to biti problem, i tu je još jedna stavka da sekunde ograničim na 60 kao na satu?
Reply
@YuMERA
Ako stavim da bude boolean toggleKey = false; ne mjenja se ništa dok ne promjenim if(taster == 0 ) da bude 1 onda neće brojati odmah, ali broji dok držim taster pritisnut i čim pustim on prelazi u pauzu?
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)