Erledigt Wie mache ich das das ein bestimmter LCD TEXT angezeigt wird

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 :ciao:
 
Hi Fred,

Muss 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.
:confused: also das hab ich noch nie gehabt. Hab ich auch noch nie von gehört :confused:
:confused: Das muß wohl an der Bedienung des Forums oder an der Software des PC liegen. :confused:
Im FAQ-Bereich hab ich das Hochladen von Anhängen genau beschrieben und wie man Bilder einbindet.
Plugins im Browser machen auch manchmal Probleme wenn sie irgendwas blocken.

Gruß
Dino
 
Hi,

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......

also kurz ausgedrückt, 4 Taster für 4 Ausgänge schalten wobei die Taste durch Software zum Drucktaster wird. Einmal drücken Einschalten, nochmal drücken wieder ausschalten. Zusätzliche Info auf nen LCD bringen was der aktuelle Tastendruck nun ausgelöst hat.

- 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.

Das sind die Sachen die du für die Funktion benötigst. Wenn ich es noch weiter beschreibe, dann könnte ich auch gleich das ganze Programm reinsetzen. Dabei würdest du aber nichts lernen sondern nur noch in den Atmel brennen. Darum also so.

Drumherum mußt du dann natürlich noch wie schon gemacht die Ports und LCD initialisieren usw. Variablen benötigst du für meine Umsetzung glaube ich überhaupt keine.

Das ganze Programm sollte so in etwa mit 100 Zeilen hinkommen. Also etwa eine DIN-A4-Seitenlänge.

EDIT: Ich habs mal schnell zusammengestrickt (ohne Compile-Versuch). Macht zusammen 60 Zeilen ohne eine einzige Variable.

Gruß
Dino
 
lcd text

Hi Dino und alle Andere und forum gemeinde
habe es ma versucht nu ist ein fehler in Bascom

Unbenannt.JPG]

und dieser code habe es versucht
Code:
'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

ist das soweit richtig oder ist das schon auf einen guten weg???
mich stört der fehler sehe oben in diesen beitrag......

Gruß Thorsten Sch.
 
Hallo,

ich programmiere zwar nicht mit Bascom, bezüglich des Fehlers kann ich aber vielleicht trotzdem helfen.

Bascom wird nicht erlauben, dass Variablen, Konstanten und Label mit Ziffern anfangen.

Dies wird also nicht funktionieren ...
Code:
Declare Sub 12volt

Dirk :ciao:
 
Bascom wird nicht erlauben, dass Variablen, Konstanten und Label mit Ziffern anfangen.

Dies wird also nicht funktionieren ...
Code:
Declare Sub 12volt

Dirk :ciao:
Das ist schon ok.


@Thorsten
Schau dir mal die Namen der Funktionen im Declare, beim Aufruf und nach dem SUB an. Die stimmen nicht überein, deshalb die Fehlermeldungen.

Dies hier
Code:
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
muss so aussehen
Code:
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
Bei den anderen Tastern dann entsprechend.
 
Damit wäre die IF-Then-Else syntaktisch korrekt. Warum das CLS nur im ELSE-Zweig sein soll, ist 'ne andere Sache. Überhaupt wäre es besser (schneller), eventuell vorhandenen Text einfach u überschreiben - ggf mit zusätzlichen Leerzeichen.

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?

Nachtrag: Was soll das Return am Ende? Hier sollte es nie genutzter Code sein, aber generell würde Return 'n Word vom Stack nehmen, und dahin springen - also ein nicht nachvollziehbares Fehlerbild, wenn nicht immer vorher die entsprechende Adresse auf den Stack gepackt wird, oder?

Das nötige Return from Subroutine steckt doch bereits im End sub oder was macht dieser Befehl? (außer eventuell zusätzlich irgendwelche lokalen Variablen zu verwalten (Hochsprache))

Und was meinst Du mit dem "von vorne Starten"-Kommentar?
Du hast als Hauptschleife 'ne Do-Loop-Schleife ohne Abbruchbedingung. Die läuft also endlos. Nur, wenn einer der Debounce's zuschlägt, wird die entsprechende Subroutine abgearbeitet - ist die durch, schickt end sub das Programm wieder zurück in die Hauptschleife.
 
Hi Thorsten,

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?

Aus meinem Beitrag #43
- 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.
Da hab ich die Antwort geschrieben. Lies es nochmal genau durch.

Gruß
Dino
 
Psst!!

Ja, den Hinweis wollte ich Ihm aber noch nicht geben - ein bisschen sollte er selbst nochmal grübeln...
 
Ich geh mal schnell den Quellcode nochmal durch ...

Code:
'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 =====
OK, soweit ja kein Ding.

Hier ist aber der erste Bock ...
Code:
'==== 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 ====
Also mal die Pins sortieren. Scheint etwas viel Copy/Paste gewesen zu sein ohne es dann anzupassen. Mache ich ja auch gerne. Man ist ja schreibfaul :rolleyes:. Man darf eben nur nicht vergessen die Zeilen danach entsprechend zu ändern.


Code:
'==== 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 ====
Gleiches Spiel wie bei den Ausgängen. Einmal geschrieben, dann kopiert und nicht angepaßt. Das sind Fehler die man sich sparen kann. Da mußt du aufmerksamer werden.


Code:
'==== 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 ====
Der LCD-Teil sollte passen.


Code:
'-----------------------------
'====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<
Außerdem ist es eine sehr schlechte Angewohnheit Prozeduren, Variablen, Sprunglabel, ... mit einer Ziffer anfangen zu lassen. Das kann funktionieren aber es muß nicht. Gewöhn es dir besser wieder ab. Sowas tut man nicht.


Code:
'-----------------------------
'====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====
Sieht aber sonst auf den ersten Blick OK aus.

Hier nehme ich mal nur die erste Sub. Sind ja soweit alle ähnlich oder gleich.
Code:
'=== 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 ====

... und noch Restkram ...
Code:
'==== RETURN STARTE Von Vohrne ====
Return

Dreimal beim Testdurchlauf durch den Compiler ne Fehlermeldung wegen falsch geschriebener Sub-Namen :flute:

ist das soweit richtig oder ist das schon auf einen guten weg???
mich stört der fehler sehe oben in diesen beitrag......
Frag nicht ob es richtig ist. Compilier es, schieb es auf nen Testaufbau und sieh dir an was passiert.
Damit kommst du am schnellsten weiter. Du siehst sofort was funktioniert und was nicht. Wenn du ne Taste drückst und es passiert etwas unerwartetes, dann versuch diese Reaktion im Programm zu finden und zu überlegen warum er an die Programmstelle gesprungen ist. Aktion und Reaktion. Das ist so als wenn du irgendwo anpackst und dir die Finger verbrennst. Dann kann man daraus schließen das da wohl was heißes war. Man muß nur noch rausbekommen warum es heiß war.

Ich hab auch grade deinen Fehler gefunden den Bascom rausschmeißt. Ein kleiner gemeiner Fehler :p :rolleyes: Sieh dir die Zeile die da angemeckert wird gaaaaanz genau an. Dann wirst du es erkennen.

Was mir noch aufgefallen ist:

Wenn die Namen der Subs endlich passen ... Danach wirst du weitere Fehlermeldungen wegen deinen Subs bekommen. Da sind Befehlszeilen falsch geschrieben.

Dann sind in den Subs noch Verschachtelungen oder Befehlsabfolgen falsch. Wie mans grade auslegen will.

Aber der Lösungsweg geht wenigstens in die richtige Richtung. :cool:

Gruß
Dino
 
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.
Zum Beispiel:
Code:
Sub tuwas
    for i = 0 to 9
        if i = 9 then
            ...
        else
            ...
        end if
    next
end sub
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 :)
Wäre es jetzt nicht Bascom sondern Python würdest du allein schon wegen den unterschiedlichen Einrückungen große Probleme bekommen. Von daher besser sofort angewöhnen :)
 
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 :)
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.

So muß man in der ganzen Code-Schlange erstmal suchen wo etwas anfängt und wo etwas aufhört. Man muß also erstmal die Zeilen lesen. Mit Leerzeilen erkennt man das ohne zu lesen sehr schnell an der optischen Struktur.

Stell dir mal ein Programm mit 2000 Zeilen oder mehr vor das ohne Trennung hintereinander weg geschrieben ist. Da wirst du irre wenn du einen speziellen Bereich (zB ne Sub) suchst. Mit 3-4 Leerzeilen zwischen den Funktions-/Programmblöcken kannst du schnell über den Quelltext weg scrollen und erkennst ohne zu lesen wo eine neue Sub anfängt.

Gruß
Dino
 
lcd text

Hallo liebe Forum Gemeinde

Hier mal etwas aufgeräumt und platz gemacht in den zeilen und die port ordendtlich benannt, aber immer noch der gleiche mit mist
mit der IF else anweisung....

Hier mal der code:
Code:
'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

Mit freundtlichen Grüßen
Thorsten Sch.
 
Hi Thorsten,

der Quellcode ergibt dann folgende Fehlermeldung ...
Code:
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.

Au man ... da du seit drei Jahren hier im Forum angemeldet bist und wohl dann auch mindestens so lange Bascom machst, schiebe ich das jetzt mal auf ? Flüchtigkeitsfehler ? :rolleyes: :vollkommenauf: (ich hoffe es)

... sonst geh mal mit dem Cursor auf das IF und drück mal die Taste F1 auf deiner Tastatur. Dann erscheint folgendes ...

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

Alles eckigen Klammern muß man nicht verwenden. Wenn man es aber verwendet dann muß es auch so eingegeben sein. Da die Zeilen ...
IF expression THEN
... und ...
END IF
... nicht in eckigen Klammern sind müssen die vorhanden und auch genau so eingegeben sein.
Wobei "expression" natürlich deine Bedingung/Vergleich ist.

Wenn der Fehler weg ist, dann verspreche ich dir aber auch schon den nächsten Fehler mit IF-THEN und mit den SUBs mit der Verschachtelung und weiteren "Flüchtigkeitsfehlern". :p

Hät ich beinahe übersehen ... in der Definition der Ausgangsports ist auch noch nen Bock drin.

Gruß
Dino
 
lcd text

Hi Dino und alle Anderen In Forum

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..........
Hier ein kleine beispiel:
Code:
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

Mit Freundtlichen Grüßen
Thorsten Sch.
 
Hallo Thorsten,

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..........

das "meckern" hat aber nix mit der Programmlogik zu tun sondern mit der Syntax der Befehle.

Du kannst ja auch schreiben: "Ich habe die Lampe mit dem Bleistift angeschlossen und sie ist jetzt ganz laut."

Die Wörter sind richtig geschrieben und der Satzbau paßt wohl auch soweit (also Bascom meckert nicht).
Trotzdem ist der Satz aber totaler Schwachsinn (also die Logik ist total vorn Ar...) :p

Bascom überprüft nicht ob dein Programm einen Sinn macht. Es überprüft nur ob die Befehle richtig verwendet werden und geschrieben sind. Nicht mehr und nicht weniger. Ob dein Programm einen Sinn macht das mußt du schon selber überprüfen.

Also der Sinn (die Richtung) paßt soweit. Das Ziel ist da aber noch nicht erreicht.

Die Verwendung der Befehle, die Syntax paßt aber noch nicht sonst würde Bascom ja nicht mehr meckern. Warum Bascom meckert würdest du aber merken wenn du deinen Programmtext noch stärker mit eingerückten Zeilen / Verschachtelungen / Einzügen formatieren würdest. Die Programmzeilen die zusammengehören müssen genau die selbe Anzahl an Leerzeichen vorne dran haben. Zum Beispiel ...
Code:
Sub syz ...
:   Do .....
:   :   For A= ......
:   :   :   Print A ....
:   :   Next A
:   Loop until
End Sub
(Die Doppelpunkte sind nur zur Darstellung der zusammengehörenden Befehle)
Du siehst auf einen Blick welche Befehle zusammengehören und ob ein Befehl fehlt und dadurch die Befehlssyntax nicht paßt. Außerdem siehts du auch auf einen Blick was wie ineinandergeschachtelt ist und in welcher Reihenfolge abgearbeitet wird.

Gruß
Dino
 
denn er mekert ja wegen des IF..........
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).

Du 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öglich :D
Aber nettes Beispiel :D
 
Hi Tommy,

Du 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öglich :D
Aber nettes Beispiel :D

... dann schreib ich eben: ...
"Ich habe die Lampe mit der Weinglas angeschlossen und sie erzählt mir jetzt eine Geschichte."
:aetsch: :hahaha: :girl_wacko: ist dann noch größerer Blödsinn aber von der Syntax richtig :cool:

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)