'**************************************************************** '* Name : Olifantsmuis2.BAS * '* Author : Gidi van Liempd * '* Notice : Copyright (c) 2010 Gee!Design (www.geedesign.com) * '* : All Rights Reserved * '* Date : 11-6-2010 * '* Version : 1.0 * '* Notes : * '* : De muis begint in toestand 1 (langzaam draaien) * '* : 1x op de IR bediening klikken gaat hij naar een * '* : hogere versnelling, vervolgens naar "freeze frame"* '* : vervolgens weer terug naar de hoge versnelling, * '* : en tenslotte terug naar basissnelheid * '**************************************************************** DEVICE 16F628A ;Gebruik een 16F628A type CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF ALL_DIGITAL True ;Alle ingangen digitaal 'A1 = relais2 (output) 'A2 = relais1 (output) 'B3 = irPin (receive serial input from IR device) ' 76543210 PORTA = %00000000 ;Alle PORTA poorten laag TRISA = %11111001 ;Alleen PORTA.1 en PORTA.2 als uitgang TRISB = %11111011 ;Alle B poorten als ingang, behalve B.2 SYMBOL RELAIS1 = PORTA.2 ; Relais1 zet de motor aan SYMBOL RELAIS2 = PORTA.1 ; Relais2 schakelt naar een andere versnelling ; For the IR input device SYMBOL irPin = PORTB.3 ;SYMBOL irBaud = 84 ; 9600 baud, 8-bit, no parity, true SYMBOL irBaud = 396 ; 2400 baud, 8-bit, no parity, true ; RS232 Output for debugging SYMBOL RS232_out = PORTB.2 DIM devNum AS BYTE DIM command AS BYTE DIM MyState AS BYTE ; to record the state of the system CLEAR ;Wis alle RAM geheugen init: MyState = 1 GOSUB SET_STATE DELAYMS 5000 ;Main program MAIN: SERIN irPin,irBaud,10000,TO_TIMEOUT,[devNum,command]; SEROUT RS232_out,irBaud,[devNum,command]; IF command > 0 THEN command = 0 ; reset command, als we nog een keer door de loop gaan MyState = MyState + 1 GOSUB SET_STATE ; Pas de toestand aan DELAYMS 1000 ENDIF GOTO MAIN TO_TIMEOUT: ; On Timeout of SERIN SEROUT RS232_out,irBaud,["timed out", 13]; GOTO MAIN ; just loop SET_STATE: SELECT MyState CASE 1 RELAIS1 = 1 ; Schakel de motor aan zodra het programma start RELAIS2 = 0 CASE 2 RELAIS2 = 1 ; schakel naar volgende versnelling CASE 3 RELAIS1 = 0 ; Schakel de motor uit CASE 4 RELAIS1 = 1 ; Schakel de motor aan, in de hoogste versnelling MyState = 0 ; Zodat je klaar bent voor Case 1 ENDSELECT RETURN END