Suchergebnisse

Suchergebnisse 1-20 von insgesamt 1.000. Es gibt noch weitere Suchergebnisse, bitte verfeinern Sie Ihre Suche.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

Hinweis kann nach Kenntnisnahme deaktiviert werden!

  • Wenn man zu viel in eine Sub packt, wird es schnell unübersichtlich. Trenn das auf. Mach eine SetChar-Routine, die nur einzelne Zeichen ausgibt. Diese kann SetPixel zu setzen der Punkte verwenden. Dann mach eine SetText, die die einzelnen Zeichen extrahiert und diese der SetChar-Routine übergibt. So wird das deutlich übersichtlicher für dich.

  • Ja, da gehts dann ans eingemachte. Also vereinfache deinen Code Char ausgeben und String ausgeben, der Char verwendet.

  • Du hast ja jetzt eine Routine um Pixel auszugeben. Du könntest jetzt eine Routine Schreiben, um ein Char auszugeben, welches Panel_SetPixel() verwendet. Das macht die Ausgabe für ein Zeichen einfacher. Für Strings eine andere Routine, die dann die Char-Routine verwendet. Das ist vielleicht nicht der schnellste Weg, Zeichen auf den Screen zu bringen, aber ein übersichtlicher. Effektiver geht es, wenn man die benötigten Adressen Für Screen, Font usw einmal berechnet und nur per Incr oder Addition …

  • Das ist dein Job!

  • Sorry, mein Fehler. So ist es eben, wenn man Code ungetestet raus gibt. Aber dafür hab ich ja dich! Sub Panel_SetPixel(Byval x as Word , Byval y as Word , Byval Color as Byte) Local tmpAddress as Word Local BufferIndex as Word ' Index für Panel_Buffer Local DataByte as Byte Color = Color And &h07 ' nur Color 0 bis 7 zulässig Bei Color muss &h7 stehen.

  • Das müsste ein Blaues Pixel ergeben (b2 muss gesetzt werden) in der unteren Hälfte. Was passiert mit Call Panel_setpixel(10 , 2 , 4) Sollte blaues Pixel obere Hälfte ergeben.

  • Was genau geht nicht?

  • Um nochmal auf die Routine Panel_SetPixel() zurück zu kommen. Hast du jetzt verstanden, wie man die Adresse für den Panel_Buffer berechnet und ein Pixel setzte?

  • Wie lautet deine Constante für COLOR_YELLOW? Welcher Wert? Hier die additive Farbmischung: Link

  • Hast du die Pins rgb1 und rgb2 korrekt angeschlossen? Also r1, g1, b1 nicht untereinander vertauscht? Selbes bei r2, g2, b2? Wenn alles korrekt angeschlossen ist, kannst du die Konstanten für die Farben einfach ändern. Kann sein, dass ich mich da bei den Mischfarben vertan habe. Ich habe ja noch immer kein Display. Ich sehe das also nicht. Welche farben stimmen denn nicht? Beispiel: Call Panel_SetPixel(3,5,COLOR_YELLOW)

  • Hat jetzt etwas gedauert. Musste das jetzt auch erst in Basic coden. Vielleicht ist das jetzt für dich klar. BASCOM-Quellcode (36 Zeilen)

  • Und für was genau brauchst du ein Code-Beispiel? Was verstehst du nicht?

  • Hast es wohl doch noch nicht ganz verstanden? Die Scanline kann nur Werte von 0 bis 15 annehmen. Die Scanline entspricht den Zeilen 0 bis 15 bei einem Modul mit 16 Zeilen. Bei einem Modul mit 32 Zeilen werden 2 solche Panels mit je 16 Zeilen parallel geschaltet. Daraus ergibt sich dann ein Modul mit 32 Zeilen. Die Anschlüsse A bis D der beiden 16-Zeiligen Module werden zusammen geschaltet. Man kann also trotzdem nur 16 Zeilen adressieren. Wenn du eine Scanline ausgibst, wird auch die Scanline in…

  • ja. Das meinte ich damit.

  • Schreibfehler. Gemeint war: Mit Scanline=0 adressierst du also die Zeile 0 und 16, mit Scanline=1 die Zeilen 1 und 17 usw. bis Scanline = 15, mit denen du Zeile 15 und 31 adressierst.

  • Ich denke, jetzt hat es bei dir geklingelt! Mit Scanline kann man ja nur 16 Zeilen adressieren (obere Hälfte). Es sind aber 32 Zeilen. Also hat man das per Hardware einfach dupliziert und die Scannlines zusammen gefasst. Mit Scallline=0 adressierst du also die Zeile 0 und 16, mit Scanline=1 die Zeilen 1 und 17. Bedeutet, dass du für 2 Zeilen gleichzeitig die Farben ausgeben musst. Und da in einem Byte 8 Bit platz haben, und du für eine Farbe 3 Bits brauchst, reichen 6 Bits.

  • Zitat von Raimond Longer: „An error has appeared in the display of points. “ Wo ist da ein Fehler? Farbe 12 in Binär ist Bit-Nr: 543 210 Wert: 001_100 Obere Hälfte 100 = Farbe 4 = Blau Untere Hälfte 001 = Farbe 1 = Rot Genau so ist es gedacht.

  • Zitat von Raimond Longer: „I can get the connection back to PortB.6 “ Ja das ist der OC1B Pin. Du musst den Pin noch als Ausgang konfigurieren. Zusätzlich ein paar Bits in den Timer-Register setzen. Die Timer-Configuration (Config Timer1=PWM, ...) funktioniert in dem Fall nicht. Da müssen ein paar WGM-Bits gesetzt werden.

  • Da du den Timer 1 ja schon verwendest, würde sich für die Helligkeit das PWM mit Ausgang Compare1B anbieten. Das wären dann 800 Hz PWM und zudem Synchron zur Matrix-Ausgabe. Das sollte eigentlich funktionieren. Natürlich lasst sich damit nicht die Helligkeit einzelner Pixel individuell einstellen, sondern nur das gesamte Display heller/dunkler.

  • Ich weiß nicht, wie es andere machen. Meine 1. Idee wäre, den OE auf einen PWM-Pin zu legen. Ich kann es leider nicht ausprobieren. Was ich noch gesehen habe, du hast beim On Compare1a Panel_isr_display NoSave Das NoSave vergessen!