- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 44

Thema: Uno R3 mit 128x64 Pixel Display und Dreh-Encoder grafische Anzeigeprobleme

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Hallo Wolle,

    ändere mal bitte "int volatile Encoderwert = 1;" in "volatile int Encoderwert = 1;" !
    Hier Referenz dazu: https://www.arduino.cc/reference/en/...iers/volatile/

    Übersetzung:
    volatile ist ein Schlüsselwort, das als Variablenqualifikationsmerkmal bezeichnet wird. Es wird normalerweise vor dem Datentyp einer Variablen verwendet, um die Art und Weise zu ändern, auf die der Compiler und das nachfolgende Programm die Variable behandeln. Das Deklarieren einer variablen Variable ist eine Anweisung an den Compiler. Der Compiler ist eine Software, die Ihren C / C ++ - Code in den Maschinencode übersetzt. Dies sind die echten Anweisungen für den Atmega-Chip im Arduino.
    Ich vermute, Du musst den Encoderwert auf die Breite der Box skalieren. Ich kann nicht sehen, wie breit die Box max. sein darf und wie hoch der Encoderwert maximal ist. Daher liegt die Vermutung nahe, dass der Encoderwert größer wird, als die Max-Boxbreite + dem Offset von 10. Wenn Max-Boxbreite = Max-Encoderwert sein sollte, dann beginnst Du an X-Position 10 und hast dadurch einen Überlauf.

    Versuchsweise könnte man das mal so machen:

    Code:
     
       int Prozent=50;
    
       int Bar1n=Bar1/100*Prozent;
       int Bar2n=Bar2/100*Prozent;
       int Bar3n=Bar3/100*Prozent;
       u8g2.clearBuffer();					// clear the internal memory  u8g2.setFont(u8g2_font_ncenB08_tr);	// choose a suitable font
    
      u8g2.setDrawColor(1); /* color 1 for the box */
      u8g2.drawBox(10,Cursor,Bar1n,15);
     
      u8g2.setDrawColor(2); /* color 1 for the box */
      u8g2.drawStr(25,20,"Wert 1 = ");  // write something to the internal memory
      u8g2.setCursor(95, 20);
      u8g2.print(Bar1);  // write something to the internal memory
    
      u8g2.setDrawColor(1); /* color 1 for the box */
      u8g2.drawBox(10,Cursor,Bar2n,15);
     
      u8g2.setDrawColor(2); /* color 1 for the box */
      u8g2.drawStr(25,40,"Wert 2 = ");	// write something to the internal memory
      u8g2.setCursor(95, 40);
      u8g2.print(Bar2);  // write something to the internal memory
    
      u8g2.setDrawColor(1); /* color 1 for the box */
      u8g2.drawBox(10,Cursor,Bar3n,15);
     
      u8g2.setDrawColor(2); /* color 1 for the box */
      u8g2.drawStr(25,60,"Wert 3 = ");  // write something to the internal memory
      u8g2.setCursor(95, 60);
      u8g2.print(Bar3);  // write something to the internal memory
    Damit wird jeder Bar nur 50% breit. Wenn dann alles klappt, kann man die Prozente erhöhen, bis es dann nicht mehr funktioniert und schauen, wo die Grenze ist. Könnte man dann für die Ausgabe im Display immer auf diesen Wert skalieren und fertig.

    MfG
    Geändert von Moppi (01.01.2019 um 23:45 Uhr)

Ähnliche Themen

  1. Dreh-Encoder gibt "Rückschlag-Impuls" ab - wieso nur?
    Von t0bias im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 03.03.2014, 16:08
  2. Dreh-Encoder und Tasten gleichzeitig abfragen
    Von DerSchatten im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 13.05.2011, 20:16
  3. LCD-Display 128x64 mit dem Controler T6963c
    Von heri im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 05.06.2007, 22:04
  4. Funktioniert der Pollin-Dreh-Encoder mit BASCOM?
    Von felack im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 27.06.2006, 17:52
  5. Hyundai 128x64 LC-Display
    Von ShadowPhoenix im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 14
    Letzter Beitrag: 01.12.2005, 21:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests