Skocz do zawartości

kauczuk79

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O kauczuk79

  • Ranga
    2/10
  1. MAX7219 ma piny segmentów oraz piny katod które podświetlają konkretne cyfry. Jest kilka tutoriali (np. ten), na których dane wysyłane są odwrotnie - segmenty do rejestrów odpowiedzialnych za znaki (katody), a z pinów oznaczonych jako segmenty robione są anody. Chcę przetestować takie rozwiązanie. Nawet jeśli jasność nie będzie powalająca a będzie lepsza niż obecnie to mi nie będzie przeszkadzać. Projekt bedzie takim wstępem do budowy domowego symulatora lotu na bazie Arduino komunikującego się przez port szeregowy z Microsoft Flight Simulator X i wyświetlającego dane na temat lotu. Jako pierwszy chcę zbudować panel autopilota (wzorowany na tym z Boeinga 737) i wyświetlacze będą wyświetlać zadaną prędkość, kurs, wysokosc itp. Do tego jakieś przełączniki, diody, enkodery żeby te parametry móc zmieniać. Ale główny cel to nauczyć się czegoś z elektroniki
  2. Akurat wybór na Botland jest bardzo skromny - pojedyncze i podwójne wyświetlacze są innego typu jak np. potrójne i poczwórne. Dodatkowo w innych kolorach. I weź tu coś dobierz jak potrzebujesz 5 cyfr (u mnie np. potrzeba 3x3 + 2x5) w tym samym kolorze o tej samej jasności i jeszcze o wspólnej katodzie w sklepie, który ma łącznie tylko 22 różne wyświetlacze. Zakupiłem 3xMAX7219 i jak sprawdzą się z aktualnymi wyświetlaczami to dobrze, nie chcę brnąć w koszty jak mam już wyświetlacze (no name, ale świecą wszystkie równo oprócz tego pojedynczego). Jeśli nie zadziała, to na TME jest duży wybór więc może się coś znajdzie tego samego typu w różnych rozmiarach. Jak nie, to złożę z samych pojedynczych, też jest dobra opcja bo na TME 10+ zawsze jest taniej niż np. 2 sztuki. A do tego może trafią się nawet bursztynowe, które były by wizualnie idealne. Projekt jest na razie na płytce doświadczalnej i z rzeczy które mam akurat w swoim "śmietniku" z zestawów startowych Arduino, nie mam jeszcze takiej wiedzy żeby zaprojektować coś i będzie to od razu działać. Zanim zrobię coś co działa to poprzedzają to różne testy właśnie na tej płytce.
  3. @marek1707 Spowolniłem wyświetlanie każdej cyfry i zmierzyłem napięcie. Nie wiem czy zrobiłem to dobrze (jedna końcówka do wyjście 74HC595, druga w masę) i wyszło mi 4.52V przy wyświetlonej cyfrze 0 (bez kropki). Co do wyświetlaczy to takie akurat miałem i chciałem najpierw wypróbować to rozwiązanie. Trudno na nich znaleźć jakieś oznaczenia, więc nie wiem też ile katalogowo pobierają prądu aby sensownie świecić (edit: Widać, że pojedynczy świeci mocniej dla tego samego prądu co pozostałe). Jeśli chodzi o układ MAX7219 to bez problemu można go kupić, ale wyświetlacze to już jest jakaś egzotyka, a przynajmniej na Allegro. Kompletny brak oznaczeń czy wspólna jest anoda czy katoda. Na aukcjach z oznaczeniami przeważają o wspólnej anodzie, a wspólna katoda jak już jest to pojedyncze w dziwacznej cenie (rzędu 4+ zł za jedną cyfrę). Wpadł mi w oczy jeszcze układ TM1637, obsługuje wspólną anodę i do 6 cyfr, ale też trudno go znaleźć, są jedynie gotowe zestawy z wyświetlaczami.
  4. Rozważałem układ MAX7219 ale nie byłem pewien, czy będzie działał z wyświetlaczami o wspólnej anodzie (które akurat już posiadałem). Widziałem różne artykuły na ten temat (np. ten), ale nadal nie byłem pewien, czy jest to możliwe. Dlatego mój wybór padł na 74HC595 plus PCF8574.
  5. @Treker Niestety nie mam dostępu do takich sprzętów, ale Twoja odpowiedź dała mi do myślenia, żeby ograniczyć programowo ilość odświeżeń. Do tej pory aktualizacja następowała w każdym przebiegu pętli loop i niepotrzebnie marnowała "zasoby", teraz robię to co 250ms. Dzięki za podpowiedź. @marek1707 Twoja podpowiedź rozwiązała całkowicie moje problemy. Dzięki wielkie! Zastanawia mnie jeszcze, czy prąd płynący przez 74HC595 nie jest za duży i czy nie lepiej byłoby użyć na jego wyjściach tranzystorów.
  6. Witam wszystkich forumowiczów. Jest to mój pierwszy post na forum i jednocześnie pierwszy "większy" projekt na Arduino. Jestem dosyć początkujący, jeżeli chodzi o teoretyczne aspekty elektroniki i prosiłbym o sprawdzenie mojego schematu. Mam problem z multipleksowaniem wyświetlaczy 7-segmentowych o wspólnej anodzie. Cyfry na nich są wyświetlane ale widoczna jest na nich "poświata" liczby, która znajduje się po prawej stronie. Sterowanie pojedynczą liczbą odbywa się za pomocą ekspandera PCF8574 (na schemacie zaznaczone jako A, B, C...), a o tym na który wyświetlacz ona trafi zajmują się 3 rejestry przesuwne 74HC595 (D1...D24 na schemacie). Poniżej załączam schemat. A na zdjęciu poniżej jak to wygląda na wyświetlaczach: Myślałem, że to wina braku kondensatorów przy rejestrach przesuwnych (na początku ich nie było), ale pomimo dodania ich problem nadal występuje. Widać to dobrze na pojedynczym wyświetlaczu w centrum kadru , gdzie powinno być 1, a prześwituje również 2 znajdujące się po prawej stronie. Wyświetlacz ten (również nie wiem czemu) świeci dużo jaśniej niż pozostałe, ale możliwe, że jest innego typu/producenta (wnioskuję po innym ułożeniu pinów). Wspomniany kondensator znajduję się na przy pinie Vcc, a więc możliwie blisko tak jak wskazuje na to dokumentacja układu. Poniżej zdjęcie jego położenia (pierwszy układ to ekspander, dalej 3 rejestry). Całość sterowana jest przez Arduino Uno i jedna z moich hipotez jest taka, że zapis stanu wyjściach ekspandera PCF8574 trwa za długo. Cyfry, które mają zostać wyświetlone, przychodzą z portu szeregowego i są typu string. Napis ten konwertowany jest na tablicę liczb w postaci binarnej, np. 0 to 0b11111100 (czyli 0b[a][c][d][e][f][g][dp]). Każda cyfra jest zanegowana, tak aby na ekspanderze był stan niski, jeśli segment ma zostać zapalony. Poniżej kod, który jest odpowiedzialny za wyświetlanie liczb: //Pin connected to ST_CP of 74HC595 int latchPin = 8; //Pin connected to SH_CP of 74HC595 int clockPin = 12; ////Pin connected to DS of 74HC595 int dataPin = 11; void loop() { //... String stringForDisplay = "181181181123450000"; byte len; byte* bytes = stringToSegment(stringForDisplay, len); /* Zmienna len jest referencją, zwraca długość tablicy. Tablica wyjściowa może mieć mniejszą długość, jeśli w napisie wystąpi kropka - jest ona dodawana do poprzedniej cyfry. */ unsigned long i = 1; for (byte index = 0; index < len; index++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, i >> 16); shiftOut(dataPin, clockPin, MSBFIRST, i >> 8); shiftOut(dataPin, clockPin, MSBFIRST, i); displayDataLines.write8(bytes[index]); digitalWrite(latchPin, HIGH); i = i << 1; } delete bytes; //... } Każdą sugestię mogę sprawdzić, ponieważ układ aktualnie zmontowany jest na płytce "edukacyjnej".
  7. Witam wszystkich! Czy projekt utworzony przy pomocy płytki prototypowej też się kwalifikuje? Jestem w trakcie budowy dosyć sporego projektu - kokpitu do symulatora lotu (Flight Simulator X) opartego na Arduino i komunikującego się za pomocą portu szeregowego. Projekt jest modułowy, jako pierwszy w planach mam panel autopilota. Niestety nie wiem czy wyrobię się ze wszystkim do końca akcji, stąd moje pytanie. Nie chciałbym również tworzyć płytki bez odpowiedniego przemyślenia całego projektu, na przykład sposobu komunikacji Arduino z każdym elementem. Jak wspomniałem jest to budowa modułowa i wszystkie moduły musiałyby ze sobą współpracować.
×