LED blinkt / gehen nicht aus? Warum?

Gast #4298142
Lesenswert?
• ▲
▼
Hallo,

mein Programm sieht so aus:
1
'1 = GND
2
'2= +5V VCC
3
'3= heizt
4
'4= bereit
5
'5= zu heiss
6
$regfile = "atTiny45.dat"
7
$crystal = 1000000
8
$hwstack = 10
9
$swstack = 10
10
$framesize = 20
11

12

13
Kalt Alias Pinb.1
14
Config Kalt = Output
15

16
Warm Alias Pinb.2
17
Config Warm = Output
18

19
Heiss Alias Pinb.4
20
Config Heiss = Output
21
Dim Wert As Word
22

23

24

25
'Konfiguriert ADC
26
'Config Adc = Single , Prescaler = Auto , Reference = Aref
27
'Start Adc
28
Kalt = 1
29
Warm = 1
30
Heiss = 1
31
Waitms 1000
32
Kalt = 0
33
Warm = 0
34
Heiss = 0
35
Waitms 1000
36
Wert = 1100
37

38

39
Do
40
Wert = 1100
41
 'Wert = Getadc(3)
42
 Waitms 100
43
    If Wert < 754 Then
44
       Kalt = 1
45
       Warm = 0
46
       Heiss = 0
47
    End If
48
    If Wert > 754 And Wert < 943 Then
49
       Kalt = 0
50
       Warm = 1
51
       Heiss = 0
52
End If
53
If Wert > 943 Then
54
Kalt = 0
55
Warm = 0
56
Heiss = 1
57
End If
58
Loop
59

60
End
Der zugehörige Aufbau auf einem Steckbrett funktioniert soweit. Nur: 
Nachdem die "Hochfahrphase alle drei LEDs (die kalt, warm und heiß 
repräsentieren) angeschaltet wurden gehen sie nicht mehr aus. Es handelt 
sich um normale Wald- und Wiesen-Lowpower-LEDs.
Und: Je nach eingestelltem Wert blinkt die richtige LED - aber sie 
blinkt. Ich hätte gerne, dass nur die LED, deren Wertebereich getroffen 
wird statisch leuchtet, sonst keine.

Ich habe mir jetzt schon eine ganze Weile den Kopf zerbrochen. Fehler in 
der Schaltung kann ich ausschließen, da z.B. ein Lauflicht auf exakt 
demselben Aufbau keine Probleme macht.

Der Fehler muss also irgendwo im Programm liegen. Nur finde ich ihn 
nicht.

Danke im Voraus.
#4298156
Lesenswert?
• ▲
▼
Ich hab keine Ahnung von der Programmiersprache, ist das BASCOM??

Aber ich vermute den Fehler hier drin.
1
    If Wert < 754 Then
2
       Kalt = 1
3
       Warm = 0
4
       Heiss = 0
5
    End If
6
    If Wert > 754 And Wert < 943 Then
7
       Kalt = 0
8
       Warm = 1
9
       Heiss = 0
10
End If
11
If Wert > 943 Then
12
Kalt = 0
13
Warm = 0
14
Heiss = 1
15
End If

1
If Wert < 754 Then
2
Kalt = 1
3
Warm = 0
4
Heiss = 0
5
Else If Wert > 754 AND Wert < 943
6
Kalt = 0
7
Warm = 1
8
Heiss = 0
9
Else
10
Kalt = 0
11
Warm = 0
12
Heiss = 1
13
End If
 Ich gebe auf diesen Code keine Garantie, bin mir auch nicht der Syntax 
von BASCOM bewusst. Welche LED leuchtet/blinkt denn? Muss evtl. in 
Bascom auch noch eine Klammer um Wert > 754 AND Wert < 943 wenn mehr als 
1 Vergleich stattfindet?
Gast #4298169
Lesenswert?
• ▲
▼
Danke,

ja, das ist Bascom.
Ich habe den Vorschlag mit der großen If-Schleife aufgenommen und 
eingearbeitet.
Es blinkt aber immer noch.
Aktuell blinkt die LED die warm repräsentiert.
Ändere ich den Wert zum Beispiel auf 1000 blinkt die heiße LED und bei 
500 blinkt die kalte LED. Soweit passt das ja, nur blinken sollte es 
halt nicht...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.