1 /* main.cpp for TOPPERS/ATK(OSEK) */
\r
5 #include "Bluetooth.h"
\r
6 #include "BTConnection.h"
\r
8 #include "GyroSensor.h"
\r
9 #include "LightSensor.h"
\r
12 #include "SonarSensor.h"
\r
13 #include "Speaker.h"
\r
14 #include "TouchSensor.h"
\r
16 #include "tsprintf.h"
\r
17 #include "ETLineTracer.h"
\r
18 #include "ETLinePos.h"
\r
19 #include "ETBalanceRunner.h"
\r
20 #include "ETTailControl.h"
\r
21 #include "context.h"
\r
22 #include "ETUtility.h"
\r
24 using namespace ecrobot;
\r
29 #include "kernel_id.h"
\r
30 #include "ecrobot_interface.h"
\r
32 DeclareTask(TaskMain);
\r
33 DeclareCounter(SysTimerCnt);//Alarm
\97\98\97p
\8e\9e\95K
\97v
\r
35 // global object instances
\r
41 GyroSensor gyro(PORT_1);
\r
42 SonarSensor sonar(PORT_2);
\r
43 LightSensor light(PORT_3);
\r
44 TouchSensor touch(PORT_4);
\r
45 Motor motorT(PORT_A);
\r
46 Motor motorR(PORT_B);
\r
47 Motor motorL(PORT_C);
\r
49 ETBalanceRunner runner(motorL,motorR,gyro,nxt);
\r
50 ETLinePos linepos(light);
\r
51 ETLineTracer tracer(linepos,runner);
\r
52 ETTailControl tailcontroler(motorT,0);
\r
53 ContextStuff::Context context;
\r
55 /*
\83f
\83o
\83C
\83X
\8fI
\97¹
\97p
\83t
\83b
\83N
\8aÖ
\90\94 */
\r
56 /*
\82±
\82Ì
\8aÖ
\90\94\82ÍSTOP
\82Ü
\82½
\82ÍEXIT
\83{
\83^
\83\93\82ª
\89\9f\82³
\82ê
\82½
\8e\9e\82É
\8eÀ
\8ds
\82³
\82ê
\82Ü
\82·
\81B */
\r
57 void ecrobot_device_terminate()
\r
59 /*
\83Z
\83\93\83T
\81A
\83\82\81[
\83^
\82È
\82Ç
\82Ì
\8ae
\83f
\83o
\83C
\83X
\82Ì
\8fI
\97¹
\8aÖ
\90\94\82ð
\r
60 *
\82±
\82±
\82Å
\8eÀ
\91\95\82·
\82é
\82±
\82Æ
\82ª
\82Å
\82«
\82Ü
\82·
\81B
\r
61 *
\81Ë
\81@
\8cõ
\83Z
\83\93\83T
\90Ô
\90FLED
\82ðOFF
\82É
\82·
\82é
\r
63 //ecrobot_set_light_sensor_inactive(SENSOR_LIGHT);
\r
64 ecrobot_term_bt_connection(); /* Bluetooth
\92Ê
\90M
\82ð
\8fI
\97¹ */ //ex4
\r
67 // nxtOSEK hook to be invoked from an ISR in category 2
\r
68 void user_1ms_isr_type2(void)
\r
70 // //Sleep
\97\98\97p
\8e\9e\95K
\97v
\r
72 // //Alarm
\97\98\97p
\8e\9e\95K
\97v
\r
74 ercd = SignalCounter(SysTimerCnt);
\r
82 //bt.setFriendlyName(DEVICE_NAME);
\r
83 BTConnection btConnection(bt, lcd, nxt);
\r
84 btConnection.connect(ETBluetoothString::PASS_KEY);
\r
86 lcd.putf("s", "Hello World");
\r
88 tailcontroler.Init();
\r
89 tailcontroler.SetAngle(ETTailControl::ANGLE_STAND_UP);
\r
91 //
\83L
\83\83\83\8a\83u
\83\8c\81[
\83V
\83\87\83\93\r
92 //
\83W
\83\83\83C
\83\8d\r
93 while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {}
\r
94 unsigned long offset = ETUtilityStuff::GetOffset(gyro,clock);
\r
95 runner.SetGyroOffset(offset);
\r
97 ETUtilityStuff::DisplayCalibResult(lcd,speaker,"Offset = %d",offset,1000,1);
\r
100 while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {}
\r
101 unsigned long white = ETUtilityStuff::GetOffset(light,clock);
\r
102 linepos.SetWhite(white);
\r
104 ETUtilityStuff::DisplayCalibResult(lcd,speaker,"White = %d",white,1200,2);
\r
107 while(!ETUtilityStuff::Istouched(touch,tailcontroler)) {}
\r
108 unsigned long black = ETUtilityStuff::GetOffset(light,clock);
\r
109 linepos.SetBlack(black);
\r
111 ETUtilityStuff::DisplayCalibResult(lcd,speaker,"Black = %d",black,1400,3);
\r
113 //wait for touch or bluetooth.
\r
114 ETUtilityStuff::Waitstart(touch,tailcontroler,ETBluetoothString::CMD_START);
\r
116 tailcontroler.SetAngle(ETTailControl::ANGLE_DRIVE);
\r
117 context.SetETLineTracer(&tracer);
\r
123 if(touch.isPressed()){
\r
124 // motorR.setPWM(0);
\r
125 // motorL.setPWM(0);
\r
128 ActivateTask(TaskMain);
\r
132 context.Display(lcd);
\r
133 context.CyclicExcute();
\r
134 tailcontroler.Control();
\r
139 int __cxa_pure_virtual(){
\r
140 //
\8f\83\90\88\89¼
\91z
\8aÖ
\90\94\82ª
\83I
\81[
\83o
\81[
\83\89\83C
\83h
\82µ
\82È
\82¢
\82Å
\8cÄ
\82Ñ
\8fo
\82³
\82ê
\82½
\8e\9e\82Ì
\83G
\83\89\81[
\83n
\83\93\83h
\83\89\82ð
\8bó
\8eÀ
\91\95\r
141 //
\82±
\82ê
\82ð
\93ü
\82ê
\82È
\82¢
\82Æram
\8eg
\97p
\97Ê
\82ª
\82Æ
\82Ä
\82à
\91\9d\82¦
\82é
\81E
\81E
\81E
\r