Things used in this project

Hardware components:
Ard nano
Arduino Arduino Nano R3
any arduino is okay, im thinking on using tinyduino
×1
mpc41010
digital potenciometer
×1
09269 01
SparkFun 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 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

Contact

Replications

Did you replicate this project? Share it!

I made one

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

Give feedback

Comments

Similar projects you might like

Self Balancing Robot Using Mpu6050 Accelerometer
Intermediate
  • 32
  • 4

Protip

this is self balancing robot on two wheels using mpu6050 accelerometer based on arduino..

Dancing Autobot
Intermediate
  • 25
  • 3

Protip

this is our project..and new thats called autobot with dancing like michael jackson....

Arduino on Internal Oscillator Crystal as Clock Source
Intermediate
  • 958
  • 72

Protip

Want to make an Arduino having only an ATmega328 chip and nothing else? Not even the crystal oscillator!

Reducing Arduino Power Consumption
Intermediate
  • 1,190
  • 98

Protip

One the most important feature of portable electronics should be long battery life. We can reduce the current drawn by several ways.

Node-Red and MQTT for Your IoT Projects
Intermediate
  • 122
  • 3

Work in progress

The idea is to create an environment running an MQTT Server, Mosquitto, and Node-Red, and start developing projects with connected sensors.

Tweeting Garden Assistant
Intermediate
  • 109
  • 2

Full instructions

This project, titled Plant Monitoring Assistant, aims to help its users monitor their beloved plants.

ProjectsCommunitiesTopicsContestsLiveAppsBetaFree StoreBlogAdd projectSign up / Login