Skocz do zawartości

Norbert7630

Użytkownicy
  • Zawartość

    41
  • Rejestracja

  • Ostatnio

Wszystko napisane przez Norbert7630

  1. Witam znalazłeś rozwiązanie tego problemu?
  2. Coś mi z tą 4 nie za bardzo pasowało to tak jakby miał być case 4: którego nie ma ech......nie komentuje nawet tego swojego myślenia przepraszam @SOYER
  3. yyy.................no tak tym razem znowu się myliłem zmieniłem trochę kod i jest chwilowe życie: #define przyciskWylacz 11 //zdefiniowane piny dla przycisków #define przyciskZielona 9 #define przyciskCzerwona 10 #define diodaLedZielona 2 //zdefiniowane piny dla diod Led #define diodaLedCzerwona 3 int przyciskKolor = 1; //zmienna z przypisaną wartością void setup() { pinMode(przyciskWylacz, INPUT_PULLUP); //ustawienie pinów dla przycisków " wejście" podciągnięty pinMode(przyciskZielona, INPUT_PULLUP); //rezystor wewnętrzny PULLUP pinMode(przyciskCzerwona, INPUT_PULLUP);
  4. No dobrze@SOYER skoro się tak uparłeś że można coś więcej mnie nauczyć, to może teraz rozwieje twoje nadzieje i napisze ci jak ja to zrozumiałem. piszesz że switch jest jak if ? no to ok tak programowo: if = switch if(warunek) = case warunek: i co ma się wykonać czyli ten blok programu miałby wyglądać tak? switch (przyciskKolor){ case 1: if (digitalRead(przyciskZielona)== LOW){ digitalWrite(diodaLedZielona, HIGH); przyciskKolor=1; } delay(100); break; no i teraz już wiesz jaki ciężki przypadek ze mnie, bo wiesz także że ten kod b
  5. Cześć @SOYER , nie wiem co ci napisać bo już mam dosyć tego całego menu i chyba dam sobie z tym spokój, ot kolejna porażka i tyle. Ale zanim to nastąpi to wbrew temu co mówiłeś wyciągnąłem płytkę UNO bo się już bardzo kurzyła i sprawdziłem program. Oczywiście nie ten z menu bo i tak by nie działał ale program napisany przeze mnie taki przykładowy żeby sprawdzić czy teorie potrafię przekuć w praktykę: #define przyciskWylacz 11 //zdefiniowane piny dla przycisków #define przyciskZielona 9 #define przyciskCzerwona 10 #define diodaLedZielona 2 //zdefiniowane piny dla diod Led #define dioda
  6. Należy pamiętać o tym, że operator = służy do przypisania zmiennej wartości, a operator == do sprawdzenia czy dane wyrażenie (zmienna) jest równe wartości. Ostatni element, czyli i++ jest inkrementacją zmiennej licznikowej (czyli, co obieg pętli wartość zmiennej zwiększana jest o jeden). Równie dobrze można ten zapis zamienić na i = i + 1
  7. no właśnie idę jeszcze raz zaglądnąć do tej części kursu bo z tym mam problem
  8. case 1: lcd.clear(); lcd.print(">POZYCJA 1"); lcd.setCursor(0, 1); lcd.print(" POZYCJA 2"); if (digitalRead(selectButton)==LOW) { //jesli przycisk wciśnięty numerEkranu++; //przejdz do następnego ekranu tylko tutaj nie wiem czy przypadkiem nie powinno być numerEkranu = 3; a nie numerEkranu++; mam wrażenie że numerEkranu++ to tak jakby przeskoczenie o jeden ekran czyli do 2 więc case 2: ciężko mi teorie zamienić na praktykę
  9. int numerEkranu = 1; //zmienna z przypisaną wartością switch(numerEkranu){ //instrukcja switch ze zmienną case 1: //warunek do porównania ze zmienną jeżeli jest równy zmiennej ten case się wykona, jeżeli nie to przejdzie do następnego dobrze? wiesz co @SOYER jestem gamoń ale chyba mam dużo szczęścia:
  10. @SOYER to właśnie zrobiłem, podstaw sobie co ci pasuje i pomyśl że to ja zrobiłem, ja wiem że zmienna x nie może być porównana z żadnym case które wymieniłem tam, ale mi nie chodzi o szczegóły, a jedynie sens zrozumienia samego działania tej instrukcji czy ja wiem czy nie wiem
  11. Może na wyżej wspomnianym przykładzie w switchu zmienna - x, w case warunek do sprawdzenia ze zmienną, warunków case jest kilka, do pinu A5 podpięty regulowany dzielnik napięcia czyli potencjometr, zwiększa lub zmniejsza odczyt ADC, chcemy dokonać odczytu wartości z pinu A5 w formie binarnej, szesnastkowej itp. Każdy case ma przypisaną czynność związaną z odczytem tych wartości case d:, case h:, itp te literki w case po spacji to warunki i teraz jeżeli do monitoru portu szeregowego wpiszemy literkę ,,d,, to mikrokontroler odczyta bieżąca wartość jaka jest na A5 i wyświetli ja na ekranie moni
  12. 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
  13. 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 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: ?
  14. 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.
  15. 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 p
  16. #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
  17. 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.
  18. 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
  19. 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
  20. Cześć @SOYER W miarę przerabiania kursu tuż obok próbowałem dodatkowo pisać kod na nowo, tak wiem mówiłeś żeby najpierw się zająć kursem a potem pisać. Jednak ta moja niecierpliwość wrodzona daje czasem znać o sobie, a dodatkowo chciałem sprawdzić na ile mogę sobie pozwolić już z tym kodem przy tej wiedzy. No oczywiście że nie na wiele ale trochę napisałem tego kodu ale nie wstawiałem bo jak to z ludźmi zaraz krytyka i ośmieszenie nie którzy podejdą spokojnie, pomogą jak ty czy inni ale są też tacy co postępują inaczej wiadomo. I to co tutaj wstawiłeś było właśnie a raczej jest podobne
  21. Cześć @SOYER Dokładnie tak to tylko skrót myślowy z tym Arduino stoi . W przypadku rozwiązań mojego menu jak zwykle masz racje, i ja też o tym pomyślałem żeby jednak po przejściu do pozycji ostatniej w menu przy pomocy przycisku np. DOWN czyli kolejny raz w dół wracał do początku listy menu, to na wypadek dopisania kolejnych pozycji w menu głównym. Świetne rozwiązanie, tylko że dla mnie oznacza to kolejną linijkę lub więcej kodu, a ja już na poważnie zaczynam się bać że jednak tego nie dam rady zrobić, trochę jak z motyką na słońce. Przerobiłem ten przykład z tą instrukcją sterującą swit
  22. Tutaj ciągle są dwa połączenia@bjrk z tego co napisałeś mają być 4 bo są 4 przyciski może opiszę możliwie najkrócej jak to menu działa. W momencie uruchomienia programu na wyświetlaczu LCD pojawiają się opcje setCursor(0, 0);URZĄDZENIE 1 i setCursor(0, 1);URZĄDZENIE 2 czyli te opcje menu znajdują się jedna pod drugą. Dodatkowo przy opcji URZĄDZENIE 1 przed nazwą jest marker....tak wygląda ekran startowy po uruchomieniu programu i do tego momentu wszystkie przyciski śpią, a Arduino sprawdza czy nie są wciskane. W zależności od tego co chce zrobić np: uruchomić urządzenie 1.......w tym mom
  23. Nie wiem, tak to ja widzę, z góry przepraszam za jakość i proszę o jakieś wskazówki co jest źle.
  24. Zadanie 1.1 granica widoczności na poziomie 12 ms
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.