Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.
Hinweis kann nach Kenntnisnahme deaktiviert werden!
Zeig doch nochmal deinen ganzen Code her, der den Fehler verursacht.
So dass man den selber mal compilieren kann.
dann findet sich das Problem wahrscheinlich recht schnell.
falls es überlesen wurde, hier nochmal:
Da fehlt ein End If vor dem Debounce
unabhängig davon, ob es noch andere Fehlermeldungen gibt.
Das End If vor dem letzten Return ist auch falsch.
Wenn du nicht das ganze Programm postest, dann können wir die anderen Fehler nicht sehen.
Dein nachträglich "Line 155" ist auf jeden Fall falsch.
Deklariere mal KEYPRESSED nicht als Sub(Declare Sub keypressed entfernen.)
Mach aus keypressed einfach ein normales UP.
Also Debounce Pinb.3 ,0,keypressed,Sub
Und dann an Stelle von Sub keypressed einfach Keypressed :
das UP dann mit Return abschließen.(nicht mit End Sub !!!!!)
When you specify the optional parameter SUB, a GOSUB to label is performed instead of a GOTO.
so steht es in der Hilfe von Debounce. Ich könnte mir vorstellen, das deine declarierte Sub das Problem
ist, mit dem Debounce nicht klar kommt. Probiers mal.
Das End If vor dem letzten Return ist auch falsch.
Ist ein wenig verwirrend: Immer wenn nur ein Befehl durch das if ausgeführt werden soll kann er hinter dem then stehen und braucht(darf) kein End If bekommen.
würde es so geschrieben:
If Zeit > 0 Then
Decr Zeit
müsste doch eins dahinter.
Leider übernimmt der Editor des Forums die Einrückungen nicht sonst wäre es ersichtlicher.
Der Compiler meldet die if/loop/case Fehler am Ende des Codes weil er nicht wissen kann wo die Schleife/Abfrage zu ende sein soll.
Der Bascom Editor kann die Schleifen farblich verbinden was recht nützlich wird wenn sie über viele Zeilen gehen:
If Zeit = 0 And Hupe = 1 Then I. If Zeit = Zeit Then 'Nur zur Demo I.I .nop I. End If I. Portd.5 = 1
Else I. Portd.5 = 0
End If
(Die Punkte nur weil keine leerzeichen dargestellt werden)
Beim Schalten eines oder mehrerer Schalter (Alarm) soll die jeweilige LED
'blinken,gleichzeitig soll ein Warnton ertönen.
Im Beitrag Nr. 5 hast du angegeben, dass die LED's im Alarmfall blinken sollen.Das fehlt in deinem Code noch.
das mit dem Blinken hatte ich mal vor. Ist aber nicht notwendig.
Ein anderes Problem habe ich aber doch noch.
Das Einschalten der Hupe. Auf Portd.5 habe ich beim Einschalten kein klares high sondern 2,28 Volt mit 4400 Hz.
Wie kann ich das umgehen und ein klares high bekommen?
Das hatte ich in meiner Schaltung auch so vorgesehen. Der Transistor sollte ein Relais steuern. Transistor war der BC 547B.
Widerstand hatte ich berechnet mit 66 K Ohm Relais 2880 OHm an 24 Volt.
Wollte aber nicht klappen.
Das hatte ich in meiner Schaltung auch so vorgesehen. Der Transistor sollte ein Relais steuern. Transistor war der BC 547B.
Widerstand hatte ich berechnet mit 66 K Ohm Relais 2880 OHm an 24 Volt.
Wollte aber nicht klappen.
Ja das klappt so auch nicht.
Du sagst ja, da kommen 4kHz raus. Das Problem muss erst gefunden werden. Da liegt wohl noch ein Software-Problem vor.
Zum anderen ist dein Vorwiederstand zu hochohmig.
Nach Datenblatt BC547B ist ein hfe von 200 bis 450 angegeben. Daher solltest du von der schlechtesten Verstärkung ausgehen. Also vom hfe=200.
Dein Kollector-Strom beträgt bei 2880 Ohm und 24V = 8,33mA, damit brauchst du
mindestens einen Basisstrom von IC / hfe = 37,9µA. Damit würde der Transistor gerade so mal durchschalten.
Deswegen nimmt man in der Praxis einen Übersteuerungsfaktor von 5-10, damit der Trasistor sauber schaltet.
Also bauchen wir bei Übersteuerungsfaktor 5 = 5x IB = 189µA.
Am Vorwiderstand fallen dann 5V - 0,7V (UBE) ab. Das ergibt einen Vorwiderstand mit 22,7k Ohm (4,7V/198µA).
Man liegt mit 22kOhm also recht gut
Bei dir kommt hinzu, dass du kein permanentes Signal raus gibst.
Also Vorwiderstand ändern und Fehler im Code finden, dann klapps.