From cabcbbc0d247166cadbfc5848023b580b237e5c9 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 2 Nov 2012 16:49:08 -0700 Subject: [PATCH] Latest work --- SerialInterface.cpp | 5 +++-- SerialInterface.h | 2 +- audio.cpp | 2 +- hardware/head_hand/head_hand.pde | 13 +++++++++++-- .../UserInterfaceState.xcuserstate | Bin 97488 -> 97287 bytes main.cpp | 9 +++++---- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/SerialInterface.cpp b/SerialInterface.cpp index 427c184812..3d95fbbc16 100644 --- a/SerialInterface.cpp +++ b/SerialInterface.cpp @@ -72,14 +72,15 @@ int read_sensors(int first_measurement, float * avg_adc_channels, int * adc_chan // At end - Extract value from string to variables if (serial_buffer[0] != 'p') { - sscanf(serial_buffer, "%d %d %d %d %d %d %d", + sscanf(serial_buffer, "%d %d %d %d %d %d %d %d", /* Needs to match Num Channels */ &adc_channels[0], &adc_channels[1], &adc_channels[2], &adc_channels[3], &adc_channels[4], &adc_channels[5], - &adc_channels[6]); + &adc_channels[6], + &adc_channels[7]); for (int i = 0; i < NUM_CHANNELS; i++) { if (!first_measurement) diff --git a/SerialInterface.h b/SerialInterface.h index 87e51d9cb5..e2bb82fde1 100644 --- a/SerialInterface.h +++ b/SerialInterface.h @@ -9,7 +9,7 @@ int init_port (int baud); int read_sensors(int first_measurement, float * avg_adc_channels, int * adc_channels); -#define NUM_CHANNELS 7 +#define NUM_CHANNELS 8 #define SERIAL_PORT_NAME "/dev/tty.usbmodem411" #endif diff --git a/audio.cpp b/audio.cpp index 13f6d54ec9..5e8e57ff88 100644 --- a/audio.cpp +++ b/audio.cpp @@ -149,7 +149,7 @@ bool Audio::init() 2, // output channels paFloat32, // sample format 44100, // sample rate (hz) - 256, // frames per buffer + 512, // frames per buffer audioCallback, // callback function (void*)data); // user data to be passed to callback if (err != paNoError) goto error; diff --git a/hardware/head_hand/head_hand.pde b/hardware/head_hand/head_hand.pde index 3719d5ba45..7e4bb60955 100644 --- a/hardware/head_hand/head_hand.pde +++ b/hardware/head_hand/head_hand.pde @@ -2,11 +2,19 @@ Read a set of analog input lines and echo their readings over the serial port with averaging */ +// ADC PIN MAPPINGS +// +// 0, 1 = Head Pitch, Yaw gyro +// 2,3,4 = Head Accelerometer +// 10,11,12 = Hand Accelerometer + #define NUM_CHANNELS 8 #define AVERAGE_COUNT 100 +#define TOGGLE_LED_SAMPLES 1000 int inputPins[NUM_CHANNELS] = {0,1,2,3,4,10,11,12}; + int measured[NUM_CHANNELS]; float accumulate[NUM_CHANNELS]; @@ -28,7 +36,7 @@ void loop() int i; sampleCount++; for (i = 0; i < NUM_CHANNELS; i++) { - if (sampleCount % NUM_SAMPLES == 0) { + if (sampleCount % AVERAGE_COUNT == 0) { measured[i] = accumulate[i] / AVERAGE_COUNT; SerialUSB.print(measured[i]); SerialUSB.print(" "); @@ -37,7 +45,8 @@ void loop() accumulate[i] += analogRead(inputPins[i]); } } - if (sampleCount % NUM_SAMPLES == 0) SerialUSB.println(""); + if (sampleCount % AVERAGE_COUNT == 0) SerialUSB.println(""); + if (sampleCount % TOGGLE_LED_SAMPLES == 0) toggleLED(); } diff --git a/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate b/interface.xcodeproj/project.xcworkspace/xcuserdata/philip.xcuserdatad/UserInterfaceState.xcuserstate index 8cfc080bbe9d158bbf36ff22d920cac4afd027ae..9a297636f2f984f45ee60bbfacc181d74808f844 100644 GIT binary patch delta 31197 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 HIQ9PlWEz7G delta 30946 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 diff --git a/main.cpp b/main.cpp index abdb8e5bc8..5aa33a44ab 100644 --- a/main.cpp +++ b/main.cpp @@ -469,13 +469,14 @@ void update_pos(float frametime) // Update hand/manipulator location for measured forces from serial channel const float MIN_HAND_ACCEL = 30.0; - glm::vec3 hand_accel(avg_adc_channels[4] - adc_channels[4], - avg_adc_channels[5] - adc_channels[5], - avg_adc_channels[6] - adc_channels[6]); + const float HAND_FORCE_SCALE = 0.5; + glm::vec3 hand_accel(-(avg_adc_channels[6] - adc_channels[6]), + -(avg_adc_channels[7] - adc_channels[7]), + -(avg_adc_channels[5] - adc_channels[5])); if (glm::length(hand_accel) > MIN_HAND_ACCEL) { - myHand.addVel(hand_accel*frametime); + myHand.addVel(frametime*hand_accel*HAND_FORCE_SCALE); } // Update render direction (pitch/yaw) based on measured gyro rates