So jetzt hab ich es hinbekommen das der Taster beim betätigen die LED einschaltet und diese auch an bleibt ich darf max. 5 sek auf dem Taster bleiben sonst geht sie wieder aus. Wenn ihr eine Bessere Lösung wisst die das selbe Ergebnis bring immer her damit Mein Problem ist nämlich jetzt das wenn ich den Code für die Taster abfrage und den Code für die Servos zusammen laufen lasse der Atmega völlig spinnt. Er nimmt keine Befehle mehr an und der Servo mach fürchterliche Geräusche. Außerdem wird der Spannungswandler Extrem heiß! Kann das sein das der Controller mit dem Programm überfordert ist ? Werde aber ein Atmega 328 nehmen nicht den Atmega32. Hab das neue Board noch nicht hier. Gruß Tjark
Code:
$regfile = "m32def.dat"$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
Config Servos = 4 , Servo1 = Porta.2 , Servo2 = Porta.3 , Servo3 = Porta.4 , Servo4 = Porta.5 , Reload = 10
Config Dcf77 = Pind.7 , Timer = 1 , Gosub = Sectic
Config Porta.0 = Output
Config Porta.1 = Output
Config Porta.2 = Output
Config Porta.3 = Output
Config Porta.4 = Output
Config Porta.5 = Output
Enable Interrupts
Time$ = "00:00:00"
Date$ = "09/04/00"
Portswitch Alias Porta.1
Led1 Alias Porta.0
Dim Inputstring As String * 5
Dim Data_available As Byte
'----X-----------------------------------
Dim Joystick_x_wert_string As String * 5
Dim Joystick_x_wert_integer As Integer
Dim X_empfangen As Byte
'----Y-----------------------------------
Dim Joystick_y_wert_string As String * 5
Dim Joystick_y_wert_integer As Integer
Dim Y_empfangen As Byte
'----Z-----------------------------------
Dim Joystick_z_wert_string As String * 5
Dim Joystick_z_wert_integer As Integer
Dim Z_empfangen As Byte
'----Z-Rotation--------------------------
Dim Joystick_rz_wert_string As String * 5
Dim Joystick_rz_wert_integer As Integer
Dim Rz_empfangen As Byte
'Buttons---------------------------------
Dim Button1_wert_string As String * 5
Dim Button1_wert_integer As Integer
Dim B1_empfangen As Byte
Do
Data_available = Ischarwaiting()
If Data_available > 0 Then 'wenn Daten da sind, dann...
Input "" , Inputstring
X_empfangen = Instr(inputstring , "X") 'Gibt die Position des Substrings "X" aus oder null wenn nicht gefunden
Y_empfangen = Instr(inputstring , "Y") 'Gibt die Position des Substrings "Y" aus oder null wenn nicht gefunden
Z_empfangen = Instr(inputstring , "Z") 'Gibt die Position des Substrings "Z" aus oder null wenn nicht gefunden
Rz_empfangen = Instr(inputstring , "Rz") 'Gibt die Position des Substrings "Z-Rotation" aus oder null wenn nicht gefunden
B1_empfangen = Instr(inputstring , "B1") 'Gibt die Position des Substrings "Button 1 " aus oder null wenn nicht gefunden
'----X-----------------------------------
If X_empfangen = 1 Then
Joystick_x_wert_string = Mid(inputstring , 2) 'die erste Stelle des Strings (das "X") abscheiden
Joystick_x_wert_integer = Val(joystick_x_wert_string) 'string in integer konvertieren
End If
'----Y-----------------------------------
If Y_empfangen = 1 Then
Joystick_y_wert_string = Mid(inputstring , 2) 'die erste Stelle des Strings (das "Y") abscheiden
Joystick_y_wert_integer = Val(joystick_y_wert_string) 'string in integer konvertieren
End If
'----Z-----------------------------------
If Z_empfangen = 1 Then
Joystick_z_wert_string = Mid(inputstring , 2) 'die erste Stelle des Strings (das "Z") abscheiden
Joystick_z_wert_integer = Val(joystick_z_wert_string) 'string in integer konvertieren
End If
'----Z-Rotation--------------------------
If Rz_empfangen = 1 Then
Joystick_rz_wert_string = Mid(inputstring , 2) 'die erste Stelle des Strings (das "Rz") abscheiden
Joystick_rz_wert_integer = Val(joystick_rz_wert_string) 'string in integer konvertieren
End If
'----Button 1 ---------------------------
If B1_empfangen = 1 Then
Button1_wert_string = Mid(inputstring , 2) 'die erste Stelle des Strings (das "Rz") abscheiden
Button1_wert_integer = Val(button1_wert_string) 'string in integer konvertieren
End If
End If
Servo(1) = Joystick_x_wert_integer
Servo(2) = Joystick_y_wert_integer
Servo(3) = Joystick_z_wert_integer
Servo(4) = Joystick_rz_wert_integer
If Time$ < "00:00:05" Then 'Hier wird das Signal Ignoriert bzw. Schaltet den Portswitch immer auf null wenn man drückt
Gosub Ausschalten
End If
If Time$ > "00:00:05" Then 'Erst nach 5sek. wird ein neues Signal erfasst '
Gosub Einschalten
End If
If Portswitch = 1 Then
Toggle Led1
End If
Loop
End
Einschalten:
If Button1_wert_integer = 1128 Then
Portswitch = 1
Time$ = "00:00:00" 'Sofern ein Signal vom Joystickknopf gekommen ist werden die Folgenden für 5sek. Ignoriert.
End If
Return
Ausschalten:
If Button1_wert_integer = 1128 Then
Portswitch = 0
End If
Return
Sectic: 'wird sekündlich aufgerufen
Gosub Uhranzeigen
If _sec = 0then
End If
Return
Uhranzeigen:
Print Time$ ; ""
Return
Lesezeichen