z.B. den Anhang Hochzuladen, hatte ich den Voreingestellen Haken (mit Link Verknüpfen oder so) nicht entfernt. Somit ist mein PC nach ca. 30 Minuten Ladezeit brutal abgestürzt.
Den Anhang (25kB) kann man übrigens hier herunterladen.
Dirk
z.B. den Anhang Hochzuladen, hatte ich den Voreingestellen Haken (mit Link Verknüpfen oder so) nicht entfernt. Somit ist mein PC nach ca. 30 Minuten Ladezeit brutal abgestürzt.
also das hab ich noch nie gehabt. Hab ich auch noch nie von gehörtMuss aber zugeben in diesem Forum habe ich etwas Probleme.
z.B. den Anhang Hochzuladen, hatte ich den Voreingestellen Haken (mit Link Verknüpfen oder so) nicht entfernt. Somit ist mein PC nach ca. 30 Minuten Ladezeit brutal abgestürzt.
Also es soll einen steuerung sein für mein schriebtisch
-----------------------------------------------------
1.)Licht
2.)RGB fader (eigender controller fertig gekauft)
3.)Ein Kleiner Verstärker (Kopfhörer)
4.) AVR Board (steckboard -Addons Board Pollin)
-----------------------------------------------------
es soll per Taster eingeschaltet werden sowie wiedergabe auf den LCD wiedergeben werden.
beim strom zugeben soll er die Lampen/LED/Realis Testen (einmal Durchgehen) also testen.
So soll es dann sein:
Drücke ich die Taste (Licht) soll im LCD stehen = Licht an, drück ich Nacheinigerzeit die taste wieder, Geht Licht aus und LCD soll Stehen Lampe Aus....
Drücke ich die Taste (RGB) soll im LCD stehen = RGB an, drück ich Nacheinigerzeit die taste wieder, Geht RGB aus und LCD soll Stehen RGB Aus.....
so auch Bei den Anderen Tasten......
'Programm TEST Mit ATtiny2313 - Orginal= (ATmega32)
'Spannungen schalten mit Taster als "Schalter" mit LCD INFOMATION
'Ein / Ausgänge
'4x IN
'Taster (TEST) - Orginal 4Tasten
'8x OUT
'4x LED (TEST) - Orginal 4x Lampen über ULN2803
'4x Realis (TEST) - Orginal 4x Realis über ULN2803
'1x LCD 2*16 Zeichen (sehe 4 BIT LCD)
'Version:003 Erstell von Thorsten Sch.
$regfile "ATtiny2313.dat" 'ATtiny2313
$crystal = 8000000 '8Mhz Intern
$hwstack = 32 '?
$swstack = 10 '?
$framesize = 40 '?
'==== Ports initialisieren =====
'==== Ports Ausgang =====
Config Portb.6 = Output 'LED 1
Led1 Alias Portb.6
Config Portb.6 = Output 'LED 2
Led2 Alias Portb.6
Config Portb.0 = Output 'LED 3
Led3 Alias Portb.0
Config Portb.1 = Output 'LED 4
Led4 Alias Portb.1
'==== Ports Ausgang ====
'==== Ports Eingang ====
Config Pinb.2 = Input 'TASTER 1
Taster1 Alias Pinb.2
Portb.2 = 0
Config Pinb.3 = Input 'TASTER 2
Taster2 Alias Pinb.3
Portb.3 = 0
Config Pinb.2 = Input 'TASTER 3
Taster3 Alias Pinb.2
Portb.2 = 0
Config Pinb.2 = Input 'TASTER 4
Taster4 Alias Pinb.2
Portb.2 = 0
'==== Ports Ausgang ====
'==== LCD initialisieren ====
'==== LCD 4-Bit Modus ====
Lcd_db4 Alias Portd.2
Lcd_db5 Alias Portd.3
Lcd_db6 Alias Portd.4
Lcd_db7 Alias Portd.5
Lcd_rs Alias Portb.4
Lcd_e Alias Portb.5
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
Config Lcdbus = 4
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "Blink und taster"
Locate 2 , 1
Lcd "an und blink"
'==== LCD ENDE ====
'-----------------------------
'====CONST====
'-----------------------------
'>LEER<
'-----------------------------
'====DEKLARATIONEN====
'-----------------------------
Declare Sub Licht_1
Declare Sub R_g_b
Declare Sub 12volt
Declare Sub Verst
'-----------------------------
'====VARIABLEN====
'-----------------------------
'>LEER<
'-----------------------------
'====MAIN====
'-----------------------------
'>LEER<
'-----------------------------
'====HAUPTSCHLEIFE====
'-----------------------------
Do
Debounce Taster1 , 1 , Licht1 , Sub
Debounce Taster2 , 1 , R_g_b , Sub
Debounce Taster3 . 1 , 12_volt , Sub
Debounce Taster4 , 1 , Vers , Sub
Loop
'-----------------------------
'====HAUPTSCHLEIFE====
'=== SUB LICHT ====
Sub Licht1
If Taster1 = 1 'TASTER An
Toggle Led1 'LED An
Locate 1 , 1
Lcd "LED1 - AN"
Wait 1
Else
Cls
If Taster1 = 0 'Taster Aus
Toggle Led1 'LED Aus
Locate 1 , 1
Lcd "LED1 - Aus"
End If
End Sub
'==== SUB LICHT ENDE ====
'==== SUB RGB ====
Sub R_g_b
If Taster2 = 1 'TASTER An
Toggle Led2 'LED An
Locate 1 , 1
Lcd "LED2 - AN"
Wait 1
Else
Cls
If Taster2 = 0 'Taster Aus
Toggle Led2 'LED Aus
Locate 1 , 1
Lcd "LED2 - AUS"
End If
End Sub
'==== SUB RGB ENDE ====
'==== SUB 12VOLT ====
Sub 12_volt
If Taster3 = 1 'TASTER An
Toggle Led3 'LED An
Locate 1 , 1
Lcd "LED3 - AN"
Wait 1
Else
Cls
If Taster3 = 0 'Taster Aus
Toggle Led3 'LED Aus
Locate 1 , 1
Lcd "LED3 - AUS"
End If
End Sub
'==== SUB 12VOLT ENDE ====
'==== SUB VERS ====
Sub Vers
If Taster4 = 1 'TASTER An
Toggle Led4 'LED An
Locate 1 , 1
Lcd "LED4 - AN"
Wait 1
Else
Cls
If Taster4 = 0 'Taster Aus
Toggle Led4 'LED Aus
Locate 1 , 1
Lcd "LED4 - AUS"
End If
End Sub
'==== SUB VERS ENDE ====
'==== RETURN STARTE Von Vohrne ====
Return
Declare Sub 12volt
Das ist schon ok.Bascom wird nicht erlauben, dass Variablen, Konstanten und Label mit Ziffern anfangen.
Dies wird also nicht funktionieren ...
Code:Declare Sub 12volt
Dirk
If Taster1 = 1 'TASTER An
Toggle Led1 'LED An
Locate 1 , 1
Lcd "LED1 - AN"
Wait 1
Else
Cls
If Taster1 = 0 'Taster Aus [COLOR=#ff0000][B]du bist im Else Zweig, also kann das weg.[/B][/COLOR]
Toggle Led1 'LED Aus
Locate 1 , 1
Lcd "LED1 - Aus"
End If
If Taster1 = 1 [B][COLOR=#ff0000]Then[/COLOR][/B] 'TASTER An
Toggle Led1 'LED An
Locate 1 , 1
Lcd "LED1 - AN"
Wait 1
Else
Cls
Toggle Led1 'LED Aus
Locate 1 , 1
Lcd "LED1 - Aus"
End If
ABER Du hast immer noch'n logischen Fehler drinn:
Debounce springt die jeweilige Sub dann an, wenn der entsprechende Taster-Pin high (=1) geht (mit etwas Entprellung, ok). Der Taster-Pin ist also beim Eintritt in die entsprechende Sub immer 1 (es sei denn, Du läßt den wahnsinnig schnell los - und selbst dann ist das nicht das Verhalten, welches Du willst).
Der Taster-Pin ist hier nicht Dein Entscheidungskriterium, sondern?
Da hab ich die Antwort geschrieben. Lies es nochmal genau durch.- Dazu benutzt du für jede der 4 Tasten ein Debounce in deiner Hauptschleife (Do/Loop).
- Mit dem Debounce rufst du bei Tastendruck die jeweilige Subroutine für den zugehörigen Ausgang auf.
- In der Subroutine toggelst du den Ausgangspin (gibts einen Befehl für)
- Danach fragst du in der Subroutine mit If/Else/EndIf den Ausgangspin ab ob er nun an oder aus ist und schreibst die entsprechende Meldung aufs LCD.
'Programm TEST Mit ATtiny2313 - Orginal= (ATmega32)
'Spannungen schalten mit Taster als "Schalter" mit LCD INFOMATION
'Ein / Ausgänge
'4x IN
'Taster (TEST) - Orginal 4Tasten
'8x OUT
'4x LED (TEST) - Orginal 4x Lampen über ULN2803
'4x Realis (TEST) - Orginal 4x Realis über ULN2803
'1x LCD 2*16 Zeichen (sehe 4 BIT LCD)
'Version:003 Erstell von Thorsten Sch.
$regfile "ATtiny2313.dat" 'ATtiny2313
$crystal = 8000000 '8Mhz Intern
$hwstack = 32 '?
$swstack = 10 '?
$framesize = 40 '?
'==== Ports initialisieren =====
'==== Ports Ausgang =====
Config Portb.6 = Output 'LED 1 => Portb.6
Led1 Alias Portb.6
Config Portb.6 = Output 'LED 2 => auch Portb.6 ... Passt irgendwie nicht.
Led2 Alias Portb.6
Config Portb.0 = Output 'LED 3 => zur Abwechselung Portb.0
Led3 Alias Portb.0
Config Portb.1 = Output 'LED 4 => und Portb.1
Led4 Alias Portb.1
'==== Ports Ausgang ====
'==== Ports Eingang ====
Config Pinb.2 = Input 'TASTER 1 => Pinb.2
Taster1 Alias Pinb.2
Portb.2 = 0
Config Pinb.3 = Input 'TASTER 2 => Pinb.3
Taster2 Alias Pinb.3
Portb.3 = 0
Config Pinb.2 = Input 'TASTER 3 => nochmal Pinb.2
Taster3 Alias Pinb.2
Portb.2 = 0
Config Pinb.2 = Input 'TASTER 4 => und nochmal Pinb.2
Taster4 Alias Pinb.2
Portb.2 = 0
'==== Ports Ausgang ====
'==== LCD initialisieren ====
'==== LCD 4-Bit Modus ====
Lcd_db4 Alias Portd.2
Lcd_db5 Alias Portd.3
Lcd_db6 Alias Portd.4
Lcd_db7 Alias Portd.5
Lcd_rs Alias Portb.4
Lcd_e Alias Portb.5
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
Config Lcdbus = 4
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "Blink und taster"
Locate 2 , 1
Lcd "an und blink"
'==== LCD ENDE ====
'-----------------------------
'====CONST====
'-----------------------------
'>LEER<
'-----------------------------
'====DEKLARATIONEN====
'-----------------------------
Declare Sub Licht_1 ' <=== Das hab ich als 2tes gefunden. Nochmal so einen Bock.
Declare Sub R_g_b
Declare Sub 12volt ' <=== Da ist nen Bock drin. Sieh dir mal an wie du die Sub unten genannt hast.
Declare Sub Verst ' <=== Au Man! Und der dritte Bock bei den Subs :-/
'-----------------------------
'====VARIABLEN====
'-----------------------------
'>LEER<
'-----------------------------
'====MAIN====
'-----------------------------
'>LEER<
'-----------------------------
'====HAUPTSCHLEIFE====
'-----------------------------
Do
Debounce Taster1 , 1 , Licht1 , Sub
Debounce Taster2 , 1 , R_g_b , Sub
Debounce Taster3 . 1 , 12_volt , Sub ' <=== Sieh mal den Sub-Namen an.
Debounce Taster4 , 1 , Vers , Sub
Loop
'-----------------------------
'====HAUPTSCHLEIFE====
'=== SUB LICHT ====
Sub Licht1
If Taster1 = 1 'TASTER An
Toggle Led1 'LED An
Locate 1 , 1
Lcd "LED1 - AN"
Wait 1
Else
Cls
If Taster1 = 0 'Taster Aus
Toggle Led1 'LED Aus
Locate 1 , 1
Lcd "LED1 - Aus"
End If
End Sub
'==== SUB LICHT ENDE ====
'==== RETURN STARTE Von Vohrne ====
Return
Frag nicht ob es richtig ist. Compilier es, schieb es auf nen Testaufbau und sieh dir an was passiert.ist das soweit richtig oder ist das schon auf einen guten weg???
mich stört der fehler sehe oben in diesen beitrag......
Sub tuwas
for i = 0 to 9
if i = 9 then
...
else
...
end if
next
end sub
und ein paar Leerzeilen zwischen den einzelnen Funktionsblöcken wären auch nicht schlecht um die Blöcke besser erkennen zu können. Zum Beispiel zwischen den Subs oder zwischen den Portdefinitionen und der LCD-Initialisierung. Da kann man auch mit mehr oder weniger Leerzeilen eine übersichtliche Struktur im Programm aufbauen.Was ich auch noch mal anmerken möchte (es korrigiert absolut nichts an deinen Problemen im Quelltext):
Rück doch bitte deinen Code vernünftig ein.
...
Das macht alles übersichtlicher, nicht nur für dich sondern auch für uns. Und alles was du dafür brauchst ist ein klein wenig Disziplin und die Tabulator Taste
'Programm TEST Mit ATtiny2313 - Orginal= (ATmega32)
'Spannungen schalten mit Taster als "Schalter" mit LCD INFOMATION
'Ein / Ausgänge
'4x IN
'Taster (TEST) - Orginal 4Tasten
'8x OUT
'4x LED (TEST) - Orginal 4x Lampen über ULN2803
'4x Realis (TEST) - Orginal 4x Realis über ULN2803
'1x LCD 2*16 Zeichen (sehe 4 BIT LCD)
'Version:003 Erstell von Thorsten Sch.
$regfile "ATtiny2313.dat" 'ATtiny2313
$crystal = 8000000 '8Mhz Intern
$hwstack = 32 '?
$swstack = 10 '?
$framesize = 40 '?
'==== Ports initialisieren =====
'==== Ports Ausgang =====
Config Portb.7 = Output 'LED 1
Led1 Alias Portb.7
Config Portb.6 = Output 'LED 2
Led2 Alias Portb.6
Config Portd.6 = Output 'LED 3
Led3 Alias Portd.6
Config Portd.0 = Output 'LED 4
Led4 Alias Portd.0
'==== Ports Ausgang ====
'==== Ports Eingang ====
Config Pinb.0 = Input 'TASTER 1
Taster1 Alias Pinb.0
Portb.0 = 0
Config Pinb.1 = Input 'TASTER 2
Taster2 Alias Pinb.1
Portb.1 = 0
Config Pinb.2 = Input 'TASTER 3
Taster3 Alias Pinb.2
Portb.2 = 0
Config Pinb.3 = Input 'TASTER 4
Taster4 Alias Pinb.3
Portb.3 = 0
'==== Ports Ausgang ====
'==== LCD initialisieren ====
'==== LCD 4-Bit Modus ====
Lcd_db4 Alias Portd.2
Lcd_db5 Alias Portd.3
Lcd_db6 Alias Portd.4
Lcd_db7 Alias Portd.5
Lcd_rs Alias Portb.4
Lcd_e Alias Portb.5
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs
Config Lcdbus = 4
Initlcd
Cursor Off
Cls
Locate 1 , 1
Lcd "Blink und taster"
Locate 2 , 1
Lcd "an und blink"
'==== LCD ENDE ====
'-----------------------------
'====CONST====
'-----------------------------
'>LEER<
'-----------------------------
'====DEKLARATIONEN====
'-----------------------------
Declare Sub Ausgang1
Declare Sub Ausgang2
Declare Sub Ausgang3
Declare Sub Ausgang4
'-----------------------------
'====VARIABLEN====
'-----------------------------
'>LEER<
'-----------------------------
'====MAIN====
'-----------------------------
'>LEER<
'-----------------------------
'====HAUPTSCHLEIFE====
'-----------------------------
Do
Debounce Taster1 , 1 , Ausgang1 , Gosub
Debounce Taster2 , 1 , Ausgang2 , Gosub
Debounce Taster3 , 1 , Ausgang3 , Gosub
Debounce Taster4 , 1 , Ausgang4 , Gosub
Loop
'-----------------------------
'====HAUPTSCHLEIFE====
'=== SUB LICHT ====
Sub Ausgang1
If Taster1 = 1 Then 'TASTER An
Toggle Led1 'LED An
Locate 1 , 1
Lcd "LED1 - AN"
Wait 1
If Taster1 = 0 Then 'Taster Aus
Toggle Led1 'LED Aus
Locate 1 , 1
Lcd "LED1 - Aus"
If End
Return
'==== SUB LICHT ENDE ====
'==== SUB RGB ====
Sub Ausgang2
If Taster2 = 1 Then 'TASTER An
Toggle Led2 'LED An
Locate 1 , 1
Lcd "LED2 - AN"
Wait 1
If Taster2 = 0 Then 'Taster Aus
Toggle Led2 'LED Aus
Locate 1 , 1
Lcd "LED2 - AUS"
End Sub
'==== SUB RGB ENDE ====
'==== SUB 12VOLT ====
Sub Ausgang3
If Taster3 = 1 Then 'TASTER An
Toggle Led3 'LED An
Locate 1 , 1
Lcd "LED3 - AN"
Wait 1
If Taster3 = 0 Then 'Taster Aus
Toggle Led3 'LED Aus
Locate 1 , 1
Lcd "LED3 - AUS"
End Sub
'==== SUB 12VOLT ENDE ====
'==== SUB VERS ====
Sub Ausgang4
If Taster4 = 1 Then 'TASTER An
Toggle Led4 'LED An
Locate 1 , 1
Lcd "LED4 - AN"
Wait 1
If Taster4 = 0 Then 'Taster Aus
Toggle Led4 'LED Aus
Locate 1 , 1
Lcd "LED4 - AUS"
End Sub
'==== SUB VERS ENDE ====
End
Error : 7 Line : 111 IF THEN expected , in File : E:\AVR-Projekte\Thorsten_Sch\Thorsten_Sch_-_no54.bas
Error : 229 Line : 116 End Sub or End Function expected [[ 1:AUSGANG2]] , in File : E:\AVR-Projekte\Thorsten_Sch\Thorsten_Sch_-_no54.bas
Error : 7 Line : 116 IF THEN expected [ 116] , in File : E:\AVR-Projekte\Thorsten_Sch\Thorsten_Sch_-_no54.bas
Error : 123 Line : 116 END IF expected , in File : E:\AVR-Projekte\Thorsten_Sch\Thorsten_Sch_-_no54.bas
Zu jedem IF gehört ein END IF und nicht ein IF END.
IF-THEN-ELSE-END IF
Action
Allows conditional execution or branching, based on the evaluation of a Boolean expression.
Syntax
IF expression THEN
[ ELSEIF expression THEN ]
[ ELSE ]
END IF
Sub Ausgang4
If Taster4 = 1 Then 'TASTER An
Toggle Led4 'LED An
Locate 1 , 1
Lcd "LED4 - AN"
Wait 1
If Taster4 = 0 Then 'Taster Aus
Toggle Led4 'LED Aus
Locate 1 , 1
Lcd "LED4 - AUS"
End Sub
Ist das denn die richtige richtung
das am anfang des SUB ausgang1licht steht und dann mit der IF taster1 = 1 Then 0 ?
denn er mekert ja wegen des IF..........
Sub syz ...
: Do .....
: : For A= ......
: : : Print A ....
: : Next A
: Loop until
End Sub
Kein Wunder. Du hast ja auch das hier schon oft erwähne End If weg gelassen. So kann Bascom ja garnicht wissen wo was anfängt und wo was aufhört. Die Leerzeichen dienen lediglich der besseren Lesbarkeit (anders als in Python).denn er mekert ja wegen des IF..........
Hmmm n Bleistift hat ne Graphitmiene, leitet also Strom. Und ich hab auch schon mal quietschende Akkus gehört. Technisch gesehen halte ich es also nicht für unmöglichDu kannst ja auch schreiben: "Ich habe die Lampe mit dem Bleistift angeschlossen und sie ist jetzt ganz laut."
Hmmm n Bleistift hat ne Graphitmiene, leitet also Strom. Und ich hab auch schon mal quietschende Akkus gehört. Technisch gesehen halte ich es also nicht für unmöglichDu kannst ja auch schreiben: "Ich habe die Lampe mit dem Bleistift angeschlossen und sie ist jetzt ganz laut."
Aber nettes Beispiel