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
Frits Kieftenbelt
Ohm sweet Ohm | www.picbasic.nl
@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)