Seite 1 von 1

PureBasic und Formula Flowcode Buggy Teil 1

Verfasst: 03.10.2007 23:44
von mpz
Hallo Leute,
wie schon "angedroht" :twisted: habe ich mir den Formula Flowcode Buggy bei Elektor gekauft. Dieser besitzt eine USB Schnittstelle und ist auch per USB programmierbar. Ich habe jetzt das Gerät als I/O Erweiterung für den PC zweckentfremdet. Benötigt wird nur noch eine weitere DLL Datei (mcHID.dll). Der Formula Flowcode Buggy bietet schon viele Erweiterungen an:

2x digitale Eingänge (Taster)
8x Port Erweiterung als Ausgang und Eingang nutzbar (E-Blocks kompatibel)
1x LDR mit AD Wandlung von 10 bit
1x MIC mit AD Wandlung von 10 bit
3 x IR Sensoren
1 x Motorsteuerung mit zwei Motoren
2 x Servosteuerungen
1 x V24 Schnittstelle
1 x IC2 Bus

Je nach Zeit werde ich mich um die eine oder andere Funktion "kümmern". Hier jetzt das erste Projekt

Habt Spaß :allright:
Michael

Code: Alles auswählen

; "MPZ Buggy IO INTERFACE.pb"
; 
; PowerBasic Example um ein Formel Flowcode Buggy von www.matrixmultimedia.com als 
; I/O Interface anzusteuern. Das Gerät wird auch von Elektor vertrieben 
; Der PIC 18F4455 besitzt unter anderem 35x I/O´s und 13x 10bit AD´s
; Dieses Programm wird erweitert und erlaubt derzeit:
;                                         2x digitale Eingänge (Taster)
;                                         8x digitalen Ausgängen  
;                                         1x LDR mit AD Wandlung von 10 bit
;                                         1x MIC mit AD Wandlung von 10 bit
;
;
; PowerBasic Example to use a PIC Formel Flowcode Buggy from www.matrixmultimedia.com as 
; I/O interface anzusteuern. 
; The PIC 18F4455 has 35x I/O´s and 13x 10bit AD´s
; This Program will updated and has now:
;                          2x digital Inputs 
;                          8x digital Outputs  
;                          1x LDR input with 10 bit resulution
;                          1x MIC input with 10 bit resulution
;
;  
; Version 1.00 by MPZ Okt.2007
; for PB 4.10 beta3
; 
; benötigt wird die mcHID.dll von der Firma Mecanique. Die mcHID Library ist 
; Bestandteil der EasyHID Software:
; You need the mcHID.dll from the company Mecanique. The mcHID Library is included
; in the EasyHID Software:
; http://www.mecanique.co.uk/software/EasyHID.zip 
;
; Ein direkter Download der DLL ist über den folgenden Link möglich
; Direct download link 
; http://www.docpro.com.br/arquivos/mcHID.zip
;
; Definierte Übergabeparameter
;
;  Wert
;  1  2  3  4  5  6  7  8
;  a  b  c  d  e  f  g  h

;  Daten PIC -> PC
;  a = 1    Daten PIC -> PC
;  b,c      AD8(x*256+y) ; MIC - AD Wandlung (10 bit, ADC 8)
;  d,e      AD9(x*256+y) ; LDR - AD Wandlung (10 bit, ADC 9)
;  f        Taster 1 (Bit 1 of f) / Taster 2 (Bit 2 of f)
;  in Vorbereitung
;  g,h      I2C Bus (a,b); Empfangen von I2C Bus Daten

;  Daten PC -> PIC
;  a = 13   PC -> PIC
;  b        8 fach Output 
;  in Vorbereitung
;  c        Servo 1 out(x) ; Einstellwert des Servos in 0-100%
;  d        Servo 2 out(x) ; Einstellwert des Servos in 0-100%
;  e        Motor links (x) ; Geschwindigkeit in -100% bis +100%
;  f        Motor rechts (x) ; Geschwindigkeit in -100% bis +100%
;  g,h      I2C Bus (a,b); Senden von I2C Bus Daten
 
 
Enumeration
  #Window_0
  #Text_Status
  #Text_DIGI_IN
  #Listview_INPUT
  #Text_LDR
  #Analog_LDR
  #Text_MIC
  #Analog_MIC
  #Text_OUT
  #Button_OUT1
  #Button_OUT2
  #Button_OUT3
  #Button_OUT4
  #Button_OUT5
  #Button_OUT6
  #Button_OUT7
  #Button_OUT8
EndEnumeration


; Global

;{/ Globale Variablen
Global pVendorID.l, pProductID.l, DeviceHandle.l, ProductName.s
Global USB_HID.l,DIGITAL_OUT.b, Button_1.b, Button_2.b
Global Dim BufferIn.b(8),Dim BufferOut.b(8)

#WM_APP = 32768
#WM_HID_EVENT = #WM_APP + 200
#NOTIFY_PLUGGED = 1
#NOTIFY_UNPLUGGED = 2
#NOTIFY_CHANGED = 3
#NOTIFY_READ = 4

#VendorID = 6017    ; Vendor ID "MPZ USB BUGGY"
#ProductID = 2001   ; ProductID "MPZ USB BUGGY"

ProductName.s = Space(256) 

;}

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 310, 185, 391, 272, "MPZ USB BUGGY Interface",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered )
    If CreateGadgetList(WindowID(#Window_0))
      TextGadget(#Text_Status, 135, 10, 120, 20, "No Device", #PB_Text_Center | #PB_Text_Border)
      TextGadget(#Text_DIGI_IN, 30, 40, 330, 12, "DIGITAL IN 1 - IN 2 / TIME", #PB_Text_Center)
      ListViewGadget(#Listview_INPUT, 30, 56, 330, 50)
      TextGadget(#Text_LDR, 30, 110, 330, 12, "LDR INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_LDR, 30, 130, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_MIC, 30, 153, 330, 12, "MIC INPUT", #PB_Text_Center)
      ProgressBarGadget(#Analog_MIC, 30, 170, 330, 20, 0, 1024, #PB_ProgressBar_Smooth)
      TextGadget(#Text_OUT, 20, 200, 350, 20, "DIGITAL OUT 1 - OUT8", #PB_Text_Center)
      ButtonGadget(#Button_OUT1, 20, 220, 40, 30, "OUT 1", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT2, 65, 220, 40, 30, "OUT 2", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT3, 110, 220, 40, 30, "OUT 3", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT4, 155, 220, 40, 30, "OUT 4", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT5, 200, 220, 40, 30, "OUT 5", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT6, 245, 220, 40, 30, "OUT 6", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT7, 290, 220, 40, 30, "OUT 7", #PB_Button_Default | #PB_Button_Toggle)
      ButtonGadget(#Button_OUT8, 335, 220, 40, 30, "OUT 8", #PB_Button_Default | #PB_Button_Toggle)
     EndIf
     ProcedureReturn 1
  EndIf
EndProcedure

;{/ DLL LIB

Prototype  hidConnect (pHostWin.l); As Boolean
Prototype  hidDisconnect (); As Boolean
Prototype  hidRead (pHandle.l, pData.b); As Boolean
Prototype  hidWrite (pHandle.l, pData.b); As Boolean
Prototype  hidReadEx (pVendorID.l, pProductID.l, pData.b); As Boolean
Prototype  hidWriteEx (pVendorID.l, pProductID.l, ByRef.b); As Boolean
Prototype  hidGetVendorName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetProductName (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetSerialNumber (pHandle.l, pText.s, pLen.l); As Long
Prototype  hidGetVendorID (pHandle.l); As Long
Prototype  hidGetProductID (pHandle.l); As Long
Prototype  hidGetVersion (pHandle.l); As Long
Prototype  hidGetInputReportLength (pHandle.l); As Long
Prototype  hidGetOutputReportLength (pHandle.l); As Long
Prototype  hidGetHandle (pVendoID.l, pProductID.l); As Long
Prototype  hidGetItem (pIndex.l); As Long
Prototype  hidGetItemCount (); As Long
Prototype  hidSetReadNotify (pHandle.l, pValue.b);
Prototype  hidIsReadNotifyEnabled (pHandle.l); As Boolean
Prototype  hidIsAvailable (pVendorID.l, pProductID.l);  As Boolean


Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll") 

If mcHID_DLL 
    Global hidConnect.hidConnect = GetFunction(mcHID_dll,"Connect") ; (ByVal pHostWin As Long) As Boolean
    Global hidDisconnect.hidDisconnect = GetFunction(mcHID_dll,"Disconnect");  () As Boolean
    Global hidRead.hidRead = GetFunction(mcHID_dll,"Read");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidWrite.hidWrite = GetFunction(mcHID_dll,"Write");  (ByVal pHandle As Long, ByRef pData As Byte) As Boolean
    Global hidReadEx.hidReadEx = GetFunction(mcHID_dll,"ReadEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidWriteEx.hidWriteEx = GetFunction(mcHID_dll,"WriteEx");  (ByVal pVendorID As Long, ByVal pProductID As Long, ByRef pData As Byte) As Boolean
    Global hidGetVendorName.hidGetVendorName = GetFunction(mcHID_dll,"GetVendorName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetProductName.hidGetProductName = GetFunction(mcHID_dll,"GetProductName");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetSerialNumber.hidGetSerialNumber = GetFunction(mcHID_dll,"GetSerialNumber");  (ByVal pHandle As Long, ByVal pText As String, ByVal pLen As Long) As Long
    Global hidGetVendorID.hidGetVendorID = GetFunction(mcHID_dll,"GetVendorID");  (ByVal pHandle As Long) As Long
    Global hidGetProductid.hidGetProductid = GetFunction(mcHID_dll,"GetProductID");  (ByVal pHandle As Long) As Long
    Global hidGetVersion.hidGetVersion = GetFunction(mcHID_dll,"GetVersion"); (ByVal pHandle As Long) As Long
    Global hidGetInputReportLength.hidGetInputReportLength = GetFunction(mcHID_dll,"GetInputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetOutputReportLength.hidGetOutputReportLength = GetFunction(mcHID_dll,"GetOutputReportLength");  (ByVal pHandle As Long) As Long
    Global hidGetHandle.hidGetHandle = GetFunction(mcHID_dll,"GetHandle");  (ByVal pVendoID As Long, ByVal pProductID As Long) As Long
    Global hidGetItem.hidGetItem = GetFunction(mcHID_dll,"GetItem");  (ByVal pIndex As Long) As Long
    Global hidGetItemCount.hidGetItemCount = GetFunction(mcHID_dll,"GetItemCount");  (ByVal pIndex As Long) As Long
    Global hidSetReadNotify.hidSetReadNotify = GetFunction(mcHID_dll,"SetReadNotify"); ByVal pHandle As Long, ByVal pValue As Boolean)
    Global hidIsReadNotifyEnabled.hidIsReadNotifyEnabled = GetFunction(mcHID_dll,"IsReadNotifyEnabled");  (ByVal pHandle As Long) As Boolean
    Global hidIsAvailable.hidIsAvailable = GetFunction(mcHID_dll,"IsAvailable"); (ByVal pVendorID As Long, ByVal pProductID As Long) As Boolean
Else
    MessageRequester("Fehlermeldung", "Das Programm konnte die mcHID.dll Datei nicht öffnen", #PB_MessageRequester_Ok)
    End
EndIf 
;}

ProcedureDLL mcHID_Free(); DLL FREE
  If mcHID_DLL
    CloseLibrary(#PB_Any)
  EndIf
  XLTable_DLL = 0
EndProcedure

;- Window Callback 
Procedure WinProc(hWnd,Msg,wParam,lParam) 
 result = #PB_ProcessPureBasicEvents 
 
 If Msg = #WM_HID_EVENT 
       
       Select wParam
           ; HID device has been plugged message...
        Case #NOTIFY_PLUGGED
           ;HID device has been plugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If DeviceHandle
              hidGetProductName (DeviceHandle.l,ProductName,256) 
              SetGadgetText(#Text_Status, ProductName)   

              ; Reset für PIC eingefügt
              BufferOut(0) = 0
              BufferOut(1) = 1
              hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 
            
           EndIf
        Case #NOTIFY_UNPLUGGED
           ;HID device has unplugged
           DeviceHandle = hidGetHandle(#VendorID, #ProductID)
           If Not DeviceHandle
              SetGadgetText(#Text_Status, "No Device")
           EndIf
        Case #NOTIFY_CHANGED
           ;HID device has been changed
           If DeviceHandle 
              hidSetReadNotify (DeviceHandle, #True) ;read event...
           EndIf
          ;DeviceHandle = hidGetHandle(#VendorID, #ProductID)
          ;hidSetReadNotify (DeviceHandle, #True) ! IMPORTANT ! Read works only With this flag
        Case #NOTIFY_READ
           ; READ works only if the hidSetReadNotify flag is set 
           If hidRead(DeviceHandle, @BufferIn(0))
              ;AddGadgetItem(#Listview_INPUT,0, "Read: "+Str(BufferIn(0)) +"/"+ Str(BufferIn(1))+"/"+Str(BufferIn(2))+"/"+Str(BufferIn(3))+"/"+Str(BufferIn(4))+"/"+Str(BufferIn(5))+"/"+Str(BufferIn(6))+"/"+Str(BufferIn(7))+"/"+Str(BufferIn(8)))

              If BufferIn(1) = 1 ; Taster 1
                 If BufferIn(6) & %01 = 1   
                    If Button_1 = 0 
                        AddGadgetItem(#Listview_INPUT,0, "Button 1 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_1 = 1
                    EndIf
                 Else
                    Button_1 = 0     
                 EndIf                    
                 If BufferIn(6) & %10 = 2 ; Taster 2
                    If Button_2 = 0 
                       AddGadgetItem(#Listview_INPUT,0, "Button 2 at "+FormatDate("%hh:%ii:%ss", Date()))             
                       Button_2 = 1
                    EndIf
                 Else
                    Button_2 = 0     
                 EndIf
                  
                 AD_Wert = BufferIn(2)*256 ; LDR IN
                 If BufferIn(3) > 0 
                    AD_Wert = AD_Wert + BufferIn(3)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(3)
                 EndIf
                 SetGadgetState   (#Analog_LDR,1024-AD_Wert)
                 AD_Wert = BufferIn(4)*256 ; MIC IN
                 If BufferIn(5) > 0 
                    AD_Wert = AD_Wert + BufferIn(5)
                 Else
                    AD_Wert = AD_Wert + 256 + BufferIn(5)
                 EndIf
                 SetGadgetState   (#Analog_MIC,AD_Wert)
              EndIf  
           Else 
              AddGadgetItem(#Listview_INPUT,0, "Read Error!")
           EndIf
        EndSelect
   
   EndIf

  
  ProcedureReturn result 
EndProcedure 

;{ Mainunit
If Open_Window_0()

hidconnect (WindowID(#Window_0))
SetWindowCallback(@WinProc())

  BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
  BufferOut(2) = 0
  hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 

  Repeat
    EventID = WaitWindowEvent()

    Select EventID
  
    Case #PB_Event_Gadget
  
      Select EventGadget()
          
      Case #Button_OUT1 ; Erweiterungsport Bit 1
          If GetGadgetState(#Button_OUT1)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000001
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111110
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out 

      Case #Button_OUT2 ; Erweiterungsport Bit 2
          If GetGadgetState(#Button_OUT2)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000010
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111101
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT3 ; Erweiterungsport Bit 3
          If GetGadgetState(#Button_OUT3)
             DIGITAL_OUTD = DIGITAL_OUTD | %00000100
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11111011
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT4 ; Erweiterungsport Bit 4
          If GetGadgetState(#Button_OUT4)
             DIGITAL_OUTD = DIGITAL_OUTD | %00001000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11110111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Send Out

      Case #Button_OUT5 ; Erweiterungsport Bit 5
          If GetGadgetState(#Button_OUT5)
             DIGITAL_OUTD = DIGITAL_OUTD | %00010000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11101111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät

      Case #Button_OUT6 ; Erweiterungsport Bit 6
          If GetGadgetState(#Button_OUT6)
             DIGITAL_OUTD = DIGITAL_OUTD | %00100000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %11011111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT7 ; Erweiterungsport Bit 7
          If GetGadgetState(#Button_OUT7)
             DIGITAL_OUTD = DIGITAL_OUTD | %01000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %10111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
      Case #Button_OUT8 ; Erweiterungsport Bit 8
          If GetGadgetState(#Button_OUT8)
             DIGITAL_OUTD = DIGITAL_OUTD | %10000000
          Else
             DIGITAL_OUTD = DIGITAL_OUTD & %01111111
          EndIf
          BufferOut(0) = 0
          BufferOut(1) = 13 ; Out PortD,(x) ; Ausgabe von PortD
          BufferOut(2) = DIGITAL_OUTD
          hidWrite (DeviceHandle.l,@BufferOut()) ; Sende Daten zu einem HID Gerät
     
    EndSelect
  EndSelect
  
Until EventID = #PB_Event_CloseWindow

  hidDisconnect ()
  mcHID_Free()
EndIf
End
;}
;
Der folgende HEX Code wird einfach mit dem Flow Code Programmer per USB programmiert:

Code: Alles auswählen

;PIC_BUGGY_IO.HEX File wird erstellt
;-----------------------------
If CreateFile(1, "PIC_BUGGY_IO.HEX" )
    Restore StringData
    Repeat
    Read Daten.s
        If Daten.s = "End" : Break : EndIf
        WriteStringN(1,Daten.s)
    ForEver
    CloseFile (1)
EndIf

DataSection
  StringData:
  Data.s ":020000040000FA"
  Data.s ":10080000D5EF09F0FFFFFFFFFFFFFFFFFFFFFFFF3F"
  Data.s ":10081000E9CF01F0EACF02F0E1CF03F0E2CF04F03C"
  Data.s ":10082000D9CF05F0DACF06F0D4EC08F001C0E9FF2B"
  Data.s ":1008300002C0EAFF03C0E1FF04C0E2FF05C0D9FF28"
  Data.s ":1008400006C0DAFF110004010401376B1E0E716E41"
  Data.s ":100850000401400E096F5B0E0A6F040E0B6F880EC9"
  Data.s ":10086000086F9B0E0E6F040E0F6F0D6B400E0C6F1A"
  Data.s ":100870001200040104012A6B14EE9BF024EE18F020"
  Data.s ":10088000010E2A5D04E2E6CFDEFF2A2BF9D7010E26"
  Data.s ":100890003E6F3F6B1200040104012A6B14EE20F03E"
  Data.s ":1008A00024EE18F0020E2A5D04E2E6CFDEFF2A2BCA"
  Data.s ":1008B000F9D7020E3E6F3F6B12000401800E040157"
  Data.s ":1008C00010634FD0135103082FE0135102080EE0BC"
  Data.s ":1008D0001351010801E044D0010E396F7A0E3A6FCE"
  Data.s ":1008E000140E3B6F120E3E6F3F6B3AD0010E396F04"
  Data.s ":1008F000450EE16E040EE26E1245E126000EE22284"
  Data.s ":10090000E6CF3AF4E7CF3BF4F86AF76A040E3A25EB"
  Data.s ":10091000F66E3B51F7220900F5CF3EF409000A00BC"
  Data.s ":10092000F5CF3FF40A001CD0010E396F020E12659C"
  Data.s ":1009300002D0030E126F490EE16E040EE26E1245F4"
  Data.s ":10094000E126000EE222E6CF3AF4E7CF3BF43AC4C8"
  Data.s ":10095000F6FF3BC4F7FF0800F5503E6F3F6B00D039"
  Data.s ":10096000348312000401010E0401396F716A726A46"
  Data.s ":10097000736A746A756A766A776A786A796A7A6A73"
  Data.s ":100980007B6A7C6A7D6A7E6A7F6A326B336B12C4D3"
  Data.s ":1009900031F4125103E1050E306F04D0060E306FB2"
  Data.s ":1009A00023EC04F0120004010401186B196B1051C0"
  Data.s ":1009B0001F0B020814E010511F0B01080CE010512E"
  Data.s ":1009C0001F0B000801E02CD0010E0401396F34A187"
  Data.s ":1009D00001D0188325D0010E0401396F21D0010EFA"
  Data.s ":1009E0000401396F14510F0B0800F350296B000FED"
  Data.s ":1009F000286F040E29231451800B01E0010E04001E"
  Data.s ":100A0000F35028253C6F000E29213D6F3CC4E1FFC7"
  Data.s ":100A10003DC4E2FFE750040B02E0010E186F00D066"
  Data.s ":100A2000010E0401396309E1180E3A6F040E3B6FA1"
  Data.s ":100A30003493020E3E6F3F6B00D012000401010E92"
  Data.s ":100A40000401125D0CE110511F0B000808E1010EBA"
  Data.s ":100A5000396F030E115D02E1348101D03491000E33"
  Data.s ":100A60000401125D37E110511F0B020833E11451EC"
  Data.s ":100A70000F0B00082FE0010E396F14510F0B080007"
  Data.s ":100A8000F350296B000F286F040E29231451800B9B"
  Data.s ":100A900001E0010E0400F35028253C6F000E2921CF"
  Data.s ":100AA0003D6F030E115D07E1840E3CC4E1FF3DC4C0"
  Data.s ":100AB000E2FFE76E0FD014AF07D0000E3CC4E1FF99"
  Data.s ":100AC0003DC4E2FFE76E06D0880E3CC4E1FF3DC4A2"
  Data.s ":100AD000E2FFE76E12000401010E0401135D04E061"
  Data.s ":100AE000030E135D10E01AD0000E0401125D04E045"
  Data.s ":100AF000010E125D07E012D0020E0401396F39ECCD"
  Data.s ":100B000004F00CD00BD0000E0401125D01E006D001"
  Data.s ":100B1000020E0401396F4BEC04F000D0180E0401F2"
  Data.s ":100B20003A6F040E3B6F349312000401020E04016D"
  Data.s ":100B3000135D04E0030E135D0EE01AD0000E0401F5"
  Data.s ":100B4000125D01E015D0020E0401396F5B0E3C6F9F"
  Data.s ":100B5000040E3D6F0DD0000E0401125D01E008D0BF"
  Data.s ":100B6000020E0401396F200E3C6F040E3D6F00D061"
  Data.s ":100B700012000401080E04013E5D000E3F5905E21B"
  Data.s ":100B80003EC440F43FC441F404D0080E406F000E50"
  Data.s ":100B9000416F049304914151030B041340C405F4C5"
  Data.s ":100BA00040513E5F41513F5B180E3C6F040E3D6F5C"
  Data.s ":100BB00034A31AD03AC4F6FF3BC4F7FFF86A3CC42A"
  Data.s ":100BC000E1FF3DC4E2FF04014051411105E1F6CFD0"
  Data.s ":100BD0003AF4F7CF3BF41FD00900F5CFE6FF090048"
  Data.s ":100BE000400701E24107EFD73AC4E1FF3BC4E2FF0F"
  Data.s ":100BF0003CC4D9FF3DC4DAFF04014051411105E175"
  Data.s ":100C0000E1CF3AF4E2CF3BF406D0E6CFDEFF400777"
  Data.s ":100C100001E24107F1D71200040104011051600BF9"
  Data.s ":100C2000E842E842E842E842E84200085CE111514B"
  Data.s ":100C30000C0858E01151070855E011510B0846E027"
  Data.s ":100C400011510A0834E0115103082EE01151010836"
  Data.s ":100C50002BE01151000825E01151080816E0115150"
  Data.s ":100C6000090810E0115106080AE01151050801E0D9"
  Data.s ":100C70003AD0010E0401396F040E306F34D05DECB0"
  Data.s ":100C800004F031D0B2EC04F02ED0010E0401396F23"
  Data.s ":100C9000310E3A6F040E3A6F3493010E3E6F3F6B84"
  Data.s ":100CA00022D0D3EC04F01FD01EEC05F01CD0010EB6"
  Data.s ":100CB0000401396F14513A6F3B6B320E3A27040E20"
  Data.s ":100CC0003B233493010E3E6F3F6B0DD0010E0401A8"
  Data.s ":100CD000396FE26A320E1425E16E040EE22212C46C"
  Data.s ":100CE000E7FF01D000D004011200040104011051FB"
  Data.s ":100CF0001F0B010878E11451000875E11151060835"
  Data.s ":100D000001E02AD01351210807E01351220812E014"
  Data.s ":100D1000135123081DE01DD0020E0401396F010E8E"
  Data.s ":100D2000316304D0C20E3A6F140E3B6F090E3E6F52"
  Data.s ":100D30003F6B0FD0020E0401396F010E316307D0F3"
  Data.s ":100D4000F00E3A6F140E3B6F2F0E3E6F3F6B01D0CB"
  Data.s ":100D500000D00401348300D004011051600BE8423C"
  Data.s ":100D6000E842E842E842E84201083DE111510B083F"
  Data.s ":100D700034E01151030825E011510A081CE011511B"
  Data.s ":100D800002080DE01151090807E01151010801E0C6"
  Data.s ":100D90002AD06BEC05F027D095EC05F024D0020E9C"
  Data.s ":100DA0000401396F350E3A6F040E3B6F3493010E18"
  Data.s ":100DB0003E6F3F6B18D0020E0401396F1351356F2F"
  Data.s ":100DC00012D0020E0401396F360E3A6F040E3B6FDB"
  Data.s ":100DD0003493010E3E6F3F6B06D0020E0401396F53"
  Data.s ":100DE0001251366F00D0040112000401000E0401FC"
  Data.s ":100DF00039630AD0080E016F100E026F040E036FE4"
  Data.s ":100E0000840E006F046F30D0040110AF1ED00401B7"
  Data.s ":100E10003E51165D3F51175904E216C43EF417C403"
  Data.s ":100E20003FF4B9EC05F0010E0401386F080E016FB4"
  Data.s ":100E3000100E026F040E036F800E006F180E066F07"
  Data.s ":100E4000040E076FC80E046F0FD0020E0401386F36"
  Data.s ":100E5000056BC80E046F080E016F180E026F040EAA"
  Data.s ":100E6000036FC80E006F00D06D9800D0120004010F"
  Data.s ":100E7000030E04010015436F01C442F442513E27A2"
  Data.s ":100E800043513F23180E3A6F040E3B6F3AC4E1FF03"
  Data.s ":100E90003BC4E2FF3CC4D9FF3DC4DAFF0401425128"
  Data.s ":100EA000431105E1E1CF3AF4E2CF3BF406D0E6CFBF"
  Data.s ":100EB000DEFF420701E24307F1D712000401020EF0"
  Data.s ":100EC0000401135D04E0030E135D17E020D0000E53"
  Data.s ":100ED0000401125D01E01BD004012A6B14EE5BF0EB"
  Data.s ":100EE00024EE9BF0010E2A5D04E2E6CFDEFF2A2B02"
  Data.s ":100EF000F9D7010E3E6F3F6B0AD0000E0401125D60"
  Data.s ":100F000001E005D0020E04013E6F3F6B00D01200DD"
  Data.s ":100F10000401000E0401386F080E016F100E026FFD"
  Data.s ":100F2000040E036F880E006F000E046F12000401A0"
  Data.s ":100F3000000E0401386F000E396F3E6B3F6B0CECF6"
  Data.s ":100F400006F0000E0401396302D075EC06F0F5ECF2"
  Data.s ":100F500006F012000401020E0401386311D037ECD0"
  Data.s ":100F600007F0020E0401396302D05EEC07F00401C1"
  Data.s ":100F700000BD03D0C80E006F02D0880E006F03D0F2"
  Data.s ":100F800088EC07F000D012000401040E0401306365"
  Data.s ":100F900009D012C46EFF6E5003E0050E306F02D010"
  Data.s ":100FA000030E306F010E040138630BD0B9EC05F06D"
  Data.s ":100FB000040104BD03D0C80E046F02D0880E046F74"
  Data.s ":100FC00003D088EC07F000D0120004010401376B55"
  Data.s ":100FD00008BF1BD009512C6502D009C42CF4376B13"
  Data.s ":100FE00014EE5BF02DC4D9FF2EC4DAFF2C51375D0F"
  Data.s ":100FF00004E2E6CFDEFF372BF9D7400E096F400E33"
  Data.s ":101000000817087D880E081300D00401375112001C"
  Data.s ":1010100004016D9269946894120004016A6A686A16"
  Data.s ":101020009F0E6B6E3B0E696E6E6A716A726A736AAE"
  Data.s ":10103000746A756A766A776A786A796A7A6A7B6AA4"
  Data.s ":101040007C6A7D6A7E6A7F6A160E706E68A602D020"
  Data.s ":101050006896FCD76D9888EC07F004013491316BE9"
  Data.s ":10106000030E306F12000401698468986D821200CB"
  Data.s ":101070000401689C1200040170A003D088EC07F002"
  Data.s ":101080007090689A120004016892120004017C0EAC"
  Data.s ":101090006C1404012F6F000E2F6301D005D0040ED5"
  Data.s ":1010A0002F6301D00ED010D0040100513C0BE84258"
  Data.s ":1010B000E8420D0803E197EC07F002D0AAEC07F034"
  Data.s ":1010C00003D0C4EC07F000D0120004017C0E6C14B5"
  Data.s ":1010D00004012F6F080E2F6301D005D00C0E2F6373"
  Data.s ":1010E00001D00DD00DD057C42DF458C42EF4010EEC"
  Data.s ":1010F00004012C6FE5EC07F00401446F01D000D02F"
  Data.s ":101100001200E9CF51F4EACF52F4E1CF53F4E2CF29"
  Data.s ":1011100054F4D9CF55F4DACF56F40401000E04018B"
  Data.s ":10112000306301D034D069A404D068A402D008ECA4"
  Data.s ":1011300008F06DB22CD069A004D068A002D00DECEC"
  Data.s ":1011400008F069A804D068A802D033EC08F069ACB4"
  Data.s ":1011500004D068AC02D038EC08F069AA04D068AAC0"
  Data.s ":1011600002D03BEC08F069A204D068A202D043ECA4"
  Data.s ":1011700008F0030E0401306101D009D069A607D040"
  Data.s ":1011800068A605D046EC08F065EC08F0689656C4F1"
  Data.s ":10119000DAFF55C4D9FF54C4E2FF53C4E1FF52C47F"
  Data.s ":1011A000EAFF51C4E9FF1200A0AA05D0A1AA03D00A"
  Data.s ":1011B00081EC08F0A19A12003F0E566EFF0E556E9C"
  Data.s ":1011C000562E01D003D0552EFED7FAD72B0E556ED2"
  Data.s ":1011D000552EFED70000000012001F0E576EFF0EA6"
  Data.s ":1011E000566EFF0E556E572E01D007D0562E01D0E9"
  Data.s ":1011F00003D0552EFED7FAD7F6D7980E566EFF0EAF"
  Data.s ":10120000556E562E01D003D0552EFED7FAD79D0E1F"
  Data.s ":10121000556E552EFED700000000120004016DB679"
  Data.s ":101220001200140E6F6E000E0401306F346B316BC0"
  Data.s ":101230006D6A696A6D86010E306FDCEC08F06DBA7C"
  Data.s ":1012400006D0686A696A69806988020E0401306F95"
  Data.s ":1012500012001200040104010CBFFED7400E2C65E1"
  Data.s ":1012600002D0400E2C6F2A6B2DC4E1FF2EC4E2FF8A"
  Data.s ":1012700024EE9BF02C512A5D04E2E6CFDEFF2A2B00"
  Data.s ":10128000F9D704012CC40DF4400E0C170C7D880E08"
  Data.s ":101290000C13120004016DA612006D6A696A000E3B"
  Data.s ":1012A0000401306F1200F26AF50EF16EC00EF06E9E"
  Data.s ":1012B000D09E9D6AA06A9E6AA16A0F0EC112FF0E9F"
  Data.s ":1012C000926EFF0E936EFF0E946E956A070E966EE9"
  Data.s ":1012D000896A8A6A8B6A8C6A8D6A120004EE00F051"
  Data.s ":1012E000050EEE6AEA62FDD7EDEC08F004019E0EF1"
  Data.s ":1012F0000401456F140E466F9E0E476F140E486F23"
  Data.s ":101300004E0E496F150E4A6F560E4B6F150E4C6FF1"
  Data.s ":101310009A0E4D6F150E4E6FCE0E4F6F150E506F0D"
  Data.s ":101320000BC057F40CC058F40DC059F40EC05AF459"
  Data.s ":101330000EEC09F0A19AA08AF28CF28E12000B6AD0"
  Data.s ":10134000A09A0401060E0401306101D008D06DB2EC"
  Data.s ":1013500006D0445304E044C44BF0446B04D04B6AC1"
  Data.s ":101360000401446B00D0A08A12000BC04BF01200A5"
  Data.s ":101370004C6A04010CBF4C2A4C50000A02E00E6A71"
  Data.s ":101380000CD0A09A0BC02DF40CC02EF40DC02CF480"
  Data.s ":101390002AEC09F0A08A010E0E6E0EC04BF012006E"
  Data.s ":1013A0004AEC09F0A19AA09A12000F6A106A53EC55"
  Data.s ":1013B00009F0600E0B6E000E0C6EA00E0D6E000E8E"
  Data.s ":1013C0000E6E6EEC09F0838283841F0E576EFF0E43"
  Data.s ":1013D000566EFF0E556E572E01D007D0562E01D0F7"
  Data.s ":1013E00003D0552EFED7FAD7F6D7980E566EFF0EBD"
  Data.s ":1013F000556E562E01D003D0552EFED7FAD79D0E2E"
  Data.s ":10140000556E552EFED7000000001F0E576EFF0EC2"
  Data.s ":10141000566EFF0E556E572E01D007D0562E01D0B6"
  Data.s ":1014200003D0552EFED7FAD7F6D7980E566EFF0E7C"
  Data.s ":10143000556E562E01D003D0552EFED7FAD79D0EED"
  Data.s ":10144000556E552EFED7000000009FEC09F04BC0F2"
  Data.s ":1014500000F0076A0050075C0EE260C008F0A00EC2"
  Data.s ":101460000B6E000E0C6E60C0A0F0010E0D6EB8EC9D"
  Data.s ":1014700009F0072AEFD7E9D7FFD7120001000000D3"
  Data.s ":10148000020000000000000008003400120001000B"
  Data.s ":10149000000001000000010002000000010009003E"
  Data.s ":1014A000020029000000010001000000A00032003D"
  Data.s ":1014B000090004000000000002000300000000001A"
  Data.s ":1014C00000000900210001000100000001002200CD"
  Data.s ":1014D0002F0000000700050081000300400000000D"
  Data.s ":1014E00001000700050001000300400000000100AA"
  Data.s ":1014F0000600A000FF0009000100A1000100090092"
  Data.s ":1015000003001500000026000000FF007500080021"
  Data.s ":101510009500010081000200090004001500000090"
  Data.s ":1015200026000000FF0075000800950001009100F2"
  Data.s ":101530000200090005001500000026000000FF0061"
  Data.s ":101540007500080095000200B1000200C000040010"
  Data.s ":10155000030009000400220003006D000000690080"
  Data.s ":1015600000006B000000720000006F0000004500EA"
  Data.s ":1015700000006C000000650000006B0000007400BB"
  Data.s ":101580000000720000006F0000006E0000006900A3"
  Data.s ":1015900000006B000000610000001A00030055000D"
  Data.s ":1015A000000053000000420000002000000048003E"
  Data.s ":1015B000000049000000440000002000000064001A"
  Data.s ":1015C0000000650000006D0000006F0000000200D8"
  Data.s ":1015D0000300FFFFFFFFFFFFFFFFFFFFFFFFFFFF16"
  Data.s ":020000040030CA"
  Data.s ":0E000000F032FFFEFFF99BFFFFFFFFBFFFFF87"
  Data.s ":00000001FF"
  Data.s "End"

Verfasst: 04.10.2007 00:10
von Scarabol
Gibts irgendwelche Wow-cool-Projekte, um vielleicht den ein oder anderen dazu zu bringen sich auch son Teil zu kaufen?

Gruß
Scarabol

Verfasst: 05.10.2007 00:25
von mpz
Hi Scarabol,

nun im Großen und Ganzen geht es erst einmal um Steuerungsaufgaben und Sensorik. D.h. außer normalen Digitalen/Analogen Ein- und Ausgängen kann man auch 2 Motoren und zwei Servos ansteuern. Das alles auf einem autarken bzw. selbstbewegenden System. (Der Traum vom eigenen Roboter...) Es soll einfach aber auch technisch viele Möglichkeiten bieten und gut nachbaubar sein.

Ich werden daher erst einmal alle vorhandenen Systeme ansteuerbar machen. Einen kleine seriellen Sender und Empfänger auf Funkbasis habe ich schon und könnte das System dann auch auf Funkbasis steuerbar machen. Womit ich mich in nächster Zeit beschäftigen möchte, ist das externe Ansteuern des PCs über Internet und damit Zugriff auf das Gerät.

Beispiele:
1) Bewegungssteuerung (und Bildübertragung) einer WebCam über Servos, wobei ich das einfach von einem anderen Rechner bzw. Ort mache
1b) Danach erfolgt die externe Steuerung des Buggys auf der sich die WebCam befindet. Das USB Kabel ist dabei fest mit dem Buggy verbunden.
2) Externe Abfrage von Wetterdaten
3) PC steuert selbständig den Buggy über WebCam Bilder
4) Meßung von Ereignissen und Auswertung auf PC
5) Anwender am PC <---> Internet <---> PC <--> Funk <--> Buggy
(Willy hast Du den Herd angelassen ? Nee aber der Buggy schaut nach...)

Ich lasse mich auch gerne von Euren Ideen inspirieren. Wenn dabei ein Wow-cool-Projekt rauskommt, dann wäre das toll...

Gruß Michael