Ein ganz liebes "HALLO" an euch beide.
@ oberallgeier:
Korrekt. Die Spannungsversorgung erfolgt über ein 12V Netzteil mit 500mA Ausgangsstrom. Eigentlich ausreichend. Dennoch habe ich die 19g-Servos nun gegen 12g-Servos getauscht und der Stromhunger ist genau in dem Rahmen, in dem ich ihn haben will.
Die GND-Leitungen von EVA-Board und Servos würde ich eh miteinander verbinden. Die Rechtecksignale kann der Controller schließlich nur im geschlossenen Stromkreis erkennen ^^.
Danke dir trotzdem recht herzlich für den Tipp.
@ Jörg:
Habe das Programm nun zumindest einmal soweit, dass beide Servos problemlos dahin fahren, wohin ich sie haben möchte. Ganz unkonventionell und ohne großen Schnickschnack drum herum. Ging doch mit dem Servo-Konfigurationsbefehl, aber ohne Main-Sub. *freu*
Hier das File:
Code:
$regfile = "m8def.dat"
$crystal = 3686411
Config Portb = Output
Config Portc = Input
Portb = &H03
Taster1 Alias Pinc.0
Taster2 Alias Pinc.1
'*** Konfiguriere Servos ***
Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10
Enable Interrupts
'*** Setze Servos für Startup auf Mittelstellung ***
Dim Pos1 As Byte
Pos1 = 124 ' 124 = Mittelstellung, 48 = rechter Anschlag, 210 = linker Anschlag, Servo 1
Servo(1) = Pos1
Dim Pos2 As Byte
Pos2 = 130 ' 130 = Mittelstellung, 48 = rechter Anschlag, 215 = linker Anschlag, Servo 2
Servo(2) = Pos2
'*** Konfiguriere Variablen ***
Dim M1 As Byte
Dim M2 As Byte
M1 = 0
M2 = 0
' *****************************
' ***** Hauptprogramm *****
' *****************************
Do
Debounce Taster1 , 0 , Sub_taster1 , Sub
Debounce Taster2 , 0 , Sub_taster2 , Sub
Loop
' **********************
' * Unterprogramme *
' **********************
'Wenn Taster 1 gedrückt, zählt Merker1 um Wert 1 hoch. Mit jedem neuen Wert von M1 erfolgt eine neue Positionsausgabe per PWM an Servo1.
Sub_taster1:
If Taster1 = 0 Then
M1 = M1 + 1
Waitms 20
End If
If M1 = 1 Then
Pos1 = 48
Elseif M1 = 2 Then
Pos1 = 210
End If
If M1 = 2 Then 'Wenn M1 den Wert 2 erreicht, wird M1 auf Null zurück gesetzt
M1 = 0
End If
Servo(1) = Pos1
Return
'Wenn Taster 2 gedrückt wird, zählt Merker2 um Wert 1 hoch. Mit jedem neuen Wert von M1 erfolgt neue Positionsausgabe an Servo2.
Sub_taster2:
If Taster2 = 0 Then
M2 = M2 + 1
Waitms 20
End If
If M2 = 1 Then
Pos2 = 48
Elseif M2 = 2 Then
Pos2 = 215
End If
If M2 = 2 Then ' Wenn M2 den Wert 2 erreicht, wird M2 auf Null zurück gesetzt
M2 = 0
End If
Servo(2) = Pos2
Return
End
Ich kann damit sogar beide Taster gleichzeitig drücken und der Controller gibt sofort das entsprechende PWM-Signal an den Ports aus.
Morgen Abend werde ich dann mal versuchen, ob ich die Eingabe durch den Servotester (PulseIn) implementiert bekomme. Irgendwie muss das doch funktionieren - vielleicht diesmal ^^.
Auf deine Frage bezogen:
Nein, auch wenn es noch 2 Monate dauert - das muss ich hinbekommen. Und wenn nicht, dann muss ich umso mehr dafür büffeln. N bissl Platz ist in meinem Hirn dafür noch frei ^^.
Die Klappen, die im Boot verbaut sind, sollen definitiv getrennt zu öffnen sein. Finde das einfach schicker. Man soll ja auch sehen, dass ich mir echt Gedanken für die Steuerung gemacht habe - und meine Frau freut sich sicher auch über ausgereiftere Konzepte als halbherzige Notlösungen (z.B. weil ich nicht weiter gekommen bin).
Die Beleuchtung soll NICHT nur per Tastkanal zu schalten, sondern dauerhaft eingeschaltet sein wenn der entsprechende Schalter an der Fernsteuerung umgelegt wird. Und da habe ich dann einen 3-Stufen-Schalter, welcher dafür genutzt werden soll: Stufe unten - Licht aus, Stufe Mitte - Licht ein, Stufe oben - Licht und Zusatzscheinwerfer.
MFG - Maik
Lesezeichen