Touchpoint programmieren

Gast #1974367
Lesenswert?

Hey Leute,
ich komm hier grad irgendwie nicht weiter....
Und zwar will ich eigentlich nur eine Art Touchpoint programmieren.
D.h. ich habe einen IR-Sensor an einem Analogeingag vom uC. Wenn ich den 
Touchpoint nun berühre soll ein Pin angehn....nochmal berühren = aus.
Hier mal mein Quellcode:

Config Porta = Input
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Off
Start Adc
Do

If Getadc(0) >= 200 And Pinb.0 = 0 Then
Pinb.0 = 1
End If

If Getadc(0) >= 200 And Pinb.0 = 1 Then
Pinb.0 = 0
End If
Loop
End


Also eigentlich nicht viel was man falsch machen kann^^
Hardwaretechnisch ist alles ok, denn wenn ich statt Pinb.0 den Ausdruck 
PORTB=&B00000001 schreibe und noch ne while Schleife setze funzts 
perfekt. Da ich aber noch mehrere Touchpoints anschließen 
muss....brauche ich es ähnlich wie oben.
Danke im vorraus
Fabian
Persönliche Seite #1974527
Lesenswert?

Fabian schrieb:
> If Getadc(0) >= 200 And Pinb.0 = 0 Then
> Pinb.0 = 1
> End If
>
> If Getadc(0) >= 200 And Pinb.0 = 1 Then
> Pinb.0 = 0
> End If
> Loop
> End
>
>
> Also eigentlich nicht viel was man falsch machen kann^^

Doch.

Sieh Dir einfach mal an, was passiert, wenn Dein (falsches*) Pinb.0 = 1 
das erste Mal ausgeführt wird.

Sofort danach wird ein weiteres mal der ADC abgefragt und wenn Pinb.0 == 
1 ist, Pinb.0 auf 0 gesetzt.

Und sofort danach wird wieder der ADC abgefragt und wenn Pinb.0 == 0 
ist, es wieder auf 1 gesetzt.

Sprich: Solange der ADC einen Wert größer als 199 liefert, oszilliert 
die Angelegenheit mit durch die Abtastrate des ADC bestimmter Frequenz.

Du hast aber wohl was anderes vor ...

*) Sieh Dir den Einwand von "Skriptkiddy" an

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