Hi Roboter,
danke dass du den Schaltplan und deinen Code reingestellt hast!!
Ich verstehe Tobi schon dass er seinen Schaltplan nicht reinstellt sonst klaut jemand noch sein Jufo Projekt!!
Gruß Michi
So, hier ist dann mein Plan und mein Programm.
Der Plan passt nicht ganz zu dem Programm. Das liegt daran, das ich meine Schaltung im Moment noch auf nem Steckbrett habe und noch nicht geätzt habe.
Wer aber das Programm mit dem Schaltplan nutzen will, muß nur die Pins des A/D-Wandlers und die Pins der Cam anpassen. Sonst passt alles.
Code:'Gameboy Kamera $regfile = "m8515.dat" 'ATmega8515-Deklarationen $crystal = 4000000 'Quarz: 4 MHz $baud = 9600 Declare Sub Register_laden(addr As Byte , Wert As Byte) Dim Regwert(8) As Byte Dim Regaddr(8) As Byte Dim I As Byte Dim Bild(16384) As Xram Byte Dim Z As Word 'Register festlegen: Regaddr(1) = 1 Regaddr(2) = 2 Regaddr(3) = 3 Regaddr(4) = 4 Regaddr(5) = 5 Regaddr(6) = 6 Regaddr(7) = 7 Regaddr(8) = 0 Regwert(1) = 0 Regwert(2) = 0 Regwert(3) = 15 Regwert(4) = 0 Regwert(5) = 0 Regwert(6) = 0 Regwert(7) = 7 Regwert(8) = 0 Main: 'C1 und C0 laden: I = 0 Do If Ucsra.rxc = 1 Then Regwert(2) = Udr I = 255 End If Loop Until I <> 0 I = 0 Do If Ucsra.rxc = 1 Then Regwert(3) = Udr I = 255 End If Loop Until I <> 0 Wait 5 Config Scl = Portb.2 Config Sda = Portb.3 'A/D-Wandler einstellen: I2cinit I2cstart I2cwbyte &B10010000 I2cwbyte &B00000000 I2cstop Config Portb.0 = Output 'XCK Config Portb.1 = Output 'Reset Config Portb.4 = Output 'Sin Config Portd.3 = Input 'read Config Portd.4 = Output 'Load Config Portd.5 = Output 'Start Config Portd.2 = Output Portd.2 = 1 Xckpin Alias Portb.0 Resetpin Alias Portb.1 Sinpin Alias Portb.4 Loadpin Alias Portd.4 Startpin Alias Portd.5 Readpin Alias Pind.3 Resetpin = 1 'Reset High Xckpin = 1 'XCK High Loadpin = 0 'Load Low Startpin = 0 'Start Low 'Reset: Waitus 5 Xckpin = 0 Waitus 2 Resetpin = 0 Waitus 3 Xckpin = 1 Waitus 2 Resetpin = 1 Waitus 3 Xckpin = 0 Waitus 2 'Register Laden Call Register_laden(regaddr(1) , Regwert(1)) Call Register_laden(regaddr(2) , Regwert(2)) Call Register_laden(regaddr(3) , Regwert(3)) Call Register_laden(regaddr(4) , Regwert(4)) Call Register_laden(regaddr(5) , Regwert(5)) Call Register_laden(regaddr(6) , Regwert(6)) Call Register_laden(regaddr(7) , Regwert(7)) Call Register_laden(regaddr(8) , Regwert(8)) 'Start: Startpin = 1 Waitus 3 Xckpin = 1 Waitus 2 Startpin = 0 Waitus 3 Xckpin = 0 Waitus 4 'Warten Bis Bild Fertig: While Readpin = 0 Xckpin = 1 Waitus 4 Xckpin = 0 Waitus 4 Wend Z = 0 I2cstart I2cwbyte &B10010001 I2crbyte I , 8 While Readpin = 1 Xckpin = 1 Waitus 1 Incr Z I2crbyte I , 8 Bild(z) = I Xckpin = 0 Waitus 1 Wend I2crbyte I , 9 Incr Z Bild(z) = I I2cstop Portd.2 = 0 For Z = 1 To 16384 Printbin Bild(z); Next I = 0 Portd.2 = 1 Do If Ucsra.rxc = 1 Then I = Udr End If Loop Until I = 1 Goto Main Do Loop End 'end program Sub Register_laden(addr As Byte , Wert As Byte) 'Registeraddr übertragen: For I = 2 To 0 Step -1 Sinpin = Addr.i Waitus 3 Xckpin = 1 Waitus 5 Xckpin = 0 Waitus 2 Next 'Registerwert übertragen: For I = 7 To 0 Step -1 Sinpin = Wert.i Waitus 3 Xckpin = 1 Waitus 2 If I = 0 Then Loadpin = 1 End If Waitus 3 Xckpin = 0 Waitus 2 Loadpin = 0 Next Sinpin = 0 End Sub
Hi Roboter,
danke dass du den Schaltplan und deinen Code reingestellt hast!!
Ich verstehe Tobi schon dass er seinen Schaltplan nicht reinstellt sonst klaut jemand noch sein Jufo Projekt!!
Gruß Michi
hallo, meine bilder von der gameboycam sind noch nicht verwerdbar für den robby für die selbstständige reaktion. habe aber trotzdem eine v0-messung durch geführt für bestimmte anzufahrende flächen. der AVR ist zu langsam für die auswertung. die helligkeitswertenkontrolle für ein vernünftiges bild ist zu krass, man kann garnictt so schnell reagieren, wie sich die kontrastwerte der game-cam ändern, es müssen dauernd neue messregeln reingeschmissen werden. ich habe noch kein bild zur kontrolle, abe die messwerte schwanken wie verrückt . als alternative könnte die c-controlII in frage kommen, die ist aber zu teuer mit dem weiteren zubehör, der robby hat zuviel pause. eine weitere möglich wäre einen teil-pc auf dem robby zu setzen ist nicht so teuer.
ein pda zur auswertung schlägt immerhin mit mindestens 250 euro zu buche. also bleibt die gameboy-cam nur als anschauungsobjekt für bilder zur verfügung.
da ich mich damit nicht zu frieden gab, habe ich mir die cmucam 2 angeschafft.
ich spare eine weitere platine, einen pc auf dem robby oder einen pda.
habe eine farbliche visuelle kontrolle auf dem pc im visualbasic-fenster (life)..
die cam hat einen festwertspeicher für die abgelegten bilder, die einmal die cam bearbeiten kann zur objektkontrolle (robby bekommt ein signal, wenn ein bestimmter farbwert erkannt wird, bzw in das bild hineinkommt und aus dem bild verschwindet), man weiss denn genau aus welcher richtung der farbpunkt kommt und der robby kann nach diesem signal links rechts vorwärts oder rückwärts fahren. weiterhin kann ich aus neugierde dann auch die bilddaten als digitale werte über die serielle schnittstelle übertragen zum visual-basic-programm. die experiemente mit der cmucam 2 sind erste sahne, freu..freu. ich kann mich jetzt auf die experiementielle auswertung konzentrieren im zusammenhang mit der robbysteuerung.
das ansprechen der camera mit visualbasic ist wunderbar, obwohl eine visuelle steuerung in java dabei ist, die auch auf anhieb lief und ich sogar die java-programme selber ändern kann und neu compilieren für die eigenen bedürfnisse. werde aber trotzdem auf dem visualbasic-trip bleiben, weil es darauf wunderbar geht.
werde aber weiterhin die experiemente der gameboy-cam weitermachen.
schwerpunkt ist jetzt aber die cmucam2 im zusammenhang mit dem robby.
mfg pebisoft
HI!
@roboter:
Kannst du mal ein Bild posten? Hast du Staub auf der Linse?
@Michi:
Hast Recht! Genau deshalb!
@pebisoft:
Naja, die Sache mit der Belichtung Kontrast usw. ist schon schwer, habe da aber eine tolle Idee... (wg. JuFo kann ich die euch leider auch erst in nem 3/4 Jahr verzapfen...)
We'll see...
Habe vor, das gesamte JuFo Projekt nach JuFo auf meine Homepage zu stellen.
VLG Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Haben wir da vielleicht dir gleiche Idee?Zitat von tobimc
Hi roboter!
Hm... kommt drauf an. Hat deine Idee mit speziellen Siliziummischungen zu tun?
VLG Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
hallo tobi, zeig mir mal wie die cam funktioniert mit direktübertragung ohne ram für die 16k. würde mich freuen.
mfg pebisoft
ps: die gamecam wird knapp!!!!. bei Ebay gib es noch eine für 9,99 sofortkauf.
hast du die genehmigung, die ganzen jufo-projekte zu veröffentlichen.
ich vermute, das auch einige firmen an der sache zum kauf interessiert sind.
viele firmen schicken ihre adju als interessenten und kupfern das konzept, ohne das du es sofort merken tust. erst nach einer gewissen zeit sieht du auf dem markt Projekte , wo du dann sagt:" die kenn ich doch, das habe ich auch gemacht". teilweise sind die leute, die die auswertung betreiben auch bei bestimmten firmen ansässig.
Ich versuche gerade eine GB-Cam mit einer C-Control auszulesen. Dies sollte teoretisch kein Problem sein da die Cam keinen wirklichen mindesttakt hat. Jedoch scheitere ich schon am read signal. Das signal geht sechs täkte nach reset wieder auf HI.
Das CCBasic Programm:
Das ProblehmCode:define start port[16] define sin port[15] define load port[14] define rst port[13] define xck port[12] define reade port[11] define pixel ad[1] define addr byte define wert byte define x byte #reset rst = 0 xck = 0 rst = 0 xck = 1 rst = 1 xck = 0 #Register addr = 0 wert = 0 gosub reg_write addr = 1 wert = 0 gosub reg_write addr = 2 wert = 15 gosub reg_write addr = 3 wert = 0 gosub reg_write addr = 4 wert = 0 gosub reg_write addr = 5 wert = 0 gosub reg_write addr = 6 wert = 7 gosub reg_write addr = 7 wert = 0 gosub reg_write goto start #reg_write 'send addr' sin = &H30 - ((addr AND &H04)<>0) xck = 1 xck = 0 sin = &H30 - ((addr AND &H02)<>0) xck = 1 xck = 0 sin = &H30 - ((addr AND &H01)<>0) xck = 1 xck = 0 'send wert' sin = &H30 - ((wert AND &H80)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H40)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H20)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H10)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H08)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H04)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H02)<>0) xck = 1 xck = 0 sin = &H30 - ((wert AND &H01)<>0) xck = 1 load = 1 xck = 0 load = 0 return #start start = 1 xck = 1 start = 0 xck = 0 #wait xck = 1 if reade = -1 then goto scan xck = 0 goto wait #scan xck = 1 print pixel xck = 0 if reade = 0 then end goto scan
Code:define start port[16] define sin port[15] define load port[14] define rst port[13] define xck port[12] define reade port[11] define pixel ad[1] define addr byte define wert byte define x byte #reset rst = 0 xck = 0 rst = 0 xck = 1 rst = 1 xck = 0 'read geht low wenn er nicht von anfang an low war' pause 100 'pause um zu messen xck = 1 xck = 0 xck = 1 xck = 0 xck = 1 'read geht HI' xck = 0 pause 1000 'noch eine pause um zu messen
hallo, z80 es geht nur mit der control-II nicht mit der c-control I.
das basic in der c-control I ist zu langsam. die c-control II wird in c-ähnlichen-code geproggt und die v0 reicht da aus, natürlich ist der interne adc auch da wieder zu langsam.
mfg pebisoft
Hi!
Klar, kann ich machen, muss nur etwas Zeit haben... (morgen Französisch Klassenarbeit... )Zitat von pebisoft
Wie meinst du das?Zitat von pebisoft
Tjaja... C'est la vie. Da kann man nix machen.viele firmen schicken ihre adju als interessenten und kupfern das konzept, ohne das du es sofort merken tust.
Aber daran kann man gut sehen, warum ich das so geheim halte...
@Z80:
Leider kenne ich mich mit der CControl nicht so aus...
Aber wie meinst du das nach Reset auf high?
Viele liebe Grüße,
Tobi
http://www.tobias-schlegel.de
"An AVR can solve (almost) every problem" - ts
Lesezeichen