- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Printbefehl verkürzen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118

    Printbefehl verkürzen

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    habe eine Bargraphanzeige deren Balken-Data ich mit Prinbin ausgebe.
    nun müsste ich bei 10 Balken wohl schreiben:
    Printbin Bar ; Bar ; Bar ; usw. Bar ;(Also 10 mal Bar)
    Das geht auch einfacher.Aber wie?
    In meinen Code-Auszug wurde für jede Balkenlänge eine Data eingerichtet.
    Das frisst zu viel Speicher.

    Code:
     Elseif Poti < 100 Then
      Restore Bar10
      For Count = 1 To 13
      Read Bar:
      Printbin Bar ;
       Next

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Naja, 10 Outputs sind auch 10 Aktionen mit 10 Werten, so oder so.
    WAS genau meinst du, daß zu lange/kompliziert wäre ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118
    Hallo PicNick
    Beim ersten "Entwurf" wurde 10 mal der o.g. Code geschrieben.
    Also Ist Poti 10 dann Lese und Schreibe Bar 1
    Ist Poti 20 dann lese und Schreibe Bar 2
    usw.
    Ich habe 10 Data hinterlegt (Bar1-Bar10).Nun wird der Speicher knapp.
    Ich wollte nur 1 Data hinterlegen und dann sollte es so aussehen.
    Ist Poti 10 dann Lese und Schreibe Bar1
    Ist Poti 20 dann Lese Und Schreibe 2 mal Bar1
    Ist Poti 30 dann Lese und Schreibe 3 mal Bar1
    usw.
    Es soll aus den Wert Poti 10 bis 200 die Baranzahl errechnet werden.
    Also allas wird eine Bargraphanzeige bis 10 Balken.
    Es ist ein Beispiel in Bascom,ich kann aber rechnen soviel ich will
    klappt nicht.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    dim x as byte
    dim y as byte
    x=poti/10
    for y=1 to x
    printbin Bar1
    next y
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118
    danke,
    in Bascom wurde der Anfangswert ,Endwert,Wertstaffelung und Balkenanzahl berücksichtigt.
    .Ich dachte auch ich muss runden.Jetzt bin ich
    aber schon ein Schritt weiter.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Das Runden ergibt sich aus der Dimensionierung der Werte
    Bytes sind nur ganze Zahlen zwischen 0-255
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118
    Hallo Vitis,
    die Idee ist gut .Der Speicher ist wieder frei,aber es darf der Wert
    nur einmal in der Schleife ausgegeben werden.Deine Version gibt
    mehrmals den Wert aus .Irgend etwas habe ich falsch gemacht.
    Anbei mal den Code

    Code:
     Wait 1
     Graphic
     Wait 3
     Loschen
     Waitms 500                                                 'Interrupts global zulassen
    Do
      Screen
      Waitms 25
      Datenpunkt
      If Poti =< 80 Then
        Portd.3 = 1
      Else
        Portd.3 = 0
      End If
    
      Dim X As Byte
      Dim Y As Byte
       X = Poti / 5
      For Y = 1 To X
      Call Balken
        Next
      Loschen
      Waitms 70
    Loop
    
    Sub Graphic
     Restore Graph
     For Count = 1 To 14
     Read Bar : Printbin Bar;
      Next
    End Sub
    
    Sub Screen
     Restore Scre
     For Count = 1 To 18
     Read Bar : Printbin Bar ;
      Next
    End Sub
    
    Sub Datenpunkt
     Restore Datenp
     For Count = 1 To 5
     Read Bar : Printbin Bar ;
      Next
    End Sub
    
    Sub Balken
    Restore Bar1
     For Count = 1 To 4
     Read Bar : Printbin Bar;
      Next
    End Sub
    
    Sub Loschen
     Restore Los
     For Count = 1 To 3
     Read Bar : Printbin Bar:
      Next
    End Sub

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118
    Hallo Vitis,
    ich noch mal. Das Programm läuft jetzt. Habe die Datenpakete
    mit einer kleinen Zeitverzögerung getrennt.Es wird über RS 232
    ein Terminal angesteuert.Aber jedes Ding hat seinen Preis
    Die Rechenleistung wird jetzt langsamer.Jetzt muss ich mir
    was einfallen lassen, das ein Löschen nur bei Wertänderung
    erfolgt und nicht in jeder Schleife

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    Das die Rechenleistung runter geht ist klar,
    Du hast ja ne Menge Waits verbaut. In dem Befehl
    wartet der µC und macht konkret NIX ausser ner
    Schleife runter zählen. Wenn er aber nebenbei
    noch was Anderes machen soll währs sinnvoll die
    Timer und deren Interrupts zu verwenden
    für verzögerte Anzeigen.

    Das der Wert dann x-mal geschrieben wird ist auch logisch,
    aber genau so hast Du die Funktion ja beschrieben:

    Ist Poti 10 dann Lese und Schreibe Bar1
    Ist Poti 20 dann Lese Und Schreibe 2 mal Bar1
    Ist Poti 30 dann Lese und Schreibe 3 mal Bar1
    Was genau soll Dein Programm denn insgesamt machen ? Was solls am Ende werden?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118
    Hallo Vitis,
    Auf ein Nokia Display wird eine Balkenanzeige Realisiert.
    Mein Code sendet Für jeden Balken eine Ziffernfolge über
    RS 232 an ein Miniterminal, der dann das Display ansteuert.
    Ich wollte einfach Speicher sparen und nicht 10x Balken
    hinterlegen.Sondern bei Poti 10 schreibe 1Balken
    Poti 20 schreibe 2Balken usw.Vorher war das so:Poti 10 schreibe
    Balken1 Poti 20 schreibe Balken2 (10 Balken hinterlegt)
    Der Vorteil der Aktion ist, das ich die RS232 Ausgabe des
    Prozessors nutze und nicht viele Pins für eine Grafikausgabe brauche.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test