'>JoeActor-PicAxe18x.bas 'Memory used = 168 bytes out of 2048 '18Jul11 commented out the auto iris and EyesSum ' '----------------------------------------------------------- ' ___ ___ ' - I2.A2 |1 V 18| I1,A1 EyeL ' BS2 Sertxd,So |2 17| I0,A0,infrared EyeR ' PC Si |3 16| I7,keybdD buttonswitch ' Reset |4 15| I6,keybdCk - ' 0v |5 14| +V ' 7seg O0 |6 13| O7 7seg ' 7seg O1,IICD |7 12| O6 7seg ' 7seg O2 |8 11| O5 7seg ' 7seg O3,pwm |9____10| O4,IICK 7seg 'default resonator speed is 4MHz ' o EyeR o EyeL ' o 5v o 5v ' o 0v o 0v ' o So to BS2 o So prog ' o 5v o Si prog ' o 0v o 0v ' o 0v \ ' o 5v | Aux ' o I2 | SERIN 2,N4800_8,(wiskers) ' o I6 / pins =255 'all off symbol Act =B2 symbol i =B3 symbol flashed =B4 symbol eyeR =B5 symbol eyeL =B6 symbol eyesLR =B7 symbol wiskers =B8 ''symbol EyesSum =W5 'Pins '---- 'O0-O7 7seg 'I0 readadc 0,eyeR 'I1 readadc 1,eyeL 'I2 readadc 2 spare 'I6 spare 'I7 buttonswitch 'sertxd serout on PCpin to BS2 N4800 '----------------------------------------------------------- read 21,Act 'remember Act if pin7=0 then buttondown goto showact Start: flashed =0 nextflash: flashed =flashed +1 read Act,pins 'output 7seg code for Act for i =0 to 50 if pin7=0 then nextAct pause 20 next i pins =255 'all off pause 50 if flashed<5 then nextflash goto showAct nextAct: Act =Act +1 write 21,Act 'remember Act if Act<20 then buttondown Act=0 write 21,Act 'remember Act buttondown: read Act,pins pause 50 if pin7=0 then buttondown goto Start showAct: 'forever, 'eyes are read every loop 'sertxd every 20ms = servo clock 'loop every 62 clock =>~124ms readadc 0,eyeR 'Dark is high readadc 1,eyeL 'Dark is high eyeR =255 -eyeR 'invert so Bright is high eyeL =255 -eyeL 'invert so Bright is high 'Auto iris 'EyesSum =EyeL +eyeR 'reduce to Nibbles with average of 7 and max of 15 'eyeL =eyeL *15 /EyesSum 'eyeR =eyeR *15 /EyesSum eyeL =eyeL /16 'scale to nibble eyeR =eyeR /16 'scale to nibble eyesLR =eyeL *16 +eyeR 'put nibbles into a byte read Act,pins sertxd(255,Act,wiskers,eyesLR) '4*2ms=8ms pause 10 sertxd(255,Act,wiskers,eyesLR) '4*2ms=8ms pause 10 pins =255 'all off for i=0 to 60 sertxd(255,Act,wiskers,eyesLR) '4*2ms=8ms pause 10 next i goto showAct '(download writes to ALL locations whether declared or not) 'deciml point used for decade count, ie 10=> .0 ' 76543210 EEPROM 0, (%10100000) 'segment states, active low EEPROM 1, (%11111100) EEPROM 2, (%10000110) EEPROM 3, (%10000011) EEPROM 4, (%11010001) EEPROM 5, (%10001001) EEPROM 6, (%10001000) EEPROM 7, (%10110011) EEPROM 8, (%10000000) EEPROM 9, (%10010001) EEPROM 10,(%00100000) EEPROM 11,(%01111100) EEPROM 12,(%00000110) EEPROM 13,(%00000011) EEPROM 14,(%01010001) EEPROM 15,(%00001001) EEPROM 16,(%00001000) EEPROM 17,(%00110011) EEPROM 18,(%00000000) EEPROM 19,(%00010001) EEPROM 20,(%11111111) 'all off EEPROM 21,(0) 'remember Act test: for b1=0 to 20 read b1,pins pause 200 next b1 goto test