Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Lab_6_WaG by
Diff: wag.cpp
- Revision:
- 63:8fcb1cc55e18
- Parent:
- 62:b73067127fd6
- Parent:
- 61:778e7e30e370
- Child:
- 65:b8f3339b9268
diff -r b73067127fd6 -r 8fcb1cc55e18 wag.cpp
--- a/wag.cpp Tue Apr 17 16:14:30 2018 +0000
+++ b/wag.cpp Tue Apr 17 16:15:21 2018 +0000
@@ -85,45 +85,77 @@
void whack(int sensor_no, float * sensor_values) {
bool sensor_registered = false;
- int sensor_no = // --> need to specify sensor_no
-
+ int gnoll_sensor_indicator = 0; // the order of sensor that gnoller's laser points to
+ int whack_sensor_indicaotr = 0; // the order of sensor that whacker's laser points to
+ int gnoll_no = 0;
+ int led_command = 0; // led command to display the indicator LED in whacker
+
+ if (sensor_no == 0) whack_no = 8;
+ if (sensor_no == 8) whack_no = 0;
+
// start timer for sensor reading
t.start();
// keep reading until one of the sensor get laser pointed in
while (!sensor_registered) {
- // read value of all gnoll sensor
+ // scan all 16 sensors into sensor_values array
+ ana_scan_mux(sensor_values, TGT_SENSOR_QUAN * 2);
+
+ // scan all gnoll sensors
for (int i = 0; i < TGT_SENSOR_QUAN; i++) {
- // scan all 16 sensors into sensor_values array
- ana_scan_mux(sensor_values, TGT_SENSOR_QUAN * 2);
- }
-
- // detect which sensor get lasered on
- for (int i = 0; i < TGT_SENSOR_QUAN + sensor_no; i++) {
- if (sensor_values[i] > THRESHOLD_SIGNAL)
+ // detect which gnoll sensor get lasered on
+ if (sensor_values[i + gnoll_no] > THRESHOLD_SIGNAL)
sensor_registered = true;
+ gnoll_sensor_indicator = i;
}
// if (reading sensor timer expired) display error and freeze
t.stop();
- if (t.read() > EXPIRED_TIMER) {
+ if (t.read() > WHACK_EXPIRED_TIMER) {
pc.printf("Error: Reading timer expired. See whack() function.\n");
while (1);
}
}
- // point whack’s laser to the corresponding sensor on it’s target array
+ // point whack’s laser to the corresponding sensor on whack target array
+ turn_to_target(stp_sensor_pos[sensor_no]);
+
+ // turn on whacker's laser
+ lzr_on();
+
+ // scan all 16 sensors into sensor_values array
+ ana_scan_mux(sensor_values, TGT_SENSOR_QUAN * 2);
+
+ t.start();
+ sensor_registered = false;
- // activate whacker’s laser
-
- while (signal from corresponding sensor value > THRESHOLD_SIGNAL) {
- if (finding sensor timer expired) display error and freeze
+ while (!sensor_registered) {
+ // scan all whack sensors
+ for (int i = 0; i < TGT_SENSOR_QUAN; i++) {
+ // detect which gnoll sensor get lasered on
+ if (sensor_values[i + sensor_no] > THRESHOLD_SIGNAL)
+ sensor_registered = true;
+ whack_sensor_indicator = i;
+ }
+
+ // if timer expire display error and freeze
+ t.stop();
+ if (t.read() > WHACK_EXPIRED_TIMER) {
+ pc.printf("Error: Reading timer expired. See whack() function.\n");
+ while(1);
+ }
}
- activate corresponding indicator
+ // activate corresponding indicator in whack LED row
+ led_command = 0x0500 + led_values[whack_sensor_indicator]);
+ spi_send(as1107, led_command);
// waiting for gnoll laser to turn off to turn off
- while (gnoll’s laser turned on) {}
+ do {
+ // scan all 16 sensors into sensor_values array
+ ana_scan_mux(sensor_values, TGT_SENSOR_QUAN * 2);
+ } while (sensor_values[gnoll_sensor_indicator + gnoll_no] > PT_THRESHOLD);
+
// turn off laer gnoll
lzr_off();
}
