PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port Problem



Jada
05.06.2010, 11:05
Hallo,
ich habe gestern mein RN-Controler Board von Robotikhardware bekommen und wollte eine "if Anweisung" schreiben! Die Anweisung sollte so funktionieren, dass wenn ich einen Taster drücke eine LED leuchtet, jedoch weiß ich nicht auf welchem Port die Taster liegen???
Kann mur bitte jemand helfen???
Oder mir ein beispiel quellcode für bascom schicken??

Vielen Dank

for_ro
05.06.2010, 11:13
Hallo Jada,
dein Problem ist ja weniger das Programm sondern zunächst mal das Hardware Verständnis. Hast du denn keinen Schaltplan von dem Teil?

Jada
05.06.2010, 11:20
Ich blick da nicht durch bin blutiger anfänger!!
Das ist das RN-Board von Robotikhardware!!!
Ein sehr gängiges board würde ich sagen...

Kampi
05.06.2010, 13:14
Schau mal im RN-Wissen nach dem RN-Control. Wenn du das tust wirst du sehen das die 5 Taster alle an einem Port liegen und das du die per ADC abfragen musst. Je nachdem welcher Taster gedrückt ist kommt eine andere Spannung raus.

http://www.rn-wissen.de/index.php/Bild:Rncontrol1.4schaltplan.gif

Jada
05.06.2010, 19:31
Danke,
das die alle auf einem Port liegen das habe ich auch gesehen.
Hast du villeicht eine kleine if-schleife für mich sowas wie: drücke taster 1 leuchtet led 5 oder so...
Wenn du sowas nicht hast kannst du mir bitte so ein kleines programm schreiben wäre voll nett und dir voll dankbar!!!

Vielen Dank

Kampi
05.06.2010, 19:58
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Dim W As Integer
Config Portc.0 = Output
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc

Portc.0 = 1

Do
W = Getadc(7.)
Print W
If W = 340 Then Portc.0 = 0 Else Portc.0 = 1

Loop
End


So. Bei dem Code leuchtet die LED1 sobald du den Taster T1 drückst. Wenn du ihn wieder los lässt geht die LED aus.
Den "Print" Befehl kannste rausmachen. Ich hab den nur benutzt um per TeraTerm den exakten ADC Wert für die If-Abfrage zu bekommen. So kannste dann auch die Werte der anderen Taster ermitteln wenn du sie brauchen solltest.
Einfach das Board per RS232 and en PC anschließen und TeraTerm anmachen und dann einen Taster drücken. Der Zahlenwert ist der Wert der Variable "W".

Jada
05.06.2010, 21:16
Und wie sieht der code aus wenn ich das mit zwei taster und zwei led´s machen will?

Kampi
05.06.2010, 21:32
Dann erweiterst du den Code einfach mit entweder neuen If-Abfragen oder du machst eine Select-Case abfrage, was aber im endeffekt dasselbe ist.

Ich hab hier mal die ADC-Werte der Taster 1-5.
Am besten du probierst es erstmal selber dann bekommst du ein Verständnis dafür.

Taster 1 340
Taster 2 272
Taster 3 203
Taster 4 135
Taster 5 67

Dirk
05.06.2010, 21:43
@Jada:

Die Anleitung zum RN-Control enthält alles, was du brauchst.
Lesen!!! [-X

Z.B. das Beispielprogramm rncontroltest.bas enthält die Funktion Tastenabfrage(), die kannst du in dein Programm kopieren.

So einfach ist das!

Gruß Dirk

Jada
05.06.2010, 22:19
Danke schon jetzt für alles.
Aber noch eine letzte frage wie kann ich programmieren das ich mit einer taste zum beispiel 2 leds ansteuer??
Das klappt noch irgendwie bei mir nicht!!

Jada
05.06.2010, 22:23
Ich hab die cd die eigentlich bei dem Board dabei ist ja nich!!
Kann die mir irgendjemand per e-mail schicken??

Kampi
05.06.2010, 22:28
Also bei mir klappts........ . Schau dir das Programm mal an und grübel etwas dann kommste auch drauf =) . Ist recht einfach.

Richard
06.06.2010, 08:48
Ich hab die cd die eigentlich bei dem Board dabei ist ja nich!!
Kann die mir irgendjemand per e-mail schicken??

Du kannst das bei Robotic Hardware auch runterladen...

Gruß Richard

Jada
06.06.2010, 13:47
Ich kann die beispielprogramme auf robotikhardware zu dem rn-control nicht finden wo soll das denn sein??

oberallgeier
06.06.2010, 15:26
Ich kann die beispielprogramme auf robotikhardware zu dem rn-control nicht finden wo soll das denn sein??Wo das sein soll, weiß ich nicht, aber hier ist ein/das Beispielprogramm in Bascom. (http://www.rn-wissen.de/index.php/RN-Control#Basic_Beispieltestprogramm) Ein Link zum C-Beispiel ist dort auch zu finden.

Jada
06.06.2010, 16:42
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Dim W As Integer
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portc.6 = Output
Config Portc.7 = Output

Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc


Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1

Do
W = Getadc(0.)

If W = 230 Then Portc.0 = 0 Else Portc.0 = 1
If W = 250 Then Portc.1 = 0 Else Portc.1 = 1
If W = 270 Then Portc.2 = 0 Else Portc.2 = 1
If W = 290 Then Portc.3 = 0 Else Portc.3 = 1
If W = 310 Then Portc.4 = 0 Else Portc.4 = 1
If W = 330 Then Portc.5 = 0 Else Portc.5 = 1
If W = 220 Then Portc.6 = 0 Else Portc.6 = 1
If W = 210 Then Portc.7 = 0 Else Portc.7 = 1
Loop
End
Code Tags verwenden ! (PicNick, Mod)
Ist dieser Quellcode gut um mit einer 1n4148 diode temperatur zu messen oder hat jemand ein besserren quellcode?? Oder einige verbesserungsvorschläge...

BMS
06.06.2010, 16:53
Do
W = Getadc(0)

If W > 230 Then Portc.0 = 0 Else Portc.0 = 1
If W > 250 Then Portc.1 = 0 Else Portc.1 = 1
If W > 270 Then Portc.2 = 0 Else Portc.2 = 1
If W > 290 Then Portc.3 = 0 Else Portc.3 = 1
If W > 310 Then Portc.4 = 0 Else Portc.4 = 1
If W > 330 Then Portc.5 = 0 Else Portc.5 = 1
If W > 350 Then Portc.6 = 0 Else Portc.6 = 1
If W > 370 Then Portc.7 = 0 Else Portc.7 = 1
Loop


Änderungen:
= durch > ersetzt
für portc.6 und 7 Zahlenwerte geändert
Punkt bei getadc entfernt

PicNick
06.06.2010, 18:12
@Jada:
1. Beim CONFIG ist folgendes.
Definiert man das ganze Port, dann->
CONFIG PORTC = OUTPUT
wenn einzelne Pins, dann (z.B)
CONFIG PINC.1 = OUTPUT
2. wie BMS schon gesagt hat. Wenn du die GETADC() Wert mit "=" abfragst, wirst du nur zufällig zu einem Ergebnis kommen, weil den Wert grad irgendwo dazwischen liegt.

Jada
06.06.2010, 20:12
Noch kurz ne frage:
Ich habe einen Frahrregler gebaut mit einem tle5205, der über einen pwm und einem i/o ausgang gesteuert wird Wie geht das?? Hat jemand ein beispiel quellcode??

kalletronic
07.06.2010, 14:23
Hi, das forum hat ne ganz tolle SUCHFUNKTION, und wie das Wort schon sagt kann man damit das Forum Durchsuchen!!! einfach mal ausprobieren, klappt super!!

Jada
11.06.2010, 16:48
Hallo,
Ich bitte , dass mir jemand eine firmware in bascom schreibt für das rn-key. Die firmware soll nur können das man das rn-key sowie das rn-control aneinanderschließen kann und per rs232 eine text oder werte ausgeben kann.
Vielen Dank