![]() |
![]() |
#include <dmotor.h> #include <dsensor.h> #include <unistd.h> // wakeup function is included wakeup_t sensor_press_wakeup(wakeup_t data); // wakeup_function int main(int argc, char *argv[]){ motor_a_speed(2*MAX_SPEED/3); motor_c_speed(2*MAX_SPEED/3); motor_a_dir(fwd); motor_c_dir(fwd); wait_event(&sensor_press_wakeup,0); motor_a_dir(brake); motor_c_dir(brake); return 0; } wakeup_t sensor_press_wakeup(wakeup_t data) { return SENSOR_1<0xf000; } |
#include <dmotor.h> #include <dsensor.h> #include <unistd.h> wakeup_t sensor_press_wakeup(wakeup_t data); int main(int argc, char *argv[]){ motor_a_speed(2*MAX_SPEED/3); motor_c_speed(2*MAX_SPEED/3); while(1){ motor_a_dir(fwd); motor_c_dir(fwd); wait_event(&sensor_press_wakeup,0); motor_a_dir(rev); // reverse motor_c_dir(rev); msleep(700); motor_a_dir(fwd); // turn right motor_c_dir(rev); msleep(700); } return 0; } wakeup_t sensor_press_wakeup(wakeup_t data) { return SENSOR_1<0xf000; } |
ダブルバンパーでどちらのセンサーに反応したかを区別するには、wakeup 関数を次のように記述することで、戻り値で区別させることができます。
wakeup_t sensor_press_wakeup(wakeup_t data) { int a=0; if(SENSOR_1<0xf000){a=1;} if(SENSOR_3<0xf000){a=3;} retrun a; } |