Hallo, ik heb een kabelbaan projectje gemaakt mbv een PIC.

Gewoon simpel met een motortje en draad met daaraan 4 gondeltjes.
Die lopen dan heen en weer tussen katrollen met aan 1 kant een reedschakelaar voor initialisatie.

De bedoeling is nu dat bij het opstarten van de PIC, hij eerst op langzame snelheid gaat initialiseren tot hij een reedschakelaar raakt.
Daarna moet hij zijn programma vervolgen en gaat hij de andere kant op voor bv 10 sec.

Dan schakelt hij om en komt hij in een while/wend lus die wacht tot de reedschakelaar weer bediend wordt.

Nu, dit werkt allemaal.

Maar heeft iemand een idee hoe ik een bewaking in kan voegen die niet toestaat dat de motor langer dan bv 10 sec richting de reedschakelaar loopt?
want mocht de RS kapot gaan of iets anders, dan blijft de motor oneindig draaien, met alle gevolgen van dien.

Bij deze even het programma, alvast bedankt voor het kijken.


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

;Logische constanten
SYMBOL HOOG         = 1       ;Hoog signaal
SYMBOL LAAG         = 0       ;Laag signaal

;Poortnamen
SYMBOL MotorEnable  = PORTA.0 ;Motor aansturing ingeschakeld als poort hoog is
SYMBOL MotorLinksOm = PORTA.6 ;Motor draait linksom
SYMBOL MotorRechtsOm= PORTA.7 ;Motor draait rechtsom
symbol reedschakel  = portb.0 ;Reedschakelaar aan 1 einde van de kabel
;YMBOL HPWM         = PORTB.3 ;We zitten vast aan deze PORT voor HPWM bij de 16F628A 
LCD_RSPIN           = PORTA.4 ;LCD RS op Port A.4

PORTA = 0                     ;Maak alle poorten van PORTA laag
;        76543210
TRISA = %00111110             ;PORTA.7, A.6 en A.0 uitgangen voor L293D 
TRISB = %11110101             ;PORTB.3 voor motor (L293D IC)

delayms 500                   ;Lcd Stabilisering
cls                           ;Wis Scherm

print at 1, 1, " Kabelbaan V2.0"
print at 2, 1, " INITIALISEREN!"


;Initialisatie

HPWM 1, 90, 3250              ;Snelheid voor initialiseren.

motorrechtsom = Hoog          ;Langzaam rechtsom draaien
motorenable = hoog
 while portb.0 = laag : wend  ;Wachten tot reedschakelaar bediend wordt.
delayms 5                     ;Tegen contactdender

motorrechtsom = laag          ;Langzaam draaien uit.
motorenable = Laag
Print at 2, 1, "      Klaar      "
delayms 2000                  ;Tijd tussen motor stop en start programma

print at 2, 1, "    Motor aan"




;Hoofdprogramma
hpwm 1, 160, 3250             ;Snelheid voor motor.

WHILE 1 = 1                   ;Oneindige lus
  
  MotorEnable   = HOOG        ;Motor linksom inschakelen
  MotorLinksOm  = HOOG        ;Motor inschakelen
  DELAYMS 10000               ;looptijd van de motor linksom

  MotorEnable   = LAAG        ;Eerst de motor ontkoppelen en dan pas...
  MotorLinksOm  = LAAG        ;...motor linksom uitschakelen
  DELAYMS 2000                ;Tijd tussen omschakelen

  MotorRechtsOm = HOOG        ;Motor rechtsom inschakelen
  MotorEnable   = HOOG        ;Motor inschakelen
  while portb.0 = laag : wend ;Wachten tot reed schakelaar bediend word.

  MotorEnable   = LAAG        ;Eerst de motor ontkoppelen en dan pas...
  MotorRechtsOm = LAAG        ;...motor rechtsom uitschakelen
  DELAYMS 2000                ;Tijd tussen omschakelen

WEND                          ;Terug naar WHILE

END                           ;Einde programma

maak er een ' repeat : delayms 100 : inc timout : until portb.0 = 1 or timeout = 100 ' van (voor 10 seconden), ipv while portb.0 = 0 wend.

Oke bedankt, k zal het even proberen.

Eerst even zoeken hoe je regels moet afbreken.
Ik heb de lite versie, die zegt dat je maar 1 commando per regel mag zetten...

Nou, dat werkt ook... Verdomme zeg:P half 3 alweer.
Ik heb nu 2 pic's erachter hangen.
1 regelt alleen de motorsturing.
de ander het display.

Nu wilde ik het zo maken dat als de initialisatie klaar is, PORTA.2 hoog wordt en PORTB.0 van de andere hoog maakt.

Kan dat? Want de initialisatie is binnnen 10 seconden klaar, en dan gaat de motor aan zijn programma beginnen, terwijl de ander nog druk aan het initialiseren is... :S

Anders gezegd: Als init klaar is bij 4 seconden, maak poort b.0 hoog op andere pic.

Die andere pic staat dus te wachten tot er iets gebeurt, en poort wordt hoog.
PIC gaat verder met andere teksten op het scherm zetten...

Ik heb al wat gelezen over rx en tx en nog wat, maar daar snap ik geen f*ck van...

Help??

Welterusten.