;----------POPIS---------------------------------
; pro PICAXE 08M2
; program pro optickou závoru v násypce drtiče a řízení podavače
; je navržen pro použití na univerzální infra desce - varianta1
; napsal Michal Boček 28.04.2016

;----------HARDWARE------------------------------
	;zapojení
;               	(+)  -    - (-)
;              	SI   -    - PIN0 (SO) pouze výstup
;	            PIN4 -    - PIN1
;	pouze vstup PIN3 -    - PIN2 jen tady funguje pwm
;	
	;přiřazení	
;PIN0 červená LED na desce
;PIN1 výstup na servo
;PIN2 výstup na diodu (spínaný přes tranzistor)
;PIN3 vstup z příjmače
;PIN4 vstup z čidla - buď  TSOP4838 nebo D80NK(nutno změnit součástky na desce)
;napájení 5V z příjmače nebo jiného stabilizovaného zdroje, stabilizátor není součástí desky

;----------SOFTWARE------------------------------			
;přiřazení vstupů/výstupů:
	symbol LED_d = PIN0 	;výstup na LED diodu na desce
	symbol srvo = 1 		;regulátor podavače
	symbol IRLED = 2 		;infradiody
	symbol prijmac = 3 	;vstup z příjmače
	symbol cidlo = PIN4 	;infračidlo

;konstanty
	symbol stoji=150		;konstanta pro zastavený podavač
	symbol dobeh=8		;konstanta jak dlouho bude běžet podavač po zaplnění čelistí
;proměnné
;	w0	poloha serva
;	w1	poloha načtená z příjmače
;	w3	časovač
;
; POZOR - při nezapojení nebo nepřítomnosti signálu z příjmače dojde k brutálnímu
;         zpomalení programu - příkaz pulsin čeká na signál 0,65s a tuto dobu se 
;         nic neděje při každém průchodu - to má za následek to šílené zpomalení
; 	    (pro fungování bez příjmače nutno tuto část modifikovat) 
;
;
;vlastní program
setfreq m4 							;frekvence 4Mhz
pause 2000							;na začátku je dobré počkat 2s pro uklidnění
let w0=stoji						;zastavení podavače
let w3=1							;minimální čas

do 						;Hlavní smyčka programu
;debug
pulsin prijmac,1,w1 				;načtení rychlosti podavače z příjmače

							;rozblikání infra diody
pwmout IRLED, 25, 1	 				;výstup 38kHz s činitelem plnění 1% - minimální hodnota pro malou vzdálenost v násypce	
pause 1 							;počkáme 1 ms (s oscilátorem 4MHz)
							;řízení podavače - testování čidla na přítomnost kamení v násypce
if cidlo=0 then 						;když se drtič zaplní
	let w3=dobeh 						;nastavíme plný čas doběhu
	high 0 else low 0 endif					;rozsvítíme diodu na desce, jinak ji zhasnem
;	endif
let w3=w3-1	min 1						;odečteme jeden čas
if w3=1 then 						;pokud čas vypršel
	let w0=stoji else let w0=w1 endif 			;zastavíme podavač, jinak nastavíme rychlost z přijímače
pwmout IRLED, OFF 				;vypneme generování PWM signálu 38kHz na PIN2
pulsout srvo,w0					;průběžné pulzy pro servo na PIN1
pause 15  						;počkáme 15 ms
loop 						;opakujeme donekonečna
	