'Bambino-16 SERTXD("B16",CR) 'report program number @4800baud #PicAxe 20M2 #no_data 'Bambino-01 Test eyeLEDs, whiskerLEDs and speaker 'Bambino-02 Test PWM of eyeLEDs 'Bambino-03 Test InfraRed input 'Bambino-04 Test Eye light values 'Bambino-05 Test Whisker light values 'Bambino-06 Play the inbuilt tunes using keys 1 to 4 and beep on 5 'Bambino-07 Set servos to mid position 'Bambino-08 Calibrate servo mid positions and put in EEPROM. 'Bambino-08+ Adjust servo mid positions from Handset and put in EEPROM. 'Bambino-09 Introduce _iStand:- initialise with feet in mid position 'Bambino-10 Set rollby, rollbymax for Roll Right 'Bambino-11 Check rollby, rollbymax for Roll Left 'Bambino-12 Check rollby and rollbymax for rollL, rollR 'Bambino-13 Introduction of _Stand 'Bambino-14 Investigate effect of rollspeed; ' watch roll for all three speeds 'Bambino-15 Investigate effect of rollspeed; ' watch Roll and Stand for all three speeds 'Bambino-16 Check paceby; Investigate effect of pacespeed ' Introduction of pulseservos: '----------------------------------------------------------------- Rationale: 'Check paceby '------------------- 'edit paceby and reload program for nice walking 'edit paceby and check pacebymax, edit paceby back to walking 'Investigate effect of pacespeed '------------------------------- 'edit pacespeed to see how Bambino performs ' 'pulseservos: now has the code to pulse servos which makes the 'program easier to read. '================================================================= 'modified '-------- 'init 'start '_StandL: '_StandR 'New '--- 'paceat 'paceby 'pacespeed '_RF '_LF 'pulseservos: '================================================================= SYMBOL servopacepin =c.0 'left connector SYMBOL servorollpin =c.4 'right connector SYMBOL VoiceLedpin_ =c.5 SYMBOL eyeLedLpin_ =c.2 'low =>LED on SYMBOL eyeLedRpin_ =b.1 'low =>LED on SYMBOL whiskerLedLpin_ =c.3 'low =>whisker LED on SYMBOL whiskerLedRpin_ =b.3 'low =>whisker LED on SYMBOL IRinpin =c.6 SYMBOL IRoutpin =b.2 SYMBOL temp0 =B0 'B1 SYMBOL Scentre =W1 SYMBOL rollC =B2 '100 is roll to the left, 200 to the right SYMBOL paceC =B3 '100 is left foot back, 200 left foot forward SYMBOL Sat =W2 'current servo positions SYMBOL rollat =B4 SYMBOL paceat =B5 SYMBOL Sto =W3 'desired servo positions SYMBOL rollto =B6 SYMBOL paceto =B7 SYMBOL Sspeed =W4 SYMBOL rollspeed =B9 '4 is too fast, 0 won't move SYMBOL pacespeed =B10 '6 is about max for servos to keep up SYMBOL i =B11 SYMBOL spulse =B12 '=== Your Bambino ================ SYMBOL rollby =15 '15 good for walking, edit to value in program11 SYMBOL paceby =20 '+ve Left foot forward 20@speed 3; 25@speed 1 'rollspeed '4 is too fast, 0 won't move SYMBOL sframe =20 'time between servo pulses SYMBOL rollbymax =20 '@speed 3; 25@speed 1 'rollmax absolute max is 40, above that the tilt rods hit the body 'EEPROM DATA SYMBOL DrollC =254 'holds rollC, 100 is roll to the left, 150 is nominal centre SYMBOL DpaceC =255 'holds paceC, 100 is left foot back, 150 is nominal centre '================================= initialise: 'get values from EEPROM set by program #8 or #8+ READ DrollC,rollC READ DpaceC,paceC SERTXD("rollC=",#rollC," paceC=",#paceC,CR) LOW eyeLedRpin_ 'make output HIGH eyeLedLpin_ 'make output GOSUB _iStand 'stand and initialise rollat, paceat initspeed: rollspeed =1 pacespeed =4 start: TOGGLE eyeLedRpin_ 'alter eyeR so we know program is running TOGGLE eyeLedLpin_ 'alter eyeR so we know program is running GOSUB _RF PAUSE 500 GOSUB _LF PAUSE 500 GOTO start _RF: paceto =paceC -paceby FOR spulse=paceat TO paceto STEP -pacespeed paceat =spulse gosub pulseservos NEXT spulse RETURN _LF: paceto =paceC +paceby FOR spulse=paceat TO paceto STEP pacespeed paceat =spulse gosub pulseservos NEXT spulse RETURN Stand: 'stand with both feet flat IF rollat