Skip to content

Instantly share code, notes, and snippets.

@py4object
Created April 24, 2017 10:44
Show Gist options
  • Save py4object/e2e9401db79e0790c8e84d87869495d4 to your computer and use it in GitHub Desktop.
Save py4object/e2e9401db79e0790c8e84d87869495d4 to your computer and use it in GitHub Desktop.
// Grove - EMG Sensor demo code
// This demo will need a Grove - Led Bar to show the motion
// Grove - EMG Sensor connect to A0
// Grove - LED Bar connect to D8, D9
// note: it'll take about serval seconds to detect static analog value
// when you should hold your muscle static. You will see led bar from level 10 turn to
// level 0, it means static analog value get ok
int max_analog_dta = 300; // max analog data
int min_analog_dta = 100; // min analog data
int static_analog_dta = 0; // static analog data
// get analog value
int getAnalog(int pin)
{
long sum = 0;
for(int i=0; i<32; i++)
{
sum += analogRead(pin);
}
int dta = sum>>5;
max_analog_dta = dta>max_analog_dta ? dta : max_analog_dta; // if max data
min_analog_dta = min_analog_dta>dta ? dta : min_analog_dta; // if min data
return sum>>5;
}
void setup()
{
Serial.begin(115200);
//
// long sum = 0;
//
// for(int i=0; i<=10; i++)
// {
// for(int j=0; j<100; j++)
// {
// sum += getAnalog(A0);
// delay(1);
// }
//
// }
//
// sum /= 1000;
//
// static_analog_dta = sum;
}
int level = 5;
int level_buf = 5;
void loop()
{
int val = getAnalog(A0); // get Analog value
int level2;
// Serial.println("working");
Serial.println(val);
if(val>static_analog_dta) // larger than static_analog_dta
{
level2 = 5 + map(val, static_analog_dta, max_analog_dta, 0, 5);
}
else
{
level2 = 5 - map(val, min_analog_dta, static_analog_dta, 0, 5);
}
// to smooth the change of led bar
if(level2 > level)
{
level++;
}
else if(level2 < level)
{
level--;
}
if(level != level_buf)
{
level_buf = level;
}
delay(10);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment