![]() |
![]() |
#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;
} |