Ik wil met één druk op de knop dat er twee uitgangen gaan 'toggelen'.

Het probleem is dat het alleen werkt zolang de schakelaar is ingedrukt. Ik wil dat de uitgangen blijven 'toggelen' tot dat er een andere schakelaar wordt ingedrukt.

Verschillende dingen geprobeerd (repeat-until, while-wend, enz) maar het lukt niet echt.

If knop = 1 then toggle portb.1

ect.

Een variabele aanmaken die de toestand van de knop onthoud?
Buttonpressed = 1 of 0 bijvoorbeeld en dit goed bijhouden in je programma.
Verder nog een while lus en wat andere code. Hopelijk heb je hier wat aan.

Op 1 november 2007 00:34:59 schreef Ibanez:
If knop = 1 then toggle portb.1

ect.

Ja klopt maar ik wil dat de uitgang op toggle blijft ook als ik de knop weer loslaat

Op 1 november 2007 00:35:35 schreef JuuL:
Een variabele aanmaken die de toestand van de knop onthoud?
Buttonpressed = 1 of 0 bijvoorbeeld en dit goed bijhouden in je programma.
Verder nog een while lus en wat andere code. Hopelijk heb je hier wat aan.

Ja nu nog dat stukje code

[Bericht gewijzigd door Henry S. op (42%)]

Iets als dit zal wel gaan werken denk ik.


buttonpressed=0

start:

if s1=low then buttorpressed=1 

while buttonpressed = 1 
  toggle portb.1
  toggle portb.2
  delayms xxxxx
  if s1=high then buttonpressed = 0
wend

goto start

Denk even aan je dender als je gaat toggelen.

hiermee moet et wel lukken.
greetz


DEVICE 16F628A                ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

Symbol S1 = PORTB.0

dim ButtonPressed as bit

while 1 = 1

if S1 = 0 then
buttonpressed = 1
else buttonpressed = 0

if buttonpressed = 1 
  toggle portb.1
  toggle portb.2
  delayms 500
endif

if buttonpressed = 0 then
    low portb.1
    low portb.2
endif

wend

Welke basic gebruik je? Want in proton is er zelfs een speciaal commando Button. Dit zorgt voor ontdendering en zoverder al in een commando.

Er is idd een button commando alleen heb ik daar nog niet mee leren werken.

Op 1 november 2007 16:46:09 schreef ruben herman:
Welke basic gebruik je? Want in proton is er zelfs een speciaal commando Button. Dit zorgt voor ontdendering en zoverder al in een commando.

Proton gebruik ik.
Dit is de bedoeling:
bij het indrukken van een knop (aan knop) moet een lampje gaan knipperen tot dat ik een andere knop indruk (reset knop)

Als ik de aanknop los laat moet het lampje blijven knipperen

pseudocode:

aan=false
WHILE 1=1

IF druk1 SET aan
IF druk2 RESET aan

IF aan=true TOGGLE UITGANG
DELAY 500
ENDIF

WEND

pak de code die ik net zei ..

Geen één code werkt :(

Het moet als volgt werken:

Knop AAN is normaal 1, wanneer deze ingedrukt wordt (0) dan moet een uitgangen blijven togglen.
Dit kan alleen gestopt worden met Knop RESET.
RESET wordt bij het indrukken hoog, dus niet als schakelaar AAN.

Waarom werkt dit niet?



 Device 16f84a

 symbol AAN   porta.2
 Symbol RESET porta.3
 
 symbol Led1  portb.2
 symbol led2  portb.3
 
 while 1=1
 
 If AAN= 0 then      ; AAN knop ingedrukt=0
 repeat
 toggle led1
 toggle led2
 delayms 500
 until reset=1       ; RESET knop ingedrukt=1
 Endif
 
 if reset=1 then
 low led1            ; Led uit
 low led2            ; Led uit
 Endif
 
 Wend

Kijk eens op www.picbasic.nl
je contacten denderen.

[Bericht gewijzigd door Henry S. op (58%)]

Dat zou toch niet uit moeten maken?
Als ik AAN los laat stoppen de leds met knipperen dus REPEAT UNTIL werkt niet denk ik.

Als ze het zo niet doen laat ik ze donderen ja
Ik heb trouwens de hele site cursus uitgeprint en gelezen (volgens mij :))

[Bericht gewijzigd door Henry S. op (54%)]

-Je zit niet op MSN, gebruik de edit op de juiste manier, en gebruik de antwoorden link voor direkte antwoorden zonder onnodige quotes.
-De cursus moet je leren door te doen en te experimenteren, je maakt me niet wijs dat je dat nu allemaal gedaan hebt, het is geen knip&plak cursus!
-Als je de cursus gelezen hebt, dan weet je ook wat ontdenderen betekent.
-War zijn je fuses?

Op 2 november 2007 18:34:37 schreef Henry S.:
-Je zit niet op MSN

Klopt ik zie die smiletjes niet en ook niet wie er online is :)

Op 2 november 2007 18:34:37 schreef Henry S.:
-War zijn je fuses?

In de zekeringen bakjes :)
Dat is niet de code die ik gebruikt heb.

De fuses (de config toch?) kan ik instellen via de ChipMax van EETools. Zijn als volgt:

OSCILLATORRRRR HS High Speed
WATCHDOG TIMER Enable
POWER UP TIMER Enable
MEMORY PROTECT Disable

Ik heb er een 6 MHZ kristal er op aangesloten (moest in PicBasic 4 MHZ instellen)

Ik weet ook wat dat ontdenderen enz is maar dat is het probleem toch niet? Dan zouden de ledjes alsnog moeten blijven knipperen.

[Bericht gewijzigd door TheKing op (14%)]

Laat een ledje knipperen zonder schakelaars. Of zonder 'AAN' knop.

[Bericht gewijzigd door Henry S. op (20%)]

Ja dat lukt wel. Ik heb een programma met 511 words, 5 ingangen en 5 uitgangen ongeveer. Dit is mijn eerste echte PicBasic programma. Bijna alles doet het.

Alleen dat gedeelte van de schakelaar doet het niet goed.
Hij stopt er mee zodra ik de schakelaar los laat maar dat is niet de bedoeling.

Ik ga even dat verhaal lezen van de dat denderen gedoe maar ik denk niet dat het daar aan ligt.

Ik begin een beetje verdrietig te wordennu..
Net ook trouwens :(

 Device 16f84a 
 config PWRTE_ON
 
 ALL_DIGITAL TRUE
 xtal 4
 Clear
 
 PORTA = %00000000
 PORTB = %00000000
 
 TRISA = %11111
 TRISB = %01000000

 symbol KnopIN=porta.3        ; Aan Button Input
 symbol ResetIN= portb.0      ; Reset Key Input
 
 symbol Led1OUT= Portb.3      ; Lamp 1 Output
 symbol Led2OUT= portb.4      ; Lamp 2 Output
       
           
 Clear                                     
   
 While 1=1
      
 If knopin= 1 and resetin=0 then      ; AAN knop ingedrukt=1
 repeat
 toggle led1out
 toggle led2out
 delayms 500
 until resetin=1                         ; RESET knop ingedrukt=1
 Endif
 
 if resetin=1 then
 low led1out            ; Led uit
 low led2out            ; Led uit
 Endif
 
 
 Wend ;

Werkt ook niet ik KnopAAN loslaat stoppen de ledjes met knipperen

Geen onnodige quotes en posts editten binnen 24 uur.

[Bericht gewijzigd door Henry S. op (0%)]

Op 2 november 2007 18:40:48 schreef TheKing:
Klopt ik zie die smiletjes niet en ook niet wie er online is :)

Wat dacht je in plaats van dom lullen je post gedrag aan te passen?

Mijn hint kwam niet echt aan blijkbaar...


 repeat
 toggle led1
 toggle led2
 delayms 500
 until reset=1       ; RESET knop ingedrukt=1
 Endif

Dit stukje testen, zonder aan-toets dus.

Werkt ook niet de ledjes blijven togglen ook wanneer ik reset op +Vdc zet. Hoe kan dat? Is mijn Pic (processor :) ) niet helemaal in orde?

En dit lukt ook niet:

 
 Device 16f84a 
 config PWRTE_ON
 
 ALL_DIGITAL TRUE
 xtal 4

 symbol KnopIN=porta.3      ; Door Switch Input
 symbol ResetIN= portb.0      ; Reset Key Input
 
 symbol Led1OUT= Portb.3      ; Lamp 1 Output
 symbol Led2OUT= portb.4      ; Lamp 2 Output
       
           
 Clear                                     
   
 While 1=1
 

 
 repeat
 toggle led1out
 toggle led2out
 delayms 500
 until resetin=1                         ; RESET knop ingedrukt=1
 
 low led1out
 low led2out                 

Ledjes blijven aan als ik RESET activeer dat klopt toch ook niet? Heb net een andere 16F84A geprobeerd maar die doet hetzelfde. Wie weet het?

[Bericht gewijzigd door Henry S. op (7%)]

Is dit je complete code, ik mis veel. Je hebt een while zonder wend. Ik mis de poort instellingen aan het begin. Heb je wel de (eens) de site www.picbasic.nl bekenken. En mischien de cursus eens doorlopen?

@TheKing: Laatste waarschuwing: Stop met je irritante postgedrag!

TheKing, leg nog een keer uit wat je precies wil want dat is niet 100% duidelijk.
Je schrijft dat je 2 uitgangen wilt togglen met een drukknop maar als je de knop loslaat dat ie door moet gaan met knipperen.
Wat moet er nu precies gebeuren want je kunt je vraag op meerdere manieren uitleggen?

- Moeten de 2(?) uitgangen pas beginnen met knipperen en blijven knipperen als je de knop hebt ingedrukt (en weer loslaat)?
- Moet het knipperen getoggled worden (eerst de ene uitgang, bij druk op de toets togglen naar de andere uitgang)?

Schrijf preciezer wat je wilt.

@ marcob: nee complete code was het niet. ik heb die hele picbasic cursus uitgeprint en gelezen.
@ moderator: ik snap niet wat er irritant is. dit is toch een forum waar mensen vragen mogen stellen?

 Device 16f84a 
 config PWRTE_ON
 
 ALL_DIGITAL TRUE
 xtal 4
                                                            symbol KnopIN=porta.3      ; Door Switch Input
 symbol ResetIN= portb.0      ; Reset Key Input
 
 symbol Led1OUT= Portb.3      ; Lamp 1 Output
 symbol Led2OUT= portb.4      ; Lamp 2 Output
       
           
 Clear                                     
   
 While 1=1
 
 repeat
 toggle led1out
 toggle led2out
 delayms 500
 until resetin=1             ; RESET knop ingedrukt=1
 
 low led1out
 low led2out                 
  
 Wend  

@ Frits:

Dat gedeelte van het programma moet als volgt werken:
Bij het opstarten staat alles uit.
Zodra er op AAN gedrukt wordt (langer dan 50 mS bijvoorbeeld, maar dit gedeelt mag ook later) moeten de ledjes gaan knipperen.
Deze mogen alleen uit als RESET (drukknop) ingedrukt wordt en ze moeten uitblijven tot dat er weer op AAN (drukknop) ingedrukt wordt.
Hij zou heel simpel moeten gaan maar toch lukt het niet.

[Bericht gewijzigd door Henry S. op (22%)]