Ik ben bezig met een eigen script voor een robot nu lukt het maar niet. Ik heb het volgende script:


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Rene Biemans                                      *
'*  Notice  : Copyright (c) 2005 ReneBiemans.nl                 *
'*          : All Rights Reserved                               *
'*  Date    : 14-11-2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                  *
'*          :                                                   *
'****************************************************************
;instellen pic gegevens
Device 16F628A         ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE       ;Alle ingangen digitaal

;instellen poorten
TRISA = %00000000      ;Poort A uitgang maken
TRISB = %11111111      ;Poort B ingang maken

;poortnamen van motoren
Symbol MR1 = PORTA.0   ;motor rechts naar voren
Symbol MR2 = PORTA.1   ;motor rechts naar achteren
Symbol ML1 = PORTA.2   ;motor links naar voren
Symbol ML2 = PORTA.3   ;motor links naar achteren
;poortnamen van ledjes
Symbol L1 = PORTA.4	   ;groen ledje
;poortnamen van sensoren
Symbol SR = PORTB.0	   ;sensor rechts 
Symbol SL = PORTB.1	   ;sensor links
;woorden aanmaken
Symbol AAN = 1		   ;aan = aan voor led
Symbol UIT = 0		   ;uit = uit voor led

;variabelen aanmaken
Dim SensorL As Bit
Dim SensorR As Bit
;main loop controleren sensoren
Main:
L1 = AAN
;Controleren als sensor rechts is ingedrukt
If SR = 0 Then		  ;Zo nee motor links naar voren draaien
   MR1 = AAN
   MR2 = UIT
EndIf
;Controleren als sensor links is ingedrukt
If SL = 0 Then	 	  ;Zo nee motor links naar voren draaien
   ML1 = AAN
   ML2 = UIT
EndIf 

;Controleren als sensor rechts is ingedrukt
If SR = 1 Then	 	  ;Zo ja motor naar achteren draaien
   MR1 = UIT
   MR2 = AAN
   ML1 = UIT
   ML2 = AAN
   SensorR = 1
EndIf
;Controleren als sensor links is ingedrukt
If SL = 1 Then	 	  ;Zo ja motor naar achteren draaien
   MR1 = UIT
   MR2 = AAN
   ML1 = UIT
   ML2 = AAN
   SensorL = 1
EndIf

If SensorR = 1 Then	  ;Sensor ingedrukt?
   DelayMS 100 		  ;Dan wachten zodat hij genoeg naar achteren is
   MR1 = AAN
   MR2 = UIT
   ML1 = UIT
   ML2 = UIT
   DelayMS 100		  ;Wachten om draai te maken
   SensorR = 0
EndIf
If SensorL = 1 Then	  ;Sensor ingedrukt?
   DelayMS 100 		  ;Dan wachten zodat hij genoeg naar achteren is
   MR1 = UIT
   MR2 = UIT
   ML1 = AAN
   ML2 = UIT
   DelayMS 100		  ;Wachten om draai te maken
   SensorL = 0
EndIf
GoTo Main
L1 = UIT		      ;Zat groen ledje uit
End

Ik heb inplaat van de motortjes nu ledjes vanaf de poorten naar de plus lopen. En als sensor nog helemaal niks. Ik programeer met ic prog met de instellingen die in het scrip staan. Maar de PIC doet helemaal niks wel als ik een ander script er op programeer.

Wat is hier fout aan?

Met Vr. Gr. R.Biemans

Op 14 november 2005 08:51:41 schreef reneonline:



;poortnamen van motoren
Symbol MR1 = PORTA.0   ;motor rechts naar voren
Symbol MR2 = PORTA.1   ;motor rechts naar achteren
Symbol ML1 = PORTA.2   ;motor links naar voren
Symbol ML2 = PORTA.3   ;motor links naar achteren
;poortnamen van ledjes
Symbol L1 = PORTA.4	   ;groen ledje
;poortnamen van sensoren
Symbol SR = PORTB.0	   ;sensor rechts 
Symbol SL = PORTB.1	   ;sensor links
;woorden aanmaken
Symbol AAN = 1		   ;aan = aan voor led
Symbol UIT = 0		   ;uit = uit voor led

;variabelen aanmaken
Dim SensorL As Bit
Dim SensorR As Bit

Wat is hier fout aan?

Met Vr. Gr. R.Biemans

Om te beginnen zou ik de pins op de volgende manier benoemen:

;poortnamen van motoren
MR1 VAR PORTA.0 ;motor rechts naar voren
MR2 VAR PORTA.1 ;motor rechts naar achteren
ML1 VAR PORTA.2 ;motor links naar voren
ML2 VAR PORTA.3 ;motor links naar achteren
;poortnamen van ledjes
L1 VAR PORTA.4 ;groen ledje
;poortnamen van sensoren
SR VAR PORTB.0 ;sensor rechts
SL VAR PORTB.1 ;sensor links
;woorden aanmaken
AAN VAR bit ;aan = aan voor led
HIGH AAN
UIT VAR bit ;uit = uit voor led
LOW UIT

;variabelen aanmaken
Dim SensorL As Bit
Dim SensorR As Bit

wordt :

;variabelen aanmaken
SensorL VAR Bit
SensorR VAR Bit

Raadpleeg mischien ook eens de helpfile of handleiding indien het nog niet moest werken, dit zijn de fouten die me onmiddelijk in het oog sprongen.

In de handleiding vond je bvb.


SYMBOL provides yet another method for aliasing variables and constants. It is included for BS1 compatibility. SYMBOL cannot be used to create a variable. Use VAR to create a variable.

Example

SYMBOL lion = cat ' cat was previously created using VAR
SYMBOL mouse = 1 ' Same as mouse con 1

Steven

@reneonline:
Je moet niet het programma in 1 keer schrijven en dan raar opkijken als het niet werkt.
Schrijf je programma beetje voor beetje en test het steeds weer uit.
Als hij het meteen niet doet heb je nog maar een klein programma en kun je de fout eerder vinden.
Als hij het later "opeens" niet meer doet, dan weet je dat de fout zit in het laatst toegevoegde programmadeel.
Dus... even opnieuw in gedeelten programmeren.

@paxmowa:
VAR kan wel worden gebruikt maar is eigenlijk niet officieel PIC Basic maar is toegestaan om compatible met de Basic Stamp te blijven.
Als je nooit met Basic Stamp hebt geprogrammeerd maar rechtstreeks in PIC Basic, dan zou ik VAR niet gebruiken.

Naar mijn mening is VAR wel 100% picbasic en is symbol juist toegevoegd om compatibel te zijn met de basic stamp, zoals te zien is in het stukje tekst uit de handleiding van picbasic.

Steven

quote melabs:

Variables are where temporary data is stored in a PicBasic Pro program. They are created using the VAR keyword. Variables may be bits, bytes or words. Space for each variable is automatically allocated in the microcontrollers RAM by PBP. The format for creating a variable is as follows:

end quote melabs

vb.


LEDtwee VAR PORTA.0     ' LEDtwee is aangesloten op PORTA.0

LEDaanuit SYMBOL LEDtwee     ' LEDaanuit is een andere naam voor LEDtwee (een alias voor LEDtwee)