Wyświetlacz OLED problem z wyświetlaniem zmiennej

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 14 sie 2014, 09:21

Witam !

Czy ktoś z użytkowników zetknał się z takim problemem otóż:

Kod: Zaznacz cały

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_DC 12
#define OLED_CS 7
#define OLED_CLK 6
#define OLED_MOSI 5
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

const int  buttonPin = 2;    


int buttonPushCounter = 0;   
int buttonState = 0;        
int lastButtonState = 0;     

void setup()   
{ 

  display.begin(SSD1306_SWITCHCAPVCC);
  display.clearDisplay();   // clears the screen and buffer
   
  pinMode(buttonPin, INPUT);
Serial.begin(9600);
}

void loop()   
{
  
  buttonState = digitalRead(buttonPin);
  
    if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    }
    else {
      Serial.println("off");
    }
  }


  int n = buttonPushCounter;
  String myString = String(n);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("klik : "); display.print(buttonPushCounter);
  display.display();
  
 }
problem jest taki, że nie mogę wyświetlić ilości kliknięć na wyświetlaczu natomiast kiedy wykomentuje kod obsługi wyświetlacza na serialu pojawiają się zliczone wartości, w momencie kiedy ekran jest włączony nie zlicza nic i na serialu też nic nie pokazuje.

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: kazzik87 » 14 sie 2014, 11:30

fachura pisze:nt n = buttonPushCounter;
  String myString = String(n);
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.print("klik : "); display.print(buttonPushCounter);
  display.display();
A czego masz to poza pętlą loop?
Wsadź to w jakąś funkcje i wklej do pętli loop!
---
Jeżeli pomogłem to kliknij "Pomógł".
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 14 sie 2014, 11:52

Nie jest za loopem
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: kazzik87 » 14 sie 2014, 14:40

Fakt nie zauważyłem ostatniej klamerki.

Sprawdź czy Serial i Display nie mają tych samych przerwań.

Po co Ci:
nt n = buttonPushCounter;
String myString = String(n);
skoro z tego nie korzystasz?
---
Jeżeli pomogłem to kliknij "Pomógł".
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 20 sie 2014, 20:03

kazzik87 pisze:Fakt nie zauważyłem ostatniej klamerki.

Sprawdź czy Serial i Display nie mają tych samych przerwań.

Po co Ci:
nt n = buttonPushCounter;
String myString = String(n);
skoro z tego nie korzystasz?
A bo już próbowałem jakieś konwersji na stringa i zostało ale to chyba jest inna kwestia wystarczy, że podłącze kabelek do wejścia cyfrowego a zaczyna zliczać jak szalony więc to kwestia zakłóceń albo tego, że to może jakaś lewizna.
kazzik87
Starszy majsterkowicz
Posty: 440
Rejestracja: 14 lip 2014, 21:54
Lokalizacja: Lublin

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: kazzik87 » 20 sie 2014, 21:26

Podeślij schemat
---
Jeżeli pomogłem to kliknij "Pomógł".
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 27 sie 2014, 23:54

Szkoda kilbajtów, ot rezystor przycisk i tyle. Dotarła do mnie wersja Mega i zachowanie jest takie samo. tzn na cyfrowych pinach dalej nie "łapie" buttona natomiast wszystko działa ok kiedy podłącze do pinów PWM
stiven
Złota rączka
Posty: 1629
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: stiven » 28 sie 2014, 09:43

Wcześniej myślałem, że jest problem z wyświetlaniem, teraz widzę, że raczej masz problem z, jak napisałeś, "łapaniem" przycisku. Żeby nie było właśnie tego typu problemu, to się deklaruje wejście jako pinMode(buttonPin, INPUT_PULLUP), a przycisk zwiera wtedy nie do 5V, a do masy (a dalej w programie wykrywanie wciśnięcia przycisku trzeba zmienić na if(buttonState == LOW)). Dopisanie tego PULLUP, powoduje wewnętrzne podciągnięcie wejścia na 5V, czyli kiedy przycisk nie jest wciśnięty to na wejciu jest stan wysoki, a w trakcie naciśnięcia stan niski.
Chodzi o to, że kiedy wejście jest zadeklarowane normalnie, to kiedy przycisk nie jest wciśnięty, to na wejście nie jest podawany żaden stan, czyli jest stan nieustalony i przez arduino może on być interpretowany jako 0 albo 1. Jakoś niedawno miałem właśnie podobną sytuację, że problem był nie tylko bezpośrednio z samą obsługą przycisku, ale jeszcze coś innego nie działało tak jak trzeba, na co przycisk nie miał żadnego wpływu. Po zmianie deklaracji wejścia było już wszystko okej.
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 28 sie 2014, 20:05

Nie wiem o co chodzi ale działa mi tylko opcja ze zwieraniem do masy przez rezystor (żeby wyeliminować stany nieustalone) ale tylko na pinach PWM, na cyfrowych nic nie działa a pull up powoduje restart
giciors
Młodszy majsterkowicz
Posty: 37
Rejestracja: 12 sie 2014, 16:36

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: giciors » 28 sie 2014, 21:23

Witam
display.print(buttonPushCounter); jak chcesz wyświetlić zmienną typu int? i po co zamieniasz tą zmienną na string i nic z nią nie robisz wpisz display.print("klik : "); display.print(myString); i zadziała z tego co pamiętam to zmienna musi być typu string a nie intiger. Sprawdz to
Pozdrawiam
fachura
Młodszy majsterkowicz
Posty: 6
Rejestracja: 14 sie 2014, 09:11

Re: Wyświetlacz OLED problem z wyświetlaniem zmiennej

Post autor: fachura » 28 sie 2014, 21:55

Ok, nie rozwijajmy się za bardzo w temacie buttonów, wszystko działa moja wina, na uno przyczyną były stany nie ustalone. A na Mega przed cyfrowymi pinami od 22 wzwyż na tej samej listwie występuje zasilanie więc myśląc, że podłączam do pinu 22 podłączałem do zasilania stąd restart (i zwora UPS;) teraz zabieram się do zliczania buttony działają a już myślałem, że polegnę na buttonach ;)
ODPOWIEDZ

Strony partnerskie: