hat keiner ne idee ?
Habe ein problem mit meinem Array und der LCD Anzeige.
Ich muss meinen Stromwert zB. 2,455 A in eine Pixelposition umrechnen.
Kann jemand mal über die Dimensionierung der Variablen schauen und die Machbarkeit meiner Berechnung bei Bascom? Mein Taschenrechner machts richtig.
Der Stromwert muss mal 7,5 gerechnet werden um in meinem Diagramm an der richtigen Stelle zu sein. Achja o Ampere ist bei mir bei der Pixelzeile 52. Den Wert habe ich dann mit mal minus 1 wieder positiv gedreht. da mein diagramm ja nicht auf dem kopf stehen soll.
Das Diagramm Fängt bei Pixel 8 an. Deshalb schreibe ich auch erst bei Zeiger 8 in das Array.
Wenn noch nichts in das Array geschrieben worden ist, lese ich dann Nullen aus?
Die Pixel werden leider am oberen Rand des Displays angezeigt und auch nur jedes 2. Das Display oder der Atmega 168 stürzt ab.
Code:Pixelzeiger = 8 'beim programmstart vor do Dim Pixelpuffer(127) As Byte Dim Pixelzeiger As Byte Dim Pixelschreibzeiger As Byte Dim Pixel As Single Dim Pixel1 As byte 'Wird jede sekunde abgefragt '----------------------------------Diagramm Pixelwerte speichern------------ Pixelzeiger = Pixelzeiger + 1 If Pixelzeiger => 127 Then Pixelzeiger = 8 end if Pixel = Strom * 7.5 Pixel = 52 - Pixel 'pixelposition 0 A Pixel = Pixel1 ' single in byte umwandeln Pixelpuffer(pixelzeiger) = Pixel1 End If 'auslesen auf Display For Pixelschreibzeiger = 8 To 127 Pset Pixelschreibzeiger , Pixelpuffer(pixelschreibzeiger) , 1 Next
hat keiner ne idee ?
achtung habe selber noch fehler gefunden.
Programm stürzt jetzt auch nicht mehr ab. Fehler der gleiche.
Habe die Programmteile editiert!
Ich war gerade dabei, dir diese Fehler auch zu sagen.
Übriggeblieben ist der in der Zeile
Pixel = Pixel1 ' single in byte umwandeln
Pixelpuffer(pixelzeiger) = Pixel1 'Müsste das evtl. anders herum sein???????
Pixel1 hast du nirgendwo benutzt oder gesetzt, wird also immer 0 sein.
Dein Programm ist ja sicherlich umfangreicher als nur der Ausschnitt hier.
Denn so für sich wird das sicherlich nicht gehen.
Gruß
Rolf
Du mischt da ein paar datentypen, das mag der Bascom nicht so sehr
Code:DIM pixelstring AS STRING * 4 DIM pixelzahl AS BYTE Pixelstring = Fusing(pixel1 , "#.") ' fusing ergibt einen string Pixelzahl = VAL(Pixelstring) Pixelpuffer(pixelzeiger) = Pixelzahl
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
ah ja.
kann das verkehrt sein ?
Pixel = Pixel1 ' single in byte umwandeln
soll wohl sein
Pixel1 = Pixel
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hi for_ro,
habe mir gerade das Array in Text ausgeben lassen, kommt immer eine null raus. Da hast du recht. Was meinst du mit pixel 1 habe ich niergendwo benutzt oder gesetzt?
Pixel 1 ist nur für die byteumwandlung für das array un dort steht doch pixel1 drin!?
Pixelpuffer(pixelzeiger) = Pixel1
Liegt hier mein denkfehler? es müsste doch so richtig rum geschrieben sein. Ich möchte den wert pixel1 in das array schreiben.
Ich danke dir für deine mühe.
Ja mein Programm ist mittlerweile 13kb groß, da sieht man leicht den Wald vor lauter Bäumen nicht.
DDDDAAAANNNKKKEE
Pixel1 = Pixel war der Fehler.
Ich war gestern bestimmt 13 Stunden am programmieren.
Zuerst wollte ich mit fusing eine ganzzahl bekommen. Das hat mich 4 Stunden gekostet.
Ich bin happy......endlich, wenns nicht weiter geht, dann verliehrt man die Lust
Ich danke euch.
Sorry, mein Kommentar war in die falsche Zeile gerutscht.
Ich meinte: Pixel = Pixel1 andersherum, du willst ja die single in eine Byte quetschen. Ob das so geht musst du mal sehen. Single benutzen bringt dir immer eine Menge Zusatzcode in dein Programm. Und du brauchst das hier nicht wirklich. Du könntest auch mit 15 multiplizieren und dann shiften (durch 2 teilen).
Gruß
Rolf
Du meinst damit ich keine kommastellen benutzen brauch?
Aber mein Amperewert hat kommerstellen. 0,332 A z.B
Funktioniert das trotzdem?
Wie sollte ich dan Pixel dimensionieren?
Lesezeichen