int optoPin = 10; int optoValue = 0; int emgValue = 0; int emgPin = 0; int emgArray [100]; int emgDif; int emgLength = 100; // minimum and maximum values for mapping emg signals int minThresh; int maxThresh; /* unused code, possible use later to smooth out the signal int optoRange[100]; float averager = 0; */ int temp; void setup() { // start serial port at 9600 bps: Serial.begin(9600); pinMode(optoPin, OUTPUT); minThresh = 3; maxThresh = 12; } void loop() { for (int i = 0; i < emgLength; ++i) { emgValue = analogRead(emgPin); emgArray[i] = emgValue; /* possilbe future code for smoothing things out optoRange[i] = optoValue; if (i < emgLength - 1) { optoRange[i+1] = optoRange[i]; } */ } /* possible future code for later for (int j = 0; j < emgLength; ++j) { averager = averager + optoRange[j]; } averager = averager / 100; */ temp = emgArray[emgLength-1] - emgArray[0]; emgDif = abs(temp); if (emgDif > maxThresh) { emgDif = maxThresh; } if (emgDif < minThresh) { emgDif = minThresh; } Serial.print(minThresh); Serial.print('\t'); Serial.print(maxThresh); Serial.print('\t'); optoValue = map(emgDif, minThresh, maxThresh, 0, 255); // maps emg to optoisolator analogWrite(optoPin, optoValue); Serial.print(emgValue, DEC); Serial.print('\t'); // print a tab Serial.print(emgDif); // print the ASCII encoded hexadecimal analogValue Serial.print('\t'); // print a tab Serial.print(emgArray[0]); // print the ASCII encoded octal analogValue Serial.print('\t'); Serial.print(optoValue); Serial.println();