www.mikrocontroller.net

Forum: PC-Programmierung VB 6.0 und Atmel


Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich brauche mal euere Hilfe!

Ich habe eine Picture Box, in der ich mehrere Kreise und Linien
gezeichnet habe.

http://www.tobytetzi.de/NightVision.JPG

Nun will ich per Mausklick auf die einzelnen Felder die Farbe des
Feldes ändern.

Es sind insgesamt 32x256 Einzelfelder, je 1 Bit.

Die Felder entsprechen 32 Leds, die sich drehen, und in 256 Schritten
pro Umdrehung aufgeteilt sind.

Die Daten des "Bildes" will ich in einem Array 32x256 speichern, und
über einen MC in einem EEProm speichern.

Ich habe ebenso geplant, ein Bitmap in die PictureBox zu laden.
Die Felder meiner Zeichnung sollen dann automatisch die Farbe ändern( 1
Bit Farbtiefe).

http://www.tobytetzi.de/NightVision1.JPG

Kann mir jemand sagen, wie ich das bewerkstelligen kann?

Freue mich über jede Hilfe.

Gruß Toby

Autor: David Herrmann (avrbot)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
für das Füllen der Felder auf Mausklick habe ich den Dateianhang. Es
gibt eine API-Funktion ExtFloodFill, mit der man dies leicht
realisieren kann. Zur zweiten Sache, wie man diese Informationen in ein
Array speichert, habe ich im Moment noch keine Antwort. Vielleicht finde
ich noch eine :-).
Mit dem Bild laden und automatisch in die Felder schreiben könnte man
auch mit ExtFloodFill machen. Man müsste halt eine For-Schleife von 0
bis zur Bildhöhe des geladenen Bildes zählen, mit dem Schritt Bildhöhe
geteilt durch die Anzahl der Felder in der Höhe (also 32 Felder mal 2).


Ab Feld 32 muss man dann den Durchmesser des weißen Kreises in der
Mitte dazuzählen. In der For-Schleife prüft man dann mit GetPixel, ob
das Feld Schwarz ist. Wenn dies so ist, dann muss man halt ExtFloodFill
an der Position einsetzen, bei der die Schleife gerade ist.

So, jetzt hab ich noch einen Link zum Beispiel ExtFloodFill:
http://www.activevb.de/tipps/vb6tipps/tipp0170.html

Ich hoffe, dass ich dir ein bisschen helfen konnte. Wie schon gesagt,
schaue ich mal, ob ich zu Punkt 2 noch etwas finde.

Grüße
David

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo David,

ich bin bereits bei der GetPixel methode angekommen.
Wenn ich etwas mehr fertig bekommen habe, melde ich mich nochmal.

Danke Dir, für die Infos!!!!

Gruß Toby

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
ich hätte jetzt eine Lösung für das automatische Eintragen in ein
Array. Bist Du noch daran interessiert, oder hast du schon eine Lösung
gefunden ?
Dann noch eine Frage: Wie hast du denn die Linien und Kreise ins
Bildfeld bekommen ? Über ein Bild, Shapes mit der Circle-Methode oder
etwas anderem ? Das würde mich interessieren.

Grüße
David

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo David,

anliegend meine jetzige "Test-Version", mit weitaus weniger Spalten
und Zeilen.
Allerdings will ich nicht erst das Array beschreiben,so wie im ZIP dir
"Test-Button",
sondern Bits per Maus setzen, die sollen dann ins Array.
Sagen wir mal, oben, 12 Uhr ist 0, dann im Urzeigersinn weiter.

Klar bin ich noch dran interessiert!

Schau Die das mal an:

http://www.ladyada.net/make/spokepov/software.html

Ich bin grade dabei, genau so etwas in SMD aufzubauen.
Allerdings mit nem ATmega8, MMC/SD/TransFlash Karte, Schieberegistern
mit intregierten LED Treibern,
32 PLCC2 LEDs auf einer Seite.

Spätere Version evtl. in RGB.

Die Software will ich mit VB 6.0 schreiben, habe zwar Python, aber
kenne mich garnicht damit aus.
Außerdem will ich ja nichts Kopieren, sondern anders machen!

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, David,

eins fällt mir noch ein:

Man kann das "Spinnennetz" per Mausklick färben!
Ebenso die Mitte und den Bereich außen rum.

Das darf natürlich auch nicht sein!

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal,

ich hatte noch eine Variante, bei der man die Schwarzen Linien nicht
mehr färben kann,
leider noch immer die Mitte und das Drumherrum!

Ebenso kann man sich den Array Inhalt anzeigen lassen
und mit Bild löschen wieder zurück setzen.

Gruß Toby

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
das Programm sieht ja schon mal ganz gut aus. Jetzt ist es aber schon
spät und ich kann das mit dem Array nicht mehr posten. Morgen
(wahrscheinlich) kann ich die Funktionsweise meiner Idee dann mal
erklären.
Ich habe auch schon ein Programm dazu geschrieben, bei dem man
einstellen kann welche Größe das Array hat und welche Maße der Kreis
und der Innenkreis hat und wie weit der Kreis vom Rand entfernt ist.
Allerdings liegt der Nullpunkt bei mir noch bei 3 Uhr und das ganze
läuft gegen den Uhrzeigersinn (mathematisch positiv).
So, jetzt mach ich Schluss für heute und hoffe, dass ich Dir morgen
weiterhelfen kann. Wahrscheinlich schreibe ich dann eine Word-Datei mit
Erklärung, weil ich das Ganze hier nicht schreiben und zeichnen kann.

Grüße
David

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich schon wieder,

habe jetzt hin bekommen, das ich weiße Felder rot,
und weiße Felder rot färben kann.

Der Hintergrund ist grau, und auch für das Füllen gesperrt.

Nun muß ich nur noch die roten Felder ins Array bekommen!

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo David,

ich würde ja auch gern die Narbengröße, LED Anzahl, Spalten als
Variablen machen.
Aber erst muß ich dazu die Einfachste Art kennen lernen.

Und das hat ja schon fast hin gehauen.

Übrigens, so schön sieht das Prog ja nicht aus, schön kommt später!

Gruß Toby

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
jetzt bin ich mit dem Beispiel fertig. Man kann die Arraygröße
bestimmen (Höhe und Breite, also die Anzahl der LEDs und die Schritte
pro Umdrehung), den Innenkreisradius und den Außenkreisradius. Außerdem
kann man bestimmen, wie weit der Kreis vom linken und oberen Rand
entfernt ist.
Wie soll ich das jetzt machen ? Soll ich ein Word-Dokument schreiben,
das Programm einfach posten oder das Programm kommentieren ?
Was meinst Du mit Narbengröße ? Den Abstand zwischen zwei "Schritten"
?
Ich kann auch das Programm jetzt einfach so posten und dann noch ein
Word-Dokument schreiben. Sag einfach, wie es Dir am Liebsten ist.
Gruß David

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
mir ist gerade eingefallen, das ich ja selber dein Programm umschreiben
könnte (zumindest versuchen :-). Ich fang mal damit an.
Grüße David

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
ich bin es noch einmal. Wegen "zeitkritischer Anwendung" bei der
Refresh-Methode: sehr richtig, lässt sich aber einfach lösen. Wenn Du
bisher in der Schleife immer die fillCell-Funktion aufrufst, wird
jedesmal das Refresh aufgerufen. Das braucht man aber nicht. Ich hab
das Programm jetzt so geändert, das es das Refresh erst nach der
Schleife, also nur ein Mal aufruft. Jetzt sieht man überhaupt nicht
mehr, wie die Zellen einzeln gezeichnet werden, sondern es sind alle
auf einmal rot !
Außerdem denke ich, das die fillCell_xxx- Prozeduren zusammengefasst
werden können, dann muss man einfach noch die Farbe übergeben.
Ich werds mal probieren.
Grüße
David

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo David,

mit Narbe meinte ich den Innenkreis.

Am besten, du schickst mir mal ein zip des Progs per Mail.

Das Array angepasst?! Cool, wusste nicht, wie das gehen soll!

Hört sich alles sehr gut an!!!! Her damit ! ;-)

Danke für deine Hilfe!

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, habe übrigens auch noch etwas geändert!

Ich bin grade dabei, für 32 LEDs 4 Arrays à 8 Bit x Spalten zu machen.
Das ist für die Schieberegister besser.

Dann könnte man den aüßeren Ring z.B. drehen lassen.

Bin auf dein Prog gespannt!

Gruß Toby

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal,

hier habe ich das Programm etwas eingekürzt.

Funktion Draw_Modell z.B.

Ebenso habe ich Variablen für LEDs, Spalten,...

Nur kann ich bis lang die Array Größe nicht mit Variablen erstellen.

Gruß Toby

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Toby,
ich schicke Dir gleich das Programm. Außerdem bin ich schon an Deinem
Programm, um es zu verändern. Kannst Du dein NightVision_Test2 noch
einmal hochladen ? Ich sehe es nur als *.rar-Datei. Dann würde ich
nämlich statt dem alten Programm das neuere verändern.

Gruß David

Autor: David Herrmann (avrbot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
nur mal für alle:
Toby und ich benutzen nur noch Mail. Das Programm kann jetzt schon 
Farbbilder importieren, Text schreiben, alles in einem Array speichern 
(48 LEDs, 512 Schritte pro Umdrehung).

Grüße David

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.