Mercurial > ukubik
changeset 57:9c412415a8c1
fix accel and play on startup
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Sun, 24 Aug 2014 15:24:27 +0200 |
| parents | 008236195f5a |
| children | fccf0f6f6a12 |
| files | robot.py servo/servo.ino |
| diffstat | 2 files changed, 15 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/robot.py Sun Aug 24 14:48:44 2014 +0200 +++ b/robot.py Sun Aug 24 15:24:27 2014 +0200 @@ -51,14 +51,8 @@ leg.update(self.shift) def get_accel(self): - probes = 4 - accels = [] - for probe in range(probes): - accels.append(self.legs[0].hip.get_sensors()) - values = [0, 0, 0] - for i in range(3): - values[i] = int(float(sum(a[i] for a in accels)) / probes - self.accel_trim[i]) - return values + return [v - t for (v, t) in + zip(self.legs[0].hip.get_sensors(), self.accel_trim)] def beep(self, frequency, duration): self.legs[0].hip.beep(frequency, duration)
--- a/servo/servo.ino Sun Aug 24 14:48:44 2014 +0200 +++ b/servo/servo.ino Sun Aug 24 15:24:27 2014 +0200 @@ -64,7 +64,10 @@ accel_buffer[accel_buffer_index][0] = analogRead(A2); accel_buffer[accel_buffer_index][1] = analogRead(A1); accel_buffer[accel_buffer_index][2] = analogRead(A0); - accel_buffer_index = (accel_buffer_index + 1) % MAX_ACCEL_BUFFER; + accel_buffer_index += 1; + if (accel_buffer_index > MAX_ACCEL_BUFFER) { + accel_buffer_index = 0; + } } int _serial_read_word() { @@ -155,8 +158,8 @@ int z = 0; for (int i = 0; i < MAX_ACCEL_BUFFER; i += 1) { x += accel_buffer[i][0]; - y += accel_buffer[i][0]; - z += accel_buffer[i][0]; + y += accel_buffer[i][1]; + z += accel_buffer[i][2]; } Serial.write(0xff); Serial.write(map(x / MAX_ACCEL_BUFFER, 0, 676, 0, 255)); @@ -166,7 +169,9 @@ void do_beep() { /* Emit a beep of specified frequency and duration. */ - tone(A3, _serial_read_word(), Serial.read()); + int frequency = _serial_read_word(); + int duration = Serial.read(); + tone(A3, frequency, duration * 10); } void do_serial_command() { @@ -222,6 +227,10 @@ int servo; Serial.begin(SERIAL_SPEED); + pinMode(A3, OUTPUT); + tone(A3, 440, 100); + delay(20); + tone(A3, 220, 150); for (servo = 0; servo < MAX_SERVO; servo += 1) { /* First 2 pins are used for the serial. */ servos[servo].attach(servo + 2, SERVO_FREQ_MIN, SERVO_FREQ_MAX); @@ -235,10 +244,8 @@ unsigned long now = millis(); do_serial_command(); -/* if (now > last_tick + 100 || now < last_tick) { read_accel(); last_tick = now; } -*/ }
