CAJOE Geiger

Begonnen von Hero, 21. Oktober 2022, 19:20

⏪ vorheriges - nächstes ⏩

kater

#30
Hier ist der entsprechende Ausschnitt aus dem Code:

      if (current_cpm != previous_cpm) {
        display.clear();
        if (current_cpm > threshold) {
#if INVERT_OLED
          display.normalDisplay();
#else
          display.invertDisplay();
#endif
          display.drawXbm(0, 0, RADIO_W, RADIO_H, (const unsigned char*)radio_bits);
          display.setTextAlignment(TEXT_ALIGN_CENTER);
          display.setFont(ArialMT_Plain_24);
          display.drawString(96, 30 , String(current_cpm));
          display.display();
        } else {
#if INVERT_OLED
          display.invertDisplay();
#else
          display.normalDisplay();
#endif
          display.setTextAlignment(TEXT_ALIGN_CENTER);
          displayString("Radioaktivität", 64, 0);
          displayInt(current_cpm, 64, 30);
#if INVERT_OLED
          // additional display for better readability on worn out OLED screen
          //display.setTextAlignment(TEXT_ALIGN_LEFT);
          displayInt(current_cpm, 24 + random(80), 12);
#endif
        }
        previous_cpm = current_cpm;
      } else {
        // no change => do nothing
      }

Erläuterung: Nur bei Änderung des CPM-Werts wird aufs OLED geschrieben, dieses wird dazu als Erstes mit clear() gelöscht. Es gibt also keine alten, stehengebliebenen Grafikreste mehr. Die Präprozessorkonstante INVERT_OLED gibt an, ob das Display schwarz auf weiß betrieben werden soll; in dem Fall wird die Library-Funktion invertDisplay() aufgerufen.
Wenn der Wert über der (dynamischen) Alarmgrenze liegt, wird ein Trifoil mit dem CPM-Wert angezeigt, ansonsten der CPM-Wert einmal mittig zur Wear-Kompensation und einmal an einer zufälligen x-Koordinate im Bereich darüber.

Ich sehe, dass ich verschiedene Codestücke besser vor die if-Abfrage ziehen und auch überhaupt mal aufräumen könnte, ich habe hier aber mal den originalen Code gezeigt, wie er aktuell läuft. Das ist aber auch nur Kosmetik, schnell genug ist er allemal und es flackert auch nichts.

Beim Einschalten sieht man aber auch schon die eingebrannten Zahlen aus den letzten Jahren (meist 1x und 2x oder einstellig) – die Null ist aktuell gezeichnet, alles andere alt:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Und auch das Trifoil kann man als Schatten erkennen, obwohl das eigentlich nicht so dauerhaft angezeigt wurde. Der weiße Querstreifen ist ein Foto-Artefakt und kommt von der unterschiedlichen Bildfrequenz zwischen Display und Telefonkamera.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Hero

Zitat von: kater am 17. Mai 2023, 14:58...
Also ein bisschen eingebrannt ist das Display. Aber die Zahlen in der Mitte sind mAn glasklar ein Programmierfehler. Das sieht man eben an den unterschiedlichen Anzeigen. Beitrag #18 zeigt noch eine 24, die von einer 0 überlagert wird. Beitrag #30 sind auch zwei verschiedene Anzeigen zu sehen. 26 und 22, jeweils von einer 0 überlagert, die ebenfalls nicht gelöscht worden ist.

Das "display.clear();" scheint nichts zu bewirken. Ich würde es schon wegen der Geschwindigkeit durch invertiertes Schreiben des Werts "previous_cpm" ersetzen, so, wie in meinem Beispiel. Das ist viel schneller und funktioniert auch. Dabei blinkt das Display nur kurz, während ein Clear normalerweise sehr lange (Sekunde+) dauert.

Ich würde einfach mal einen anderen, einfachen Sketch verwenden. Dann sollten die Zahlen in der Mitte nicht oder kaum zu sehen sein. Dann weißt du sicher, dass es ein Programmierfehler ist.
Es ist nie falsch, das Richtige zu tun.

FromScratch

Zitat von: NoLi am 09. Mai 2023, 21:00
Zitat von: kater am 09. Mai 2023, 18:51...
Schrumpfschlauch, am besten schwarzer Schrumpfschlauch.
Aber nicht heiß machen... :)

Norbert

Doch, natürlich heiß machen, sonst kriegt man die Enden nicht zu. Aber nicht wie der Maker mit dem Feuerzeug, sondern mit dem Hießluftlötkolben auf niedrigster Stufe. Und sehr, sehr, sehr, sehr vorsichtig.

Und auf jeden Fall Anode und Kathode mit zb Lackmarker draufschreiben und evt den Typ.

Seit da die schwarze Socke drüber ist, kann die Sonne draufscheinen.

Beta rauscht mMn immer noch gut durch.

NoLi

Zitat von: FromScratch am 28. Januar 2024, 02:03Doch, natürlich heiß machen, sonst kriegt man die Enden nicht zu. Aber nicht wie der Maker mit dem Feuerzeug, sondern mit dem Hießluftlötkolben auf niedrigster Stufe. Und sehr, sehr, sehr, sehr vorsichtig.
...

Beim Gerät BR-6 ist der Schlauch über das Zählrohr M4011 nur drüber gezogen...reicht offenbar auch (ab 0:15 min):


Norbert