dual led mit bascom

Gast #968991
Lesenswert?

Hallo.
sitze hier schon seit paar Stunden an meinem Problem.
eigentlich ziehmlich einfach alles, klappt aber komischer weise nicht.
folgendes:
if-then schleife.
wenn am PORTD.0 5Vanliegen, soll die rot leuchten, wenn 0V dann Grün.
die Led hat 2 Anschlüsse. wenn man sie vertauscht, wechseln sich die 
zwei Farben.
mein Quellcode:

$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Input
Config Pinb.1 = Output
Config Pinb.2 = Output

A:
Portb.1 = 1
Portb.2 = 0
B:
Portb.1 = 0
Portb.2 = 1

Do

If Portd.0 = 1 Then
Goto A
Else
Goto B
End If

Waitms 50
Loop

End



klappt nicht. bleibt immer grün.
nächster versuch:


Do

If Portd.0 = 1 Then
Portb.1 = 1
Portb.2 = 0
Else
Portb.1 = 0
Portb.2 = 1
End If

Waitms 50
Loop

geht auch nicht. bleibt wieder grün.

was kann das sein? habe ich was vergessen?
Danke im Voraus
Gast #969009
Lesenswert?

wie steuerst du die Duo-Led an?

Du hast doch 2 Anoden (Grün/Rot) und eine gemeinsame Anode..

Du willst bei 5 V (also "High") dass die LED grün leuchtet und bei 0 V 
(also "low") rot.

Habs mir grad mal aufgezeichnet... du brauchst im vor der roten Anode 
einen NPN transistor.. bei signal HIGH auf basis schaltet der durch und 
sperrt bei LOW...

vor der Anode der grünen LED brauchst du einen PNP, der schaltet bei 
SIGNAL low auf BASIS durch und sperrt bei HIGH..

auf basisstrom aufpassen...

so kommst du mit einem Pin aus (2 transistoren, n paar widerstände) und 
bei HIGH leuchtet rot und bei LOW grün...

du brauchst natürlich intern oder extern einen Pull-Up auf 5 V für 
diesen Ausgangs-Pin.
(Firma: Frickelhauptquartier) #969015
Lesenswert?

Hab da auch noch nicht wirklich Ahnung von, aber:

-I can not set a pin high or low

-I can not read the input on a pin

 steht in der Hülfe (dafür isse da!)

oder so:

For example :

DDRB = &B1111_0000 ' upper nibble is output, lower nibble is input

SET PORTB.7 'will set the MS bit to +5V

RESET PORTB.7 'will set MS bit to 0 V





To read a pin :

Print PINB.0 'will read LS bit and send it to the RS-232



You may also read from PORTx but it will return the value that was last 
written to it.





To read or write whole bytes use :

PORTB = 0 'write 0 to register making all pins low

PRINT PINB 'print input on pins





MFG
Gast #969024
Lesenswert?

jetzt verwirrt den armen kerl doch nicht,
er schreibt ja oben das die LED nur 2 anschlüsse hat, also farbwechsel 
bei polaritätswechsel.

probier mal das:

$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Input
Config Portb.1 = Output    'Portb.1 statt Pinb.1
Config Portb.2 = Output    'dito

Do

If Pind.0 = 1 Then         ' Pind.0 statt Portd.0
Portb.1 = 1
Portb.2 = 0
Else
Portb.1 = 0
Portb.2 = 1
End If

Waitms 50
Loop
Gast #969038
Lesenswert?

LACH

da war ich wohl ein bisschen vorlaut..

ich mach das immer so:

1. pin auf low
2. pull up (enable)
3. direction einstellen (input/output)
4. pin auf gewuenschten logik-pegel..

es is immer besser, erst den pin auf low zu setzen, bevor man die 
richtung wechselt..

joa und ansonsten halt noch drüber im klaren sein, ob das signal low 
oder high aktiv wird...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren