SOYER Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 (edytowany) @Norbert7630 Nie słuchasz, ani nie czytasz tego co się do Ciebie mówi i pisze. ☹️ Nie pisz żadnego kodu jeszcze,a już wcale nie opisuj mi tu kodu który piszesz. Czy rozumiesz co Ci napisałem w ostatnim poście? Edytowano Styczeń 20, 2021 przez SOYER 1 Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 Yyyy.......to nie tak😅 ja tylko dosłownie kilka minutek na próbę z tym kodem czy coś załapałem ale tyle i już jestem back przy twoim wpisie.......no tak na początku zmienna globalna czyli cały czas widoczna podana wartość 1, no tak tylko ja nie do końca rozumie bo w momencie załadowania się programu ja widzę jeden ekran, załóżmy że 1, czyli POZYCJA 1 i POZYCJA 2 oczywiście jedna opcja pod drugą natomiast dla mnie drugim ekranem jest START i STOP. Dla mikro-kontrolera to może wyglądać inaczej 1 ekran to tak jak ja widzę tylko że z markerem ustawionym na pozycji 1 a drugi ekran to ten sam widok tylko z markerem na pozycji 2 Czyli zmienna przyjmuje wartości od 1 wzwyż 1++ każda wartość np 2....3.....4 to ekrany? Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 (edytowany) 10 minut temu, Norbert7630 napisał: Dla mikro-kontrolera to może wyglądać inaczej 1 ekran to tak jak ja widzę tylko że z markerem ustawionym na pozycji 1 a drugi ekran to ten sam widok tylko z markerem na pozycji 2 Tak 10 minut temu, Norbert7630 napisał: Czyli zmienna przyjmuje wartości od 1 wzwyż 1++ każda wartość np 2....3.....4 to ekrany? Tak Teraz napiszesz kawałek kodu:) i go tu wkleisz. Korzystasz z instrukcji switch i piszesz 3 kolejne ekrany. Tylko to to co ma się wyświetlać na LCD, żadnych if, menu++ itp., tylko 3 kolejne ekrany lcd w osobnych case funkcji switch. Edytowano Styczeń 20, 2021 przez SOYER 1 Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 23 godziny temu, SOYER napisał: int numerEkranu =1; switch(numerEkranu) { case(1): lcd_cośtam_ekranpowitalny if( cośtam....) { zróbcoś; numerEkranu=2; // idź do drugiego ekranu break; case(2): itd... cośtam... break; itd... } Tylko się zapytam jeszcze zanim coś nabazgrolę a Ty ze śmiechu padniesz 😅.....czyli zignorować instrukcję warunkową if te które tutaj powyżej są? switch(numerEkranu) { case(1): lcd.clear(); lcd.print(">POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(" POZYCJA 2"); break; case(2): lcd.clear(); lcd.print(" POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(">POZYCJA 2"); break; case(3): lcd.clear(); lcd.print(" START 1"); lcd.setCursor(0, 1); lcd.print(">STOP 2"); break; no chyba raczej tak średnio Yyyyy......tam w tym case 3 START i STOP bez tego 1 i 2 no i marker na START Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
SOYER Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 @Norbert7630 Brawo Ty!!! O to chodziło. Teraz rozpisz tak wszystkie ekrany jakie chcesz mieć w swoim programie i dawaj je tutaj. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 Dzięki @SOYER ale nie chwal dnia przed zachodem Słońca😉 bo ja tak mam że czasem zacznę dobrze, a potem nie przewidziany głupi ruch i wszystko grzebie. W zasadzie to mogę dodać jeszcze jeden case i nie co końcówkę uporządkować: switch(numerEkranu) { case(1): lcd.clear(); lcd.print(">POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(" POZYCJA 2"); break; case(2): lcd.clear(); lcd.print(" POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(">POZYCJA 2"); break; case(3): lcd.clear(); lcd.print(">START 1"); lcd.setCursor(0, 1); lcd.print(" STOP 2"); break; case(4): lcd.clear(); lcd.print(" START 1"); lcd.setCursor(0, 1); lcd.print(">STOP 2"); break; Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Styczeń 20, 2021 Udostępnij Styczeń 20, 2021 (edytowany) ok, nie wiem po co te "1" i "2" przy start i stop, ale to Twój program. Teraz trudniejsze(?) Musisz wpisać warunki kiedy program przechodzi z jednego ekranu w inny... Kiedy, czemu i jak.... Nie wgrywaj, bo działać nie będzie... Pomyśl jak zapisać, że po jakimś zdarzeniu program wyświetla ten a nie inny ekran i jak zrobić by wyświetlał ten właściwy... Nie zawiedź mnie Norbert:) Edytowano Styczeń 20, 2021 przez SOYER 1 Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); #define upButton 9 #define downButton 10 #define selectButton 11 int numerEkranu = 1; void setup() { lcd.begin(); lcd.backlight(); pinMode(upButton, INPUT_PULLUP); pinMode(downButton, INPUT_PULLUP); pinMode(selectButton, INPUT_PULLUP); void loop() { switch(numerEkranu) { //instrukcja sterująca switch ze zmienna case(1): lcd.clear(); lcd.print(">POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(" POZYCJA 2"); if (digitalRead(downButton)){ //jeśli wciśnięty przycisk numerEkranu++; // przejdź do następnego ekranu delay(100); break; case(2): lcd.clear(); lcd.print(" POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(">POZYCJA 2"); if (digitalRead(upButton)){ //jeśli wciśnięty przycisk numerEkranu--; // wróć do poprzedniego ekranu break; case(3): lcd.clear(); lcd.print(">START "); lcd.setCursor(0, 1); lcd.print(" STOP "); if (digitalRead(selectButton)){ //jeśli wciśnięty przycisk numerEkranu++;// tutaj powinienem wpisać coś co wywoła ekran poniżej break; case(4): lcd.clear(); lcd.print(" START "); lcd.setCursor(0, 1); lcd.print(">STOP "); if (digitalRead(downButton)){ //jeśli wciśnięty przycisk numerEkranu++; break; } } Wstawiam ale od razu przyznaje się że nie jest dobrze, @SOYER przepraszam że zawiodłem po prostu mam to gdzieś w głowie jak to powinno funkcjonować ale brakuje mi tego elementu który by realizował przejście z pozycja 1 do start/stop. Napisałbym coś więcej ale muszę uciekać do pracy, wieczorem zerknę. Pozdrawiam. Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 (edytowany) 13 godzin temu, Norbert7630 napisał: ale brakuje mi tego elementu który by realizował przejście z pozycja 1 do start/stop Nie rozumiem... Czy wiesz która linijka Twojego kodu odpowiada za to który ekran będzie wyświetlony następny? Edytowano Styczeń 21, 2021 przez SOYER Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 Instrukcja sterująca switch ma zmienną z przypisaną wartością = 1, jeżeli dobrze rozumie to nie jest to wartość stała, bo zmienna int przechowuje liczby od -32768 do 32767, int numerEkranu = 1; może przyjmować wartość 1, 2, 3, 4.....bo 4 ekrany. Każdy warunek sprawdzający case ma przypisaną wartość w postaci cyfry: case 1: i pod tym warunkiem jest np. instrukcja warunkowa if coś tam ma się wykonać i wyświetlić na lcd, więc jak wcisnę przycisk down który jest w case 1: to wyświetli mi się pierwszy ekran, tylko że tam też jest linijka: numerEkranu++; i to chyba ta linijka po wciśnięciu tego przycisku down spowoduje przesunięcie w dół do następnego ekranu. Już mi się wszystko miesza😟 no i teraz jeżeli ta linijka: numerEkranu++; spowoduje że będzie wyświetlony następny ekran czyli drugi to kolejny case 2: a w nim jest podobna linijka tyle że numerEkranu--; czyli odejmowanie a w tym przypadku powrót do góry do case 1: ustawiając case 3: chciałbym wejść do trzeciego ekranu START/STOP używając przycisku select case(3): lcd.clear(); lcd.print(">START "); lcd.setCursor(0, 1); lcd.print(" STOP "); if (digitalRead(selectButton)){ //jeśli wciśnięty przycisk ?????????// tutaj powinienem wpisać coś co wywoła ekran poniżej break; Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 i wydaje mi się że przechodzenie z ekranu 1, do ekranu 2 powinno już zadziałać, no nie sprawdzałem bo nie pozwoliłeś 😅 ale wydaje mi się że marker przesuwałby się z POZYCJA 1 do POZYCJA 2 przy użyciu przycisków DOWN i UP, tyle że zamieniłbym kolejność wykonywania operacji w case : najpierw wciśnięcie przycisku, a potem wyświetlenie na lcd. Nie wiem mogę się mylić ale jak ktoś napisał że kod wykonuje się linijka po linijce to chyba lepiej w takiej kolejności najpierw przycisk a potem lcd. Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 22 minuty temu, Norbert7630 napisał: Już mi się wszystko miesza😟 masz rację:) Zapytam inaczej, co musisz wpisać w case 1, żeby po wciśnięciu przycisku(dowolnego), w następnej pętli program wyświetlał case 3 a nie case 2? Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 no to leże, zupełna pustka w głowie......sądziłem że 3 ekran to START/STOP .....POZYCJA 1 → wciskam przycisk select i wchodzę do ekranu START/STOP....ale dowolny przycisk???? Nie wiem już sam tego trochę nie rozumie 37 minut temu, SOYER napisał: w następnej pętli program wyświetlał case 3 a nie case 2? pętli? case(1): lcd.clear(); lcd.print(">POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(" POZYCJA 2"); if (digitalRead(downButton)){ //jeśli wciśnięty przycisk numerEkranu++; // przejdź do następnego ekranu delay(100); break; i tutaj mam coś zmienić żeby przejść z case 1: do case 3: ? Cytuj Link do komentarza Share on other sites More sharing options...
SOYER Styczeń 21, 2021 Udostępnij Styczeń 21, 2021 (edytowany) 🙈🙊🙉 Pierwsza rzecz, nie masz pojęcia jak działa instrukcja warunkowa switch. Wróć do 6 odcinka kursu, tam przed omówieniem instrukcji switch jest takie zdanie, przykład, że można coś zrobić na "if", ale można prościej. Czytaj to tak długo aż zrozumiesz jak działa switch. Wtedy napisz tutaj jak ona działa. Druga rzecz, 15 minut temu, Norbert7630 napisał: pętli? wiesz już, że arduino wykonuje program linijka po linijce, tak? Napisz mi które z tych linijek, które napiszesz, czasami się wykonają, a czasami nie i dlaczego? Napisz mi też, co zrobi program jak dojdzie do końca napisanego kodu? Edytowano Styczeń 21, 2021 przez SOYER Cytuj Link do komentarza Share on other sites More sharing options...
Norbert7630 Styczeń 22, 2021 Udostępnij Styczeń 22, 2021 else if (digitalRead(selectButton)==LOW) { numerEkranu++; lcd.clear(); lcd.print(">START "); lcd.setCursor(0, 1); lcd.print(" STOP "); tylko to mi przychodzi do głowy, żeby wstawić w case 1 aby móc przejść do START/STOP, nie wiem, muszę uciekać do pracy. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!