Skocz do zawartości

Dodatkowe ćwiczenia z wyświetlaczem 2x16 znaków


Pomocna odpowiedź

(edytowany)

Ja bym się nie domyślił po nazwie co ta funkcja robi, nie dało się napisać displayHEX, BIN, OCT? Czy. Miało być dispalySzeSnastkowe

Edytowano przez _LM_

Jakie hex... funkcja zapala po prostu segmenty odpowiadające bitom w value.

A kodu w tej bibliotece to jest fafnaście linijek i np. displayASCII można potraktować jako przykład użycia.

Nazwa pewnie od "display segments".

Przed chwilą, ethanak napisał:

Nazwa pewnie od "display segments".

Aa nie patrzyłem na tę funkcję, czyli to jest taka podstawowa tablica z segmentami jak piksele na wyswietlaczu

@_LM_ no właśnie. A chodzi mi przede wszystkim o to aby sprawdzić jak te kropki na wyświetlaczu się zapalają i czy to przypadkiem nie dekoracja (bo takie też widziałem)

 

Gość
17 minut temu, ethanak napisał:

no właśnie. A chodzi mi przede wszystkim o to aby sprawdzić jak te kropki na wyświetlaczu się zapalają i czy to przypadkiem nie dekoracja (bo takie też widziałem)

Nie no pisałem, że kropki działają tylko chcę aby były niezależne od pozostałych segmentów przypisanych do zmiennej.

4.thumb.png.78c76a3642d6ff858397eb0e16347fe5.png

Wszystkie dp działają.

 

37 minut temu, ethanak napisał:
    void displaySS(uint8_t position, uint8_t value);

Ciekawe do czego to służy...

W demo tego nie było. Zaraz sprawdzę

 

Gość
2 minuty temu, ethanak napisał:

A zaglądałeś do tego mojego kodu z dwukropkiem? Bo założę się o piwo że to tak samo działa...

Zaglądałem, ale jeszcze nie analizowałem co do czego służy. Trochę tego jest.

 

Swoją drogą co mam wpisać w tej linijce?

7 minut temu, rafal220 napisał:
void displaySS(uint8_t position, uint8_t value);

Wpisuję pozycję 1, 0x80, nie działa, 0b10000000 też nie działa. W ogóle nic nie działa, bo kompilator sypie błąd.

Gość

Wywala mi na tej linijce błąd;

void displaySS(uint8_t 1, uint8_t 0x80 );

tak też jest źle;

void displaySS(uint8_t 1, uint8_t 0b10000000);

Wstawianie zmiennych też nie działa. 

Kurs Arduino się kłania i podstawy języka. Jasne że kompilator wywala błąd bo to bez sensu. A ponieważ nie znam reszty kodu - spójrz w lusterko i poszukaj pomocy.

Gość
(edytowany)
23 minuty temu, ethanak napisał:

A ponieważ nie znam reszty kodu - spójrz w lusterko i poszukaj pomocy.

Dałem to w lop.

void loop() {
  
void displaySS(uint8_t 1, uint8_t 0x80 );
}

Wiem że to dziwnie wygląda. Powinno  to być w setup i kolejna pętla po za główną loop ?

P.S.

Gdyby było to w przykładzie biblioteki, to bym szybciej ogarnął jak to zaimplementować. 

Edytowano przez rafal220
Gość
(edytowany)

kombinuję na różne sposoby. Nawet jak się kompiluje, to nic nie wyświetla. 

#include <TM1638lite.h> // https://github.com/danja/TM1638lite

TM1638lite tm(6, 7, 8);

void setup() {}

void loop() {

void displaySS(uint8_t position, uint8_t value);

}
void displaySS(){1, 0xff;}

 

Edytowano przez rafal220

Kombinujesz zamiast myśleć. Kombninować to może małpa przy pulpicie zgadując, jaka kombinacja klawiszy spowoduje że wyleci banan. To nie PLC, tu trzeba myśleć a nie zgadywać.

Przede wszystkim: burczałeś że w bibliotece nie ma funkcji realizującej coś tam. Pokazałem że jest. I co? Wszędzie tej funkcji szukałeś tylko nie w bibliotece.

Napisałeś wspaniały  program co wyświetla "rafal" na wyświetlaczu. Jakoś wiedziałeś, jak tamtej funkcji (displayText jak mniemam) użyć. Z punktu widzenia psychologii (szczególnie psychopatologii) bardzo interesujące by było dlaczego uważałeś, że displaySS używa się zupełnie inaczej... ale zostawmy to psychologom, my obejdziemy się jedynie zdziwieniem.

Pisałeś że w przykładach tego nie ma... biblioteka jest prostsza niż gwóźdź, masz ją na githubie, masz na dysku, parę linijek przeczytać to nie jest wielki problem... ale nie, trzeba znów wleźć na forum i beczeć że przykładu nie dali. A g... prawda, bo dali. Cały plik TM1638lite.cpp to jeden wielki zaj...sty przykład.

Nie ma w przykładach użycia każdej funkcji w bibliotece... a gdyby tych funkcji było 100 to co, chcesz mieć sto przykładów? A jak trzeba użyć dwóch funkcji to 10.000 przykładów? O trzech już nie mówię...

No więc przestań się mazać i do roboty. Masz wszystko co potrzebne.

I jeszcze na przyszłość (bo nie chce mi się już kolejnych uzasadnień wysłuchiwać): link do ustrojstwa z wyśwoetlaczem zawiera kod (mówiłem gdzie) wyświetlający dwukropek na takim zegarkowym wyświetlaczu. Owszem, ten dwukropek to są dwie oddzielne ledy, ale podłączone są razem do ósmego segmentu drugiej cyfry wyświetlacza. Może gdybyś do tej funkcji zajrzał połowa dyskusji byłaby niepotrzebna, bo jeśli nawet czterech z pięciu linii funkcji byś nie zrozumiał to zobaczyłbyś, że cały czas operacje dotyczą czterech pozycji w wyświetlaczu.

Ale - po co czytać, lepiej pomieć pretensje do świata że nie działa tak jak ja sobie wymyśliłe,.

A żeby kolega @_LM_ poczuł się usatysfakcjonowany - porównanie kulinarne.

Kupiłeś przyprawę do zup np. "Zupex Ultra". W reklamie mówili: "Aby uzyskać wspaniały aromat dodaj łyżeczkę od herbaty do zupy". A więc bierzesz łyżeczkę od herbaty, wrzucasz do zupy a potem się dziwisz że nie ma wspaniałego zapachu...

Tak mniej więcej w dwóch ostatnich postach postąpiłeś.

 

  • Lubię! 1
Gość
1 godzinę temu, ethanak napisał:

Napisałeś wspaniały  program co wyświetla "rafal" na wyświetlaczu. Jakoś wiedziałeś, jak tamtej funkcji (displayText jak mniemam) użyć.

Tamta funkcja jak i inne śmigają w pętli głównej. Nie znam się na tyle, aby stwierdzić które funkcje będą działać w innej pętli, a które nie. Sprawdzę jak to działa. 

Gość
1 godzinę temu, ethanak napisał:

Nie ma w przykładach użycia każdej funkcji w bibliotece... a gdyby tych funkcji było 100 to co, chcesz mieć sto przykładów?

Przynajmniej spis poprawnej deklaracji funkcji + krótki opis. 

Nie no nie mam na to pomysłu. Faktycznie wczoraj displayText przeoczyłem, ale to też nie działa. Dzisiaj dla przykładu wszystkie funkcje wrzuciłem do pętli, ale nadal mam ciemny wyświetlacz.

#include <TM1638lite.h> // https://github.com/danja/TM1638lite

TM1638lite tm(6, 7, 8);

void setup() {}



void loop() {

void displaySS(uint8_t position, uint8_t value);
}


void displaySS(){
  
tm.reset();
tm.displayText("ABCD");
delay(1000);
tm.reset();
tm.displayHex(2, 10);
delay(1000);
tm.reset();
tm.displayASCII(6, '.');
delay(1000);
}

   

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...