a simple library to control an animatronic head
Alex.cpp
- Committer:
- mxjac
- Date:
- 2010-12-15
- Revision:
- 3:5271cc1a527b
- Parent:
- 2:3920d79c79b1
- Child:
- 4:45d466252fb6
File content as of revision 3:5271cc1a527b:
#include "Alex.h" Alex::Alex(SRF05 s, Servo e, Servo m, Servo l, Servo r):S(s), E(e), M(m), L(l), R(r), Led(LED1), pc(USBTX, USBRX) { } Alex::~Alex() { } void Alex::TestHead() { Led=1; wait(0.02); Led=0; } int Alex::Testpresence() { if((S.read()==0)||(S.read()>=500)){return 0;}//if presence is too close, return 0 if(S.read()>=40){return 1;}//if presence is too far, return 1 if((S.read()>=0)&&(S.read()<=40)){return 2;}//if presence is between O and 40cm, return 2 return 0; } void Alex::Move_eyes(int valuee) { for(int i=0; i<valuee; i++) { E=i; wait(0.1); } } void Alex::Move_mouth(int valuem) { for(int i=0; i<valuem; i++) { M=i; wait(0.1); } } void Alex::Move_leaning(int valuel) { for(int i=0; i<valuel; i++) { L=i; wait(0.1); } } void Alex::Move_rotation(int valuer) { for(int i=0; i<valuer; i++) { R=i; wait(0.1); } } void Alex::Simulate_Talking(int length) { for(int i=0; i<length; i++) { Move_mouth(100); wait(0.01); } } void Alex::Presence_too_far() { pc.printf("You are too far, I can't see you !"); Simulate_Talking(4); wait(3); pc.printf("Is there somebody ?"); Simulate_Talking(4); wait(3); } void Alex::displaydistance() { pc.printf("Distance : %4i\r\n", S.read()); } void Alex::Presence_too_close() { pc.printf("You are too close, please move back"); Simulate_Talking(4); wait(3); }