X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=main.cpp;h=1a022922d3dd0dbde2146f29a4cdda067aa5f52e;hb=32836551d305a5bc17f549218fbd6a8cdd86af24;hp=a13d1829fc26da8116349bb0c57cdfd0519ac89e;hpb=88460d9e510daaacd7435c4ac223612d53494443;p=tondenhei%2Fet2013.git diff --git a/main.cpp b/main.cpp index a13d182..1a02292 100644 --- a/main.cpp +++ b/main.cpp @@ -2,7 +2,8 @@ // ECRobot++ API #include "Lcd.h" -#include "BlueTooth.h" +#include "Bluetooth.h" +#include "BTConnection.h" #include "Clock.h" #include "GyroSensor.h" #include "LightSensor.h" @@ -16,6 +17,9 @@ #include "ETLineTracer.h" #include "ETLinePos.h" #include "ETBalanceRunner.h" +#include "ETTailControl.h" +#include "context.h" +#include "ETUtility.h" using namespace ecrobot; @@ -25,6 +29,7 @@ extern "C" #include "kernel_id.h" #include "ecrobot_interface.h" +DeclareTask(TaskMain); DeclareCounter(SysTimerCnt);//Alarm—˜—pŽž•K—v // global object instances @@ -44,6 +49,20 @@ Motor motorL(PORT_C); ETBalanceRunner runner(motorL,motorR,gyro,nxt); ETLinePos linepos(light); ETLineTracer tracer(linepos,runner); +ETTailControl tailcontroler(motorT,0); +ContextStuff::Context context; + +/* ƒfƒoƒCƒXI—¹—pƒtƒbƒNŠÖ” */ +/* ‚±‚̊֐”‚ÍSTOP‚Ü‚½‚ÍEXITƒ{ƒ^ƒ“‚ª‰Ÿ‚³‚ꂽŽž‚ÉŽÀs‚³‚ê‚Ü‚·B */ +void ecrobot_device_terminate() +{ + /* ƒZƒ“ƒTAƒ‚[ƒ^‚È‚Ç‚ÌŠeƒfƒoƒCƒX‚̏I—¹ŠÖ”‚ð + * ‚±‚±‚ÅŽÀ‘•‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + * Ë@ŒõƒZƒ“ƒTÔFLED‚ðOFF‚É‚·‚é + */ + //ecrobot_set_light_sensor_inactive(SENSOR_LIGHT); + ecrobot_term_bt_connection(); /* Bluetooth’ʐM‚ðI—¹ */ //ex4 +} // nxtOSEK hook to be invoked from an ISR in category 2 void user_1ms_isr_type2(void) @@ -60,23 +79,59 @@ void user_1ms_isr_type2(void) TASK(TaskMain) { + //bt.setFriendlyName(DEVICE_NAME); + BTConnection btConnection(bt, lcd, nxt); + btConnection.connect(ETBluetoothString::PASS_KEY); lcd.clear(); lcd.putf("s", "Hello World"); lcd.disp(); + tailcontroler.Init(); + tailcontroler.SetAngle(ETTailControl::ANGLE_STAND_UP); + + // ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ + // ƒWƒƒƒCƒ + while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {} + unsigned long offset = ETUtilityStuff::GetOffset(gyro,clock); + runner.SetGyroOffset(offset); + //display to LCD + ETUtilityStuff::DisplayCalibResult(lcd,speaker,"Offset = %d",offset,1000,1); + + // ”’ + while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {} + unsigned long white = ETUtilityStuff::GetOffset(light,clock); + linepos.SetWhite(white); + //display to LCD + ETUtilityStuff::DisplayCalibResult(lcd,speaker,"White = %d",white,1200,2); + // • + while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {} + unsigned long black = ETUtilityStuff::GetOffset(light,clock); + linepos.SetBlack(black); + //display to LCD + ETUtilityStuff::DisplayCalibResult(lcd,speaker,"Black = %d",black,1400,3); + + //wait for touch or bluetooth. + ETUtilityStuff::Waitstart(touch,tailcontroler,ETBluetoothString::CMD_START); + + tailcontroler.SetAngle(ETTailControl::ANGLE_DRIVE); + context.SetETLineTracer(&tracer); TerminateTask(); } TASK(Task4ms) { - static int cnt = 0; - char str[16+1]; - lcd.clear(); - tsprintf(str,"cnt = %d",cnt++); // tsprintf Žg—p—á - lcd.putf("s",str); - lcd.disp(); - - tracer.RunTrace(100); + if(touch.isPressed()){ +// motorR.setPWM(0); +// motorL.setPWM(0); + tracer.Stop(); + tracer.Reset(); + ActivateTask(TaskMain); + TerminateTask(); + return; + } + context.Display(lcd); + context.CyclicExcute(); + tailcontroler.Control(); TerminateTask(); }