Category Archives: Feldman Project

Tom DeVito 8.16.2011

Start: 9:45

  • Got the new exciters today.  They are not too big and have much better tone and volume.
  • Need to add music to my laptop tonight so we can see how it sounds with music.
  • Working on getting the console to print toStrings for various classes.  Fixed many errors but am stuck on error with the round function of the math.h file.  Not sure where its being called or what is causing it.

Dentist 3:30 -5:00

End:7:15

Tom DeVito 8.9.2011

Start: 9:15

  • Took sensor voltage divider off the the prototyping board to make room for other electronics and put it on its own circuit board
  • The resistor for the sensor voltage divider is 7k
  • organized the box of resistors a little better after having a really hard time finding 1k resistors
  • Tried to get the arduinos sound controls classes toString to print to my console but it didn’t work.  Trying to fix this.

End: 5:30

Tom DeVito 8.5.11

Start: 9:20

  • Got the sketch to work with the sound libraries.  I can now instantiate the classes for controlling more fingers when needed.
  • Looked into a c/c++ audio api:  BASS audio library looks pretty good.  It has effects and everything needed to record and playback various file formats.  Haven’t played with it yet.  There is also a version for JAVA.
  • Added a message class to the computer com console program.  This is used to receive the outputs of various classes and help organize them by priority grouping.
  • Will experiment on Monday to see which way is best to mount the exciters to the prototype tube .  Also going to put the electronics together for the second fingers amplifier.  I hope the SOMO can output to two channels.  We’ll see, if not i guess i could use the oscillator as a second audio source.

End: 5:40

Tom De Vito 8.4.2011

Start: 11:30

  • Got the first simulation for the audio-tactile feedback system to work.
  • The pressure sensors seem to respond very well and with some tweaking it can feel natural.  Pressure on the sensor makes the simulated number go down, touching the pad with very light pressure holds it at whatever position you are at, and releasing makes the number go up again.  It will be interesting to see how it works with more fingers.
  • The sound module is extremely slow and there is no really good way to loop the track.  Longer samples will help reduce this issue.
  • Tried both the 1W exciters and the bass shaker.  The bass shaker is a bit bulky which makes it not ideal for having multiple fingers.  It still might be cool to have this in the base of the next prototype to give you a thump when you make initial contact with a object.  The 1 W exciters put out a good amount of vibration with less sound.  The form factor of these will allow us to have more of them per finger and on the palm to give better feedback of which parts are touching.  I have not tried the 30W exciter yet.  It is also bulky but may be good for the center of the palm.
  • Phil came up with a new idea to use the PC to produce the more realistic sounds like servo motors or collisions with object of different materials.  This would allow us to use whatever sound we like without having to worry about the vibrational properties of the tone.  It also allows for feedback of motion in free space without activating tactile vibrations that should only be used for touch.
  • There are a few glitches that need to be worked out plus I took a couple of shortcuts to make testing easier.  Currently everything is in one sketch because it was quicker to smooth out the problems then if it was split into the appropriate classes.  It is also running autonomously at the moment with no computer interaction.  I will have to fix this to make scaling to a multi-finger prototype easier.

end: 7:30

Tom DeVito 7.29.2011

  • I found its very important to insulate the high-powered amplifier from the 1W amplifier using capacitors.  If not the lower powered amp overheats
  • Switched the resistor for the amp control signal back to 2 1k resistors in Parallel and reverted the signal values to their original.  I was having a lot of weird issues but this seemed to fix it.
  • The sound still seems to be wavering a bit but this may be the sample.
  • Amplifier is now working correctly.  Mute is not needed because the volume gets low enough.  A jump is required from “mute” to first audiable.
  • In trying to find a way to auto loop a track, with the least interruptions possible, I found that the best way will probably be to use the busy line on the somo and send a replay track command whenever it stops.  I didn’t experiment with this yet.

Tom DeVito 7.29.2011

Start :11:30

  • Fixed the problem with the 1w amplifier.  Mute isn’t working though.  Holding it the on state for now
  • Changed the amplifer class to use percentage of maximum instead of steps
  • Trying to figure out a way to loop the same track with the SOMO
  • Tried a couple thing but it seems I cannot stop the sound from skipping.  Made a longer sample so this is less of a problem.

End: 7:30

Tom DeVito 7.27.2011

Start: 11:30

  • Made sure everything was powered and shared grounds properly
  • Phil said he wants it to have an “up force” that will bring it to rest at 100.  Pressure greater then the up force will cause the number to decrease to zero.  When it gets to zero it is considered touching and the sound will start at a volume proportional to the force.
  • Decided that for this simulation I can do all the complicated stuff on the arduino side.  I will use the pc console program to display results because it will look better then the Arduinos.  I will probably also add start, stop, and reset key-strokes.
  • Fixed some of the problems with the SOMO library which were causing some methods not to work
  • Added a method to the sound libraries to return a data struct with the status of the devices.  The console will receive and display the data.
  • Still having trouble with the 1W amplifier.  Considered switching back to the parallel resistors since the closest single resistor is slightly less resistant.  I have post it notes that have the values but I forgot how I calculated them.  The post on  2.9.2011 might help.  I will look into it tomorrow.

End: 7:30

Tom DeVito 7.27.2011

Start: 11:15

  • got SOMO working.  The ground didn’t seem to be connected good enough.
  • Found out there is a split in the middle of the prototyping boards power and ground in the middle.  Need to make sure that you have it on the right side
  • got pressure sensor working.  It has really good sensitivity
  • Tested bass shaker.  Found track 9 to be the best tone for our purpose
  • Need the track to play continuously.  Will look into this.
  • The 1W amplifier is much quicker then the somo, so it can handle mute/volume changes.  It also has more steps for a smoother change.
  • Started code for simulation

End: 7:40

Tom DeVito 7.26.2011

10:30:

  • Rewired circuit
  • The circuit should now be able to mute the amplifier
  • having a problem with the SOMO not playing
  • adjusted values for the rheostat to account for different resistors being used

6:30

Tom DeVito 7.22.2011

  • Continued working on the sound controller
  • Added commands
  • started writing the decision process
  • Added to string which will show current track, volume, state
  • made a test sketch to see if the libraries could call arduino functions without any extra includes from a library.
  • Looked up wiring diagrams

Tom DeVito 7.20.2011

Start: 11:00

  • Separated the SOMO and Amplifer methods into different classes.
  • Started working on the SoundController to process commands

Dentist Appointment: 1:30 – 3:00

  • Started working on the Command class.  Checks if the commands are valid and increments the uid
  • Set up console so it will be able to keep track of the state of the Arduino sound controller through a response struct.
  • Decided to rewire the circuit because the mute ability couldn’t be used as it was.  Also I was having a hard time determining which arduino port each wire went to.  I will have to label them this time.

End: 7:30

Tom DeVito 7.14.2011

Start: 11:00

  • After much effort to change the way the receive worked, I found that the problem was much simpler.
  • The importData which was being used, is the one from DataDictionary not the one that was in the arduino communication class prototype.  Therefore, the state didn’t matter and this was always being called constantly importing the last recieveBuffer.
  • Changed where this was called so it will only import when new data is received.
  • Added error checking so that importData didn’t try to import and empty array.
  • Added a clear array function which gets called after importingData so that the receiveBuffer is empty until the next data is received.
  • Moved Arduino communication methods to a new library to keep the arduino sketch from getting to cluttered
  • Started a new sketch to be the main arduino controller.

End: 7:10

Tom DeVito 7.11.2011

Start: 10:35

  • Was confused because the arduino did not seem to be updating but it was because the characters were invisible.
  • the arduino will send one time but the pc doesn’t seem to update after it receive the first array of data.
  • PurgeComm seems to be the method to clear the pc side buffer.  This does lead to another problem if the arduino sends in the middle of a purge.
  • The state needs to be sent on every cycle so each side knows if the other side is ready.
  • I think making cases for different byte sequences might be the way to go.  One sequence will start the data ingestion, another will stop it, clear the buffer, and signal that it is ready for more data
  • WaitCommEvent maymake this easier but I’m not sure yet.

end: 6:45

Thomas DeVito 7.7.2011

Start 10:15

  • Found out why the send and receive methods were not working.  At some point I changed the char* to the buffer to a pointer to the pointer.
  • Send was not syncing properly with the PC side. moved it so it sent once for testing purpose on reset.
  • Sending is working but the echo back is incomplete
  • Added a state for standby where the arduino sends nothing til the first command is recieved.  This is to make sure it syncs properly
  • Decided to send a struct with the data instead of sending the data as an object.  Struct contains the name, size, and data.
  • Add method getStruct(name) and importStruct(name) to the DataDictionary.

End: 6:15