Auxiliar de fisioterapia (Arduino adxl345 matriz) (2 / 2 paso)

Paso 2: Función y programación

Función

  • Control botón 3 segundos para cambiar el modo
    Modo 0: Mostrar X sólo
    Modo 1: Mostrar Y sólo
    Modo 2: Mostrar X e Y en matriz de punto rojo
 <p>/*<br> * iMediaBank 201605 * * ONLY for ADXL345 XYZ Sensor * * Connect -ADXL345 and Arduino * I2C : SDA : A4 (Digispark D0) SCL : A5 (Digispark D2) SDO : GND CS : V++ * * * Connect Matrix 8x8 and Arduino : * CLK : PIN 11 * CS : PIN 10 * DIN : PIN 12 * * */</p><p>#include <wire.h> #include "LedControl.h" #define DEVICE (0x53) //ADXL345 device address #define TO_READ (6) //num of bytes we are going to read each time (two bytes for each axis) byte buff[TO_READ] ; //6 bytes buffer for saving data read from the device char str[512]; //string buffer to transform data before sending it to the serial port int regAddress = 0x32; //first axis-acceleration-data register on the ADXL345 int x, y, z; //three axis acceleration data double roll = 0.00, pitch = 0.00; //Roll & Pitch are the angles which rotate by the axis X and y //in the sequence of R(x-y-z),more info visit // https://www.dfrobot.com/wiki/index.php?title=How_...></p><p>// --------------------------- Matrix int matrix = 1; LedControl lc=LedControl(12,11,10,matrix); /* we always wait a bit between updates of the display */ unsigned long delaytime=100;</p><p>// ----------------------------- Control Button int ctrlBtn = 2; // Control Button int dispMode = 2; // Display Mode (x, y, z, xyz and freePoint)</p><p>// -------------------------------- Reset Matrix void resetMatrix() { for (int k=0;k<matrix; k++)="" {="" ="" lc.shutdown(k,false);="" *="" set="" the="" brightness="" to="" a="" medium="" values="" lc.setintensity(k,8);="" and="" clear="" display="" lc.cleardisplay(k);="" } ="" }="" ------------------------------="" reset="" matrix="" end<="" p=""></matrix;></p><p>// ------------------------------- Setup void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(115200); // start serial for output //Turning on the ADXL345 writeTo(DEVICE, 0x2D, 0); writeTo(DEVICE, 0x2D, 16); writeTo(DEVICE, 0x2D, 8);</p><p> resetMatrix();</p><p>}</p><p>const int XYZSize = 3; byte XYZ[XYZSize][8]={ {B00100100, B00011000, B00100100, B00000000, B11111111, B00000000, B11111111, B00000000}, // X {B01010000, B01010000, B01010100, B01010011, B01010100, B01010000, B01010000, B01010000}, // Y //{B01001000, B01011000, B01101000, B00000000, B00000000, B00111111, B00111111, B00000000}, // Z //{B10011111, B01011111, B00000000, B10000111, B10000111, B00000000, B10001111, B11001111}, //XYZ {B00000000, B01000000, B00000000, B00011100, B00011000, B00010100, B00000010, B00000001}}; // Free Point</p><p>// -------------------------- writeMatrix void writeMatrix() { for (int j=0; j<xyzsize;j++) {="" ="" for="" (int="" i="0;" i<8;="" i++)="" lc.setrow(0,i,xyz[j][7-i]);="" lc.setcolumn(0,i,xyz[j][7-i]);="" delay(delaytime);="" }="" }<="" p=""></xyzsize;j++)></p><p>} // ---------------------------- writeMatrix END</p><p>// -------------------------- Display Matrix void displayMatrix(int matrixIndex) { for (int i=0; i<8; i++) { lc.setRow(0,i,XYZ[matrixIndex][7-i]); //lc.setColumn(0,i,XYZ[matrixIndex][7-i]); //delay(delaytime); } } // ---------------------------- display Matrix END</p><p>// -------------------------- Signle int oldx = 0, oldy = 0; void single(int x, int y) { if ((oldx != x) || (oldy != y)) lc.setLed(0, oldx, oldy,false); lc.setLed(0,x,y,true);</p><p> oldx = x; oldy = y; } //-------------------------------- Single END</p><p>// ----------------------------------------- LOOP void loop() {</p><p> if (digitalRead(ctrlBtn) == false) { readFrom(DEVICE, regAddress, TO_READ, buff); //read the acceleration data from the ADXL345 //each axis reading comes in 10 bit resolution, ie 2 bytes. Least Significat Byte first!! //thus we are converting both bytes in to one int x = (((int)buff[1]) << 8) | buff[0]; y = (((int)buff[3])<< 8) | buff[2]; z = (((int)buff[5]) << 8) | buff[4]; //we send the x y z values as a string to the serial port Serial.print("The acceleration info of x, y, z are:"); sprintf(str, " %d %d %d", x, y, z); Serial.print(str); Serial.write(10);</p><p> int xx = map(x, 280, -245, 0, 7); int yy = map(y, 280, -245, 7, 0); sprintf(str, " %d / %d : %d", xx, yy, dispMode); Serial.println(str); </p><p> switch (dispMode) { case 0 : // X displayMatrix(dispMode); single(2, xx); break; case 1 : // Y displayMatrix(dispMode); single(yy, 2); break; case 2 : // Free Point single(yy, xx); break; default: single(yy, xx); break; } /* //Roll & Pitch calculate RP_calculate(); Serial.print("Roll:"); Serial.println( roll ); Serial.print("Pitch:"); Serial.println( pitch ); Serial.println(""); //It appears that delay is needed in order not to clog the port */ delay(100); } else { // -------------------------- Control Mode dispMode++; if (dispMode >= 3) dispMode = 0; Serial.println(dispMode); displayMatrix(dispMode); delay(3000); lc.clearDisplay(0); }</p><p>} //------------------------------ LOOP end </p><p>//---------------- ADXL345 Functions //Writes val to address register on device void writeTo(int device, byte address, byte val) { Wire.beginTransmission(device); //start transmission to device Wire.write(address); // send register address Wire.write(val); // send value to write Wire.endTransmission(); //end transmission } //reads num bytes starting from address register on device in to buff array void readFrom(int device, byte address, int num, byte buff[]) { Wire.beginTransmission(device); //start transmission to device Wire.write(address); //sends address to read from Wire.endTransmission(); //end transmission Wire.beginTransmission(device); //start transmission to device Wire.requestFrom(device, num); // request 6 bytes from device int i = 0; while(Wire.available()) //device may send less than requested (abnormal) { buff[i] = Wire.read(); // receive a byte i++; } Wire.endTransmission(); //end transmission } //calculate the Roll&Pitch void RP_calculate(){ double x_Buff = float(x); double y_Buff = float(y); double z_Buff = float(z); roll = atan2(y_Buff , z_Buff) * 57.3; pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3; }</p> 

Para obtener información sobre la instalación de bibliotecas, consulte: http://www.arduino.cc/en/Guide/Libraries

Detalles, consulte: http://www.imediabank.com

Artículos Relacionados

Alambre 3 Arduino teclado matriz

Alambre 3 Arduino teclado matriz

Teclado conectado con sólo 3 cables a Arduino.Fondo:Un teclado de matriz puede conectarse a una placa Arduino para que los datos numéricos pueden ser introducidos por el usuario.Instrucciones existen en diversos foros sobre cómo hacerlo. El principal
Matriz de LED con Arduino

Matriz de LED con Arduino

Hola, soy Javier de Makespace Madrid. La semana pasada organizamos una quedada para jugar con matrices de LED y Arduinos. Esto fue parte de "La noche de la electrónica con Jameco"Este instructivo está basado en el taller. Utiliza una sola matriz
Arduino Ping pong con matriz de punto de 8 * 8 y Max7219

Arduino Ping pong con matriz de punto de 8 * 8 y Max7219

Hay un montón de tutorial de Arduino ping pong por internet. Pero la mayoría de ellos son para dos jugadores. Como no queda otra que jugar conmigo así que me encontrar un tutorial que es para un solo jugador. Por suerte he encontrado uno pero es no q
LED pantalla de matriz de fila columna análisis mediante arduino

LED pantalla de matriz de fila columna análisis mediante arduino

Somos muy encontradas de pantallas de Led de matriz de puntos. He hecho un Led matriz pero usando diferentes técnicas para conducirlo.He intentado hacer similar a la pantalla de televisión estándar. He utilizado las mismas técnicas usadas en la telev
Matriz de punto rojo de 8 x 8 con Arduino

Matriz de punto rojo de 8 x 8 con Arduino

Necesita LedControl.h para el IDE de Arduino.Paso 1: Lo que necesitaráArduino o clon de ArduinoMatriz de puntos de 8 x 8 con tablero de conductor5 macho a hembra Jumper cablesSi usted recibe estas cosas de eBay su sobre AU $10.Paso 2: cableadoVCC va
Arduino powered tres Color 8 x 8 Led matriz

Arduino powered tres Color 8 x 8 Led matriz

cómo conectar tres colores, como en rojo, verde y azul, 8 columnas por 8 filas LEDs a un Arduino.  El número de modelo de la matriz en uso es CRM-2388ARGB-L.  No vino con las instrucciones de cableado, establecidas con una batería de 9 voltios y una
Accesorios de animación usando Arduino del tirón

Accesorios de animación usando Arduino del tirón

Encontré una lindo toque luz en tienda de 100 yenes intentado remodelar los accesorios :-)Decidí hacer los accesorios para representar a la animación en toque de luz.Es bueno adornar el pecho. Además, puede celebrarse en la mano.Paso 1: Materiales y
Sonriendo Arduino

Sonriendo Arduino

¡ Hola! ¿Te gusta la electrónica? Porque me encanta. Sobre todo me encanta todo lo que muestra los resultados, como el monitor. Y hoy te voy a mostrar cómo hacer que sonreirá Arduino (y algunas otras materias:). Así que este instructable es diversión
Kaleiduino: Caleidoscopio de LED Arduino alimentado por una batería

Kaleiduino: Caleidoscopio de LED Arduino alimentado por una batería

Hola a todos y Bienvenido a mi Instructable. Este instructable le mostrará cómo hice el primer Arduino DIY siempre controlado "LED caleidoscopio"!¿Qué es un caleidoscopio de LED? Bien, nuestros tradicionales caleidoscopios usa 3 espejos se incor
Pixel envía contador basado en Arduino

Pixel envía contador basado en Arduino

Muchas veces, a menudo se utiliza LCD como pantalla de equipo de monitores de temperatura pequeñas a grandes equipos industriales.Lo curioso de este proyecto es que combina dos rojo LED Matrices como pantalla. No necesita otros dispositivos excepto A
Arduino - Display Mini Dot Matrix

Arduino - Display Mini Dot Matrix

En este proyecto de Arduino te mostraré cómo hacer una mini matriz de punto pantalla utilizando dos módulos de 8 por 8 LED tablero.Para este proyecto usted necesitará los siguientes componentes:Board compatible con ArduinoCables de puentePlaca de pro
Interactivo Arduino Powered mesa

Interactivo Arduino Powered mesa

una rápida delantera Nota: este es mi primer Instructable y mi primer gran proyecto de Arduino, así que si ves cualquier error estúpido o tener una idea de cómo las cosas podrían hacerse mejor, entonces por favor hágamelo saber.Ahora que el que está
Tutoriales de Arduino (parte 4-21 Tutorial Pack)

Tutoriales de Arduino (parte 4-21 Tutorial Pack)

Se trata de Arduino Tutorial Pack parte 4.La 1ª parte está disponible aquí:La 2ª parte está disponible aquí:La parte 3 está disponible aquí:A diferencia de otros tutoriales aquí no doy ningún fondo en teoría funciona. Está orientada al resultado como
Kit de Arduino LED Matrix

Kit de Arduino LED Matrix

Kit de matriz de LED Arduino fue desarrollado para que pueda trabajar con una matriz de LED 8 x 8, un circuito integrado MAX7219 y un Arduino. En el proyecto, se dibujar, utilizando un código fácil y corto, una cara feliz. A continuación, you´ll dibu