PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bogenampel mit Bascom, Controller macht garnichts



-Niclas-
24.06.2007, 14:41
Hallo Robotiker,

ich bin uC Einsteiger, hab kaum Erfahrung mit Basic. In Delphi hingegen bin ich relativ fit und hab das Problem da auch schon umgesetzt.
Ich vermute dass sich in meinem Code vllt ein formaler Fehler eingeschlichen hat den ich nicht finde.
Wär nett wenn ihr mal drüberschauen könntet, warscheinlich fällt euch sofort was ins Auge.
Ich hab mit gleichen Compiler-Einstellungen ein anderes selbstgeschriebenes Programm übertragen, das klappt wunderbar.

Was das Programm tun soll:
Es soll eine Ampel gesteuert werden die den Schiessablauf bei einem Bogenturnier regelt. Nach bestimmten Zeiten wird geschaltet, es kann aber auch duch drücken einer Taste weiter geschaltet werden, falls alle Schützen vorzeitig fertig sind.

Vom Compiler angezeigte Fehler:
Error: 242 Line: 48 Source cariable does not match target variable[0]
Error: 35 Line: 50 3 parameters expected
Error: 44 Line: 50 2 variables expected
Error: 124 Line: 0 LOOP expected

Also nun mein Quelltext:


'Bogenampel von Niclas Müller (SC Hahnheim)
Declare Function Tastenabfrage() As Byte


$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32



Dim Taste As Byte
Dim Ton As Integer
Dim I As Integer
Dim Zustand As Word
Const Wartent = 5
Const Gruent = 10
Const Gelbt = 5

$crystal = 16000000 'Quarzfrequenz
$baud = 9600


Config Portc = Output
'For I = 0 To 7
' Portc.i = 1
'Next I
Rot Alias Portc.0
Gelb Alias Portc.1
Gruen Alias Portc.2
Config Portd.7 = Output
Config Adc = Single , Prescaler = Auto
Config Porta.7 = Input



Do
Rot = 0
Gelb = 1
Gruen = 1
Taste = Tastenabfrage()
If Taste = 1 Then
Waitms Wartent 'Warten
Rot = 1
Gruen = 0
Do 'AB schiesst
Waitms 100
Taste = Tasetnabfrage() 'Line 48

If I =(gelbt * 10) 'Line 50
Then
Gruen = 1
Gelb = 0
End If

If Taste = 1
Then
I =(gruent * 10)
End If
I = I + 1
Loop Until I >(gruent * 10)
Gruen = 1
Gelb = 1
Rot = 0
Waitms Wartent 'Warten
Rot = 1
Gruen = 0

Do 'CD schiesst
Waitms 100
Tast = Tasetnabfrage()

If I = Gelbt * 10
Then
Gruen = 1
Gelb = 0
End If

If Taste = 1
Then
I =(gruent * 10)
End If
I = I + 1
Loop Until I >(gruent * 10)
Rot = 0
Gruen = 1
Gelb = 1

Loop
End

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Start Adc

Ws = Getadc(7)
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton
End If
End Function

Dirk
24.06.2007, 17:38
Hallo -niclas-,

solche Sachen wie "Loop Until I >(gruent * 10)" kriegt Bascom nicht hin.

Da geht nur "Loop Until I > Newvar", nachdem du Newvar = gruent * 10 gesetzt hast.

Gruß Dirk

Torsten_G
24.06.2007, 18:23
Hi,

wie Dirk schon sagt, arbeite mit Zwischenvariablen für die Abfragen, außerdem schreib das "Then" in die gleiche Zeile wie das "IF".

Und dann hast Du bei "Tastenabfrage" noch ein paar Schreibfehler im Programm, z. B. hier:



Do 'CD schiesst
Waitms 100
Tast = Tasetnabfrage()

If I = Gelbt * 10


Es gibt werder "Tast" noch "Tasetnabfrage" in Deinem Code...

Grüße

Torsten

dunking
24.06.2007, 18:31
Hi,
und sorry passt jetzt net zum Thema kann dir au net weiterhelfen da ich auch noch Anfänger bin. Aber ich hab da grad was von Bogentunier gelesen und da ich auch im Bogensport tätig bin wolt ich gleich mal fragen wenn es recht ist von wo (welcher Verein) du kommst.

mfg dunking

-Niclas-
24.06.2007, 19:54
Vielen Dank Torsten und Dirk!
Mein Controller tut jetzt was. Ich denke alle weiteren Probleme sind inhaltlicher Natur.

@dunking
Ich komm vom SC Hahnheim, ist in Rheinland-Pflaz bei Mainz. Ich schiesse U20 Compound (habs in der Halle zum Landesmeister DSB geschafft). Schiesst du auch?

gruß
niclas

dunking
24.06.2007, 20:26
hi
ja ich auch aber bissle entfernt "SV Ittersbach" in der nähe von Pforzheim.
Aber Recurve.

-Niclas-
29.06.2007, 18:08
Nabend,

auf meinem Entwicklungsboard RN-Control läuft die Bogenampel jetzt wie sie soll.
Der nächste Schritt wird sein die Schaltung mit einem Atmega 32 auf eine Lochrasterplatine aufzubauen (später will ich sie vllt. ätzen, wenn ich Eagle im Griff habe oder mir Sprint-Layout zugelegt habe).

Dazu hab ich noch eine Frage:
Wie finde ich einen Transitor der für mein Zwecke geignet ist?
Der Controller soll den Transitor schalten und der wiederum meine Ampel (ca 1,5A). Ich denke da an ein NPN-Transitor, nur wie find ich den passenden?

danke an alle helfenden

gruß
niclas