• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zawieszanie wyświetlacza OLED
#61
Oledy na Ali to bardziej 2-3$, a i tak nie wiadomo jaki będzie driver, jak mu zależy na czasie to zakup w PL na Allegro za 18zł wcale nie jest drożej.
Wgrałem ten Twój kod, jedyne głupoty które zauważyłem na ekranie to sporadyczne pokazywanie walniętych odczytów z czujnika wilgotności. Tak poza tym to działa od wczoraj bez zawieszek, a po użyciu tych millis, z którymi coś tam zacząłeś, to nawet odczyty błędne przestały się pojawiać - oczyty co 500ms, ekran odświeżony co 1000, a analog i piny obsłużone co 50ms . Dodatkowo zużyłem jeszcze kilkaset bajtów na komunikaty w UART. Ja mam oczywiście OLED SSD1306 (chyba, bo nie zauważyłem zewnętrznych różnic). Także to nie RAM. Albo zmień bibliotekę do ekranu, albo ekran do szuflady. SH1106 dodatkowo nie ma przewijania ekranu, jakby ktoś potrzebował oczywiście.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#62
Dziękuję kaczakat za przetestowane- jak widać jest to wina wyświetlacza. Zainwestuje w nowy i będzie po problemie. Bibliotekę mówisz żeby zmienić- najgorsze to , że ten wyświetlacz działa tylko z tą biblioteką co była w kodzie. Tak jak już pare dni temu próbowałem z bibliotekami co mi wysyłaliście i nie działało. Jedyne wyjście to wymiana wyświetlacza. Dziękuję za rady.
 
Odpowiedź
#63
Tylko że ciągle nie wiesz kiedy program klęka, a jak używasz kodu z pierwszej strony to odpalasz go jako SSD1306 nie SH1106. Zamów sobie ze dwa oledy, niestety mając 1 nie stwierdzisz za dużo. Jedyne co zauważyłem, to że moje wszystkie mają GND na bolcu od krawędzi, ten z botland ma na krawędzi VCC. Niestety to nie jest pewny wyznacznik, na pewno miałem kiedyś oleda z odwróconymi pinami i na pewno wtedy jeszcze używałem tylko biblioteki od Adafruit dla SSD.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#64
A czy przypadkiem nie wiesza tobie oled odczyt dth?
Nie wiem jak tam wyglada sprawa, ale z tego co pamietam dth to kiepski czujnik to raz, a dwa biblioteka pisana z delay-ami..
Jak czytasz dth a w tym czasie cos chcesz zrobic, zapomnij.
A widze ze w petli glownej czytasz, odswierzasz oled i cos jeszcze..


// Reset 40 bits of received data to zero.
data[0] = data[1] = data[2] = data[3] = data[4] = 0;

// Send start signal. See DHT datasheet for full signal diagram:
// http://www.adafruit.com/datasheets/Digit...AM2302.pdf

// Go into high impedence state to let pull-up raise data line level and
// start the reading process.
digitalWrite(_pin, HIGH);
delay(250);

// First set data line low for 20 milliseconds.
pinMode(_pin, OUTPUT);
digitalWrite(_pin, LOW);
delay(20);

Wiec sprawdz czy po wylaczeniu dth nadal sie wiesza (moze slesz do oleda i jeszcze chcesz czytac dth..), lub zrob odczyt, jak skonczy obsluge dth, sprawdz poprawnosc odczytu i rob reszte...i nie odczytuj wiecej niz raz na 2sek..nie widze u ciebie ile razy na sek odczytujesz...


Nawet w example masz tak:


void loop() {
// Wait a few seconds between measurements.
delay(2000);

// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#65
(03-11-2018, 00:55)wchpikus napisał(a): Wiec sprawdz czy po wylaczeniu dth nadal sie wiesza (moze slesz do oleda i jeszcze chcesz czytac dth..)

Gdzie w kodzie widzisz, że gdy czyta DTH to i wysyła coś do OLED? Pokaż! Ja nie widzę.
 
Odpowiedź
#66
Zle napisalem, mialo byc moze.
Pokaz ta biblioteke od dth, moze jest w niej cos, co powoduje ze jesli czujnik nie odpowie poprawnie to wisi gdzies w petli?
Moze masz bledne crc, dla mnie za czesto robisz odczyty.

Tutaj masz przyklad jak powinno sie odczytywac dth.

https://forum.arduino.cc/index.php?topic=524539.15

Kup lepiej si7021 jest o wiele lepszy niz dth..

Nie zdziw sie jak po pewnym czasie dth umrze, szczegolnie na dworze..u mnie kilka sztuk skorodowalo, nie nadaja sie jako czujnik zewnetrzny.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
#67
(03-11-2018, 11:05)wchpikus napisał(a): Zle napisalem, mialo byc moze.
Biblioteki Arduino, najczęściej wykluczają wielowątkowość. Jak już ktoś potrafi sam pisać biblioteki, to raczej (jak ja) nie używa Arduino. Powodów są nie tysiące a raczej miliony.

(03-11-2018, 11:05)wchpikus napisał(a): Pokaz ta biblioteke od dth, moze jest w niej cos, co powoduje ze jesli czujnik nie odpowie poprawnie to wisi gdzies w petli?
Nie zdziwił bym się. Arduino jest znane z tego, że kontroli JAKICHKOLWIEK błędów nie ma.


(03-11-2018, 11:05)wchpikus napisał(a): Nie zdziw sie jak po pewnym czasie dth umrze
Tak, to szmelc (jak i Arduino). Nawet w dobrych dla nich warunkach środowiskowych po jakimś czasie zaczynają pokazywać głupoty. DTH to zabawka (jak i całe szmelcowate Arduino).
 
Odpowiedź
#68
Samo arduino jak kazdy edytor ale jest ewidentnie do d..,kompilatory i tak sa zewnetrzne.
Nie rozumiem czemu nie rozwina tego bardziej jak eclipse lub cos podobnego..nie trzeba od razu wszystko na raz, ale chocby wskazywanie zmiennych lub funkcji..tragedia w szukaniu czekokolwiek.

Co do dth..wywal to na smieci, szkoda czasu na szukanie bledow, okaze sie potem ze i tak czujnik do wywalenia.

Kup taki i zapomnij.



Wysłane z mojego SM-G950F przy użyciu Tapatalka
[Obrazek: f03c02d97fd32449dce132d12a9b6514.jpg]
 
Odpowiedź
#69
(03-11-2018, 11:23)wchpikus napisał(a): Samo arduino jak kazdy edytor ale jest ewidentnie do d..,kompilatory i tak sa zewnetrzne.

Nie tylko edytor. Od strony programowania Arduino to IDE. Napisz jak w tym "cudownym" wynalazku sprzętowo debugować program. Każdy, kto na poważnie programuje uC, wie, ze bez debugera pracy nie ma. Nie to, że się nie da, ale czas pracy, najczęściej, wydłuża się kilkukrotnie a co za tym idzie, koszt projektu.
U mnie np stawki, za pisanie "na Arduino", zwłaszcza UNO, to standardowa cena razy 2 do  4. W praktyce robię to nie w Arduino, później portuję.

PS
W CV, Arduino, to raczej sobie nie wpiszę :-)
Chyba, że do cyrku będę sie zatrudniał :-)
 
Odpowiedź
#70
Debagowanie tylko po uart i ew znaczniki w kodzie..no nic, troche pod gorkeWink

Wysłane z mojego SM-G950F przy użyciu Tapatalka
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości