Things used in this project

Hardware components:
Ard nano
Arduino Nano R3
any arduino is okay, im thinking on using tinyduino
×1
mpc41010
digital potenciometer
×1
09269 01
SparkFun Triple Axis Accelerometer Breakout - ADXL335
any analogoutput accelerometer is okay
×1
stereo audio jack 6,5 mm female adapter
×1
stereo audio jack 6,5 mm cable
×1
09264 1
RGB Diffused Common Cathode
just for fun, no needed
×1
Software apps and online services:
Ide web
Arduino IDE

Schematics

SCHEME ANKLE EXPRESSION PEDAL
Guitar%20pedal

Code

MAIN THINGArduino
main raw program, the rgb led or any pwm signal is catastrophic fro the accelerometer readings (noise)
#include <SPI.h>  
#define debug //comment this line if you´re not gonna use the serial data with the arduino ide

#define CS 10 //chipselect

#define accelerometerX A0//analogpins for the accelerometer
#define accelerometerY A1
#define accelerometerZ A2

#define RED 6 //rgb pins
#define GREEN 3
#define BLUE 5

//MCP41010 chip´s connection
//        39ohms per step of the  
//CS  10              U      vcc
//SCK 13 serial clock        PBO--UPRESISTOR
//SI  11 serial imput        PWO  INRESISTOR
//gnd                        PAO--BOTTOMRESISTOR




int datarray[18]={0,0,0,0,0,0,1023,1023,1023,0,0,0,0,0,0};
int smoothingarray[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int rgb[3];
int i=0,chipvalue=0;
int ResistorValue=0;
void setup() {
//
//pinMode (GREEN, OUTPUT);//GREEN RGB (PWM)
//pinMode (BLUE, OUTPUT);//BLUE
//pinMode (RED, OUTPUT);//RED  
//digitalWrite(GREEN, HIGH);//setting the led off at the begining
//digitalWrite (BLUE, HIGH);//
//digitalWrite (RED,  HIGH);//

pinMode (CS, OUTPUT);//chipselect for the  MCP41010 chip
pinMode (13, OUTPUT);//things are happening led 
pinMode (accelerometerX, INPUT);//acelerometer´s inputs
pinMode (accelerometerY, INPUT);//
pinMode (accelerometerZ, INPUT);//
  SPI.begin(); 
  MCP41010Write(0);//init value horizontal foot
  
#ifdef debug
Serial.begin(9600);
#endif
}

void loop() {
datarray[0]=analogRead(accelerometerX);
datarray[1]=analogRead(accelerometerY);
datarray[2]=analogRead(accelerometerZ);

comparemaxmin(datarray);

detectRange(datarray);

ResistorValue=map(datarray[datarray[15]],datarray[datarray[15]+6]+20,datarray[datarray[15]+3]-10,0,255);//+20 to the min and -10 to the max for preventing unreachable edges

chipvalue =constrain(ResistorValue,0,255);

MCP41010Write(smoothing(chipvalue));

//  //map(value, fromLow, fromHigh, toLow, toHigh)
// for(i=0;i<=2;i++){
//  rgb[i]=map(datarray[i],datarray[i+6],datarray[i+3],0,255);
// }
////analogWrite(GREEN, rgb[0]);//EL LED DA PROBLEMAS DE LECTURA ruido/////////////////////7
////analogWrite (BLUE, rgb[1]);//
////analogWrite (RED,  rgb[2]);//



#ifdef debug
      Serial.print("//RawReadings:  ");
      Serial.print(datarray[0]);
      Serial.print(" ");
      Serial.print(datarray[1]);
      Serial.print(" ");
      Serial.print(datarray[2]);
      
      Serial.print("     /max ");
      Serial.print(datarray[3]);
      Serial.print(" ");
      Serial.print(datarray[4]);
      Serial.print(" ");
      Serial.print(datarray[5]);

      Serial.print(" /min ");
      Serial.print(datarray[6]);
      Serial.print(" ");
      Serial.print(datarray[7]);
      Serial.print(" ");
      Serial.print(datarray[8]);

      Serial.print("    //GAP :");
      Serial.print(datarray[9]);
      Serial.print(" ");
      Serial.print(datarray[10]);
      Serial.print(" ");
      Serial.print(datarray[11]);

//      Serial.print("/?? ");
//      Serial.print(datarray[12]);
//      Serial.print(" ");
//      Serial.print(datarray[13]);
//      Serial.print(" ");
//      Serial.print(datarray[14]);

      Serial.print("  //axis choose ");
      Serial.print(datarray[15]);
      
      Serial.print("       //chip value ");
      Serial.print(chipvalue);
      
      Serial.println();
#endif
  delay(100);//delay for stability
}






void comparemaxmin(int datarray[])
{
  for(i=0;i<=2;i++)
datarray[i+3]=max(datarray[i],datarray[i+3]);

  for(i=0;i<=2;i++)
datarray[i+6]=min(datarray[i],datarray[i+6]);

}


void detectRange(int datarray[18])
{
  for(i=0;i<=2;i++)
  {
datarray[i+9]=abs(abs(datarray[i+3])-abs(datarray[i+6]));
  }
if(datarray[9]>=datarray[10]&&datarray[9]>=datarray[11])//choosing the axis with the wider range
datarray[15]=0;
if(datarray[10]>=datarray[9]&&datarray[10]>=datarray[11])
datarray[15]=1;
if(datarray[11]>=datarray[9]&&datarray[11]>=datarray[10])
datarray[15]=2;
}

void MCP41010Write(byte value) //speaking protocol with the mcp chip
{
  // Note that the integer value passed to this subroutine
  // is cast to a byte
  
  digitalWrite(CS,LOW);
  SPI.transfer(B00010001); // This tells the chip to set the pot
  SPI.transfer(value);     // This tells it the pot position
  digitalWrite(CS,HIGH); 
}

int smoothing(int data){
int result,j;

for(j=0;j<=14;j++){
  smoothingarray[j] =  smoothingarray[j+1]; 
}
smoothingarray[14]= data;

result=(smoothingarray[0]+smoothingarray[1]+smoothingarray[2]+smoothingarray[3]+smoothingarray[4])/5;
constrain(result,0,255);
return result;
}

Credits

Ltcqjr9usazbcjumiyay
javier muñoz sáez

Electronic engineer, musician and mad scientist

Replications

Did you replicate this project? Share it!

Love this project? Think it could be improved? Tell us what you think!

Give feedback

Comments

Similar projects you might like

Flightduino 101
Intermediate
  • 54
  • 2

Full instructions

A drone project that uses the Neural Pattern Recognition Module and other aspects of the Curie Module to advantage for creating a cool drone

Arduino 101 BLE App
Intermediate
  • 1,215
  • 16

Work in progress

I want to show you how to make an application and connect it with the Arduino 101 platform for Internet of things applications.

Bluetooth smart home
Intermediate
  • 174
  • 4

Full instructions

A concept showing smart home control and automation with Arduino 101, accompanied by a custom Android application.

Avoid Injuries with Smart Backpack
Intermediate
  • 747
  • 11

Full instructions

Smart Backpack helps you to avoid injuries caused by backpacks by alerting you about improper uses.

FM radio
Intermediate
  • 6,383
  • 29

Full instructions

Build a great sounding FM radio with a cool display using an Arduino Nano and the Sparkfun Si4703 FM tuner breakout

Controlling Arduino State Machine via Web
Intermediate
  • 420
  • 9

Full instructions

This video shows how to change state of state machine on Arduino via web.

ProjectsCommunitiesContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login
Respect project
Feedback