Pulse Necklace 15Nov2009
Hack Notes, pulse choker, Nov 15th, 2009
TENS Pad Electrodes
Op-Amp Experiment
Oscillascope Code
We got amazing code for a virtual Arduino oscilloscope from Poorman's oscilloscope and juse changed the serial port name to correspond to either Eric's or mine cable:
// Pulse Choker
// Chung-Hay and Eric
// Oct 1st, 2009
// Control 5 different lines of LEDs based on EKG
// Center top line is 5V shared across all LEDs
// EKG input pin = pin 2
int OuterTwosLeft = 13; // Left, right w/r/t to viewer, not wearer
int MiddleLeft = 12;
int CenterGrd = 11;
int MiddleRight = 10;
int OuterTwosRight = 9;
int val = 0;
int minval = 10000;
int maxval = 0;
float avg = 160; // common value, better than initing to zero
float stdev = 40;
int i;
void setup() {
pinMode(OuterTwosLeft, OUTPUT);
pinMode(OuterTwosRight, OUTPUT);
pinMode(MiddleLeft, OUTPUT);
pinMode(MiddleRight, OUTPUT);
pinMode(CenterGrd, OUTPUT);
digitalWrite(OuterTwosLeft, 1);
digitalWrite(OuterTwosRight, 1);
digitalWrite(MiddleLeft, 1);
digitalWrite(MiddleRight, 1);
digitalWrite(CenterGrd, 1);
Serial.begin(57600); // setup serial
}
void loop() {
/* digitalWrite(OuterTwosLeft, 1);
delay(500);
digitalWrite(OuterTwosRight, 1);
delay(500);
digitalWrite(MiddleLeft, 1);
delay(500);
digitalWrite(MiddleRight, 1);
delay(500);
digitalWrite(CenterGrd, 1);
delay(500);
digitalWrite(OuterTwosLeft, 0);
delay(500);
digitalWrite(OuterTwosRight, 0);
delay(500);
digitalWrite(MiddleLeft, 0);
delay(500);
digitalWrite(MiddleRight, 0);
delay(500);
digitalWrite(CenterGrd, 0);
delay(500);
*/
val = 0;
for (i=0; i < 8; i++)
{
val += analogRead(2); // read the input pin
}
val = val/8;
if (val > maxval)
maxval = val;
if (val < minval)
minval = val;
avg = avg*99.0/100.0 + (float)val/100.0;
stdev = sqrt ((stdev*99.0/100.0)*(stdev*99.0/100.0) + ((float)val-avg)*((float)val-avg)/100);
Serial.print(val);
Serial.print(" ");
Serial.print(minval);
Serial.print(" ");
Serial.print(maxval); // debug value
Serial.print(" ");
Serial.print(avg);
Serial.print(" ");
Serial.println(stdev);
if (val < (avg-stdev))
{
// Serial.println(val); // debug value
digitalWrite(OuterTwosLeft, 0); // 0 = lit // this LED not working, unless you push down at wire connection area
digitalWrite(OuterTwosRight, 0);
digitalWrite(CenterGrd, 0); // this LED not working
digitalWrite(MiddleLeft, 0);
digitalWrite(MiddleRight, 0); // this LED not working
}
else
{
digitalWrite(OuterTwosLeft, 1); // 1 = off
digitalWrite(OuterTwosRight, 1);
digitalWrite(CenterGrd, 1);
digitalWrite(MiddleLeft, 1);
digitalWrite(MiddleRight, 1);
}
//Serial.println("test");
}