00001
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <config.h>
00030 #if defined(CONF_DSENSOR) && defined(CONF_DMOTOR)
00031
00032 #include <conio.h>
00033 #include <unistd.h>
00034
00035 #include <dsensor.h>
00036 #include <dmotor.h>
00037
00038 #include <sys/lcd.h>
00039 #include <tm.h>
00040
00042
00043
00044
00046
00047 wakeup_t sensor_press_wakeup(wakeup_t data);
00048
00049
00050
00051 int main(int argc, char *argv[]) {
00052 int dir=0;
00053
00054 while (!shutdown_requested()) {
00055 motor_a_speed(2*MAX_SPEED/3);
00056 motor_c_speed(2*MAX_SPEED/3);
00057
00058 motor_a_dir(fwd);
00059 motor_c_dir(fwd);
00060
00061 cputs("fwwd ");
00062
00063 if (wait_event(&sensor_press_wakeup, 0) != 0) {
00064 if(SENSOR_1<0xf000)
00065 dir=0;
00066 else
00067 dir=1;
00068
00069
00070
00071 motor_a_dir(rev);
00072 motor_c_dir(rev);
00073
00074 cputs("rev ");
00075
00076 msleep(500);
00077
00078 motor_a_speed(MAX_SPEED);
00079 motor_c_speed(MAX_SPEED);
00080
00081 if(dir==1) {
00082 motor_c_dir(fwd);
00083 cputs("left ");
00084 } else {
00085 motor_a_dir(fwd);
00086 cputs("right");
00087 }
00088
00089 msleep(500);
00090 }
00091 }
00092
00093 return 0;
00094 }
00095
00096 wakeup_t sensor_press_wakeup(wakeup_t data) {
00097 lcd_refresh();
00098 return (SENSOR_1<0xf000) || (SENSOR_3<0xf000);
00099 }
00100
00101 #else
00102 #warning rover.c requires CONF_DMOTOR and CONF_DSENSOR
00103 #warning rover demo will do nothing
00104 int main(int argc, char *argv[]) {
00105 return 0;
00106 }
00107 #endif // CONF_DSENSOR, CONF_DMOTOR