Arduino Polska Forum
wyswietlacz OLED 128x32 u8g2 menu problem - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: wyswietlacz OLED 128x32 u8g2 menu problem (/watek-wyswietlacz-oled-128x32-u8g2-menu-problem)



wyswietlacz OLED 128x32 u8g2 menu problem - hc912 - 17-09-2018

witam wszystkich, moje pytanie brzmi ... czy ktoś przerabial temat menu z tym wyswietlaczem ? mianowicie menu uruchomione , ale nie moge dojsc jak zrobic zeby sie przwijalo na nastepne pozycje (w sumie jest ich 7) , 3 pierwsze widac , a dalej juz znika pasek menu , mecze sie juz kilka dni z tym problemem ale bezskutecznie
- biblioteka U8g2 (czyli nastepca U8gLib)
- wyswietlacz 128x32 - 0.91 OLED niebieski SSD1306 (albo jak kto woli 1305)
- uno
- 3 przyciski do obslugi menu

kod w zalaczniku Idea


RE: wyswietlacz OLED 128x32 u8g2 menu problem - kaczakat - 18-09-2018

Witam, wrzucasz jakiś kawałek projektu i nie wiadomo czy to w ogóle ma prawo działać - komplet to kod, schemat, zdjęcia, opis co to i po co. Jak jest przycisk zwierany do masy to powinien normalnie być włączony przez rezystor np. 10k do VCC, tak masz?
Można też wpisać zamist trybu INPUT INPUT_PULLUP tu:
Kod:
pinMode ( p1, INPUT);
pinMode ( p2, INPUT);
pinMode ( p3, INPUT);



RE: wyswietlacz OLED 128x32 u8g2 menu problem - hc912 - 21-09-2018

na razie test wyswietlacza , 3 przyciski do obslugi , jesli bedzie dzialal tak jak chce to wtedy bedzie dalsza czesc , przyciski zwierane do masy przez 10k , od strony hw wszystko tak jak ma byc , zostaje tylko strona sw


RE: wyswietlacz OLED 128x32 u8g2 menu problem - kaczakat - 21-09-2018

Lepiej wrzuć schemat. Z Twojego opisu wynika, że nie wiesz co robisz. A ja się teraz będę powtarzał i zejdzie tak nam do Wielkanocy: pin przycisku jest albo zwierany do masy, albo do VCC (BEZ REZYSTORA), a w czasie bezczynności jest PODCIĄGNIĘTY (podłączony na stałe przez rezystor np. 10k) do VCC lub GND - na odwrót, dzięki temu procesor zauważa zmianę stanu na pinie. Więc albo jest problem ze schematem, albo wysławianiem.
Typowo w AVR jest to zwieranie do masy, a podciągnięcie do VCC, bo robi się to poleceniem konfigurującym wejście pinu i nie trzeba rezystorów na płytce.
A kod programu wklejaj normalnie w "kod" w pełnej edycji, pewnie byłoby więcej podpowiedzi, ale nikomu się nie chce ściągać, rozpakowywać i oglądać, bo niektórzy czytają forum np. jadąc pociągiem, przecież to parę linijek programu:
Kod:
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // Adafruit Feather ESP8266/32u4 Boards + FeatherWing OLED

//==przyciski=========================================================

#define p2 7  // srodkowy
#define p1 9  // lewy
#define p3 8  // prawy

#define MENU_ITEMS 7
char* menu_strings[MENU_ITEMS] = { "111111", "222222", "333333", "444444", "555555", "666666", "777777" };

int menu_current;

//==update_menu=======================================================

void update_menu(){

pinMode ( p1, INPUT);
pinMode ( p2, INPUT);
pinMode ( p3, INPUT);

if (digitalRead (p1) == LOW ) {
     menu_current++;
     if ( menu_current >= MENU_ITEMS )
       menu_current = 0;
}
else if ( digitalRead (p3) == LOW ) {
     if ( menu_current == 0 )
       menu_current = MENU_ITEMS;
     menu_current--;
}
}

//==draw_menu=========================================================

void draw(){
 
 uint8_t i, h, w, d;
 
 u8g2.setFont(u8g2_font_helvR08_te);
 u8g2.setFontRefHeightText();
 u8g2.setFontPosTop();
 h = u8g2.getAscent()-u8g2.getDescent();
 w = u8g2.getDisplayWidth();

 for( i = 0; i < MENU_ITEMS; i++ ) {        // draw all menu items
   d = (w-u8g2.getStrWidth(menu_strings[i]))/2;
     u8g2.setDrawColor(2);

   if ( i == menu_current ) {   // current selected menu item
     u8g2.drawBox(0, i*h, w, h);     // draw cursor bar
     u8g2.setDrawColor(0);
   }
  u8g2.drawStr(d, i*h, menu_strings[i]);
 }
}

//==setup=============================================================

void setup() {
 // OLED Display
 u8g2.begin();
 
}

//==loop==============================================================

void loop() {

 u8g2.firstPage();
 do {
   draw();
 } while ( u8g2.nextPage() );
//  delay(10);
 update_menu();
}

//====================================================================
Z kodu programu wynika, że przycisk jest podciągnięty przez Twój rezystor 10k do VCC, a wciskając go zwierasz bezpośrednio do masy. Pewnie dlatego nie działa. Nie jest to żaden problem ani HW, ani SW, tylko niezgodności jednego z drugim.
Dlatego by nie marnować czasu teraz się zdecyduj, który układ wybierasz, a na przyszłość wrzucaj kod i schemat + ewentualnie zdjęcia, bo mając nawet jedno i drugie prawidłowo ludzie i tak sobie źle podłączą na układzie - każdy może się pomylić.
A to prowadzi do wniosku: zalicz jakiś kurs podstaw elektroniki i Arduino - są darmowe tu: kurs.


RE: wyswietlacz OLED 128x32 u8g2 menu problem - hc912 - 21-09-2018

kolego kaczakat , problem dotyczy menu a nie przycisków , nie czytasz ze zrozumieniem (to po pierwsze) .
po drugie : napisałem wyraźnie , przewijają się pierwsze 3 pozycje , później pasek menu znika na 4 ,5 ,6 ,7 (nie widać go) , później znów się pojawia na pozycji 1 (wtedy jest widoczny na wyświetlaczu) , jeśli nie masz nic więcej do powiedzenia nt. kodu to bardzo proszę nie odpowiadaj na posty bo i tak nic nie wnosisz do tego wątku


RE: wyswietlacz OLED 128x32 u8g2 menu problem - es2 - 21-09-2018

(21-09-2018, 21:26)hc912 napisał(a): jeśli nie masz nic więcej do powiedzenia nt. kodu to bardzo proszę nie odpowiadaj na posty bo i tak nic nie wnosisz do tego wątku

Tryb roszczeniowy, wkład własny ZERO!!!
Nawet kolega kodu nie przeanalizował, bo pewnie dodałby swoje komentarze, chyba, że jest geniuszem ale wtedy nie było by miałczącego postu na forum.

W kodzie widzę już jeden błąd (pewnie jest ich więcej). Nie dam ryby, dam wędkę.
Wyeliminuj obsługę przycisków, KTÓRA JEST ZROBIONA ŹLE!
Przypisz zmiennej stałą wartość i sprawdź jak zachowuje się menu. Wyciągnij wnioski, popraw błędy i będzie ok.


PS
Trybem roszczeniowym wiele kolega nie uzyska. Ewentualne osoby, które będą chciały pomóc oleją kolegę. Dobrze radzę zastanowić się nad sobą i zmienić treść postu.


RE: wyswietlacz OLED 128x32 u8g2 menu problem - hc912 - 22-09-2018

wyswietlacz opanowany , dziekuje es2 za sugestie , temat mozna zamknac, pozdrawiam


RE: wyswietlacz OLED 128x32 u8g2 menu problem - es2 - 22-09-2018

(22-09-2018, 10:32)hc912 napisał(a): wyswietlacz opanowany

I tak to juz jest na forach. Prośby, błagania, a jak problem zostanie rozwiązany to poprawnego kodu się nie pokazuje. Jak ktoś będzie miał podobny problem niech się męczy.
Później tylko narzekania "nikt na tym forum nie chce pomóc" itp.

Sami sobie użytkownicy robicie "kuku".


RE: wyswietlacz OLED 128x32 u8g2 menu problem - Robson Kerman - 22-09-2018

(22-09-2018, 10:51)es2 napisał(a):
(22-09-2018, 10:32)hc912 napisał(a): wyswietlacz opanowany

I tak to juz jest na forach. Prośby, błagania, a jak problem zostanie rozwiązany to poprawnego kodu się nie pokazuje. Jak ktoś będzie miał podobny problem niech się męczy.
Później tylko narzekania "nikt na tym forum nie chce pomóc" itp.

Sami sobie użytkownicy robicie "kuku".

Zgadzam się w 100%
Temat zamknę, gdy pojawi się poprawny kod.
Nawet w przypadkach, gdy autor wątku sam rozwiąże problem, powinien podzielić się informacją z użytkownikami.
Taki jest sens istnienia forów internetowych.


RE: wyswietlacz OLED 128x32 u8g2 menu problem - es2 - 24-09-2018

(22-09-2018, 15:22)Robson Kerman napisał(a): Temat zamknę, gdy pojawi się poprawny kod.

To już pewnie nie za mojej kadencji. Prędzej pewnie ludzie wylądują na Marsie niż zobaczymy tu poprawny kod autora.

Młodzież tak ma, meczy się nad kodem miesiąc co wycenia na 160h*400zł = 64k zł a robota powinna być zrobiona w 1h (gotowiec z netu) * 30zł (amator). Kodu oczywiście nie chce umieszczać, bo to jest "jego indywidualne dzieło", a tak naprawdę zwykły PLAGIAT.  Czy plagiat jest chroniony prawami autorskimi? Czy za plagiat można żądać wynagrodzenia?