Physiothérapie Helper (Arduino adxl345 matrice) (2 / 2 étapes)

Étape 2: Fonction et programmation

Fonction

  • Appuyez sur le bouton de commande pour 3 secondes pour changer le Mode
    Mode 0: Voir la X uniquement
    Mode 1: Montrer Y seulement
    Mode 2: Voir la X et Y sur matrice de Point rouge
 <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> 

Pour plus d’informations sur l’installation de bibliothèques, consultez : http://www.arduino.cc/en/Guide/Libraries

Détail, veuillez consulter : http://www.imediabank.com

Articles Liés

Arduino Nano : Matrice clavier avec Visuino

Arduino Nano : Matrice clavier avec Visuino

Matrice de claviers sont parmi les moyens les plus simples et les plus populaires de conclure informations clavier micro-contrôleurs de type Arduino.Dans ce Instructable je vais vous montrer comment il est facile pour connecter Clavier matrice Arduin
Paracord Rotator coupe physiothérapie

Paracord Rotator coupe physiothérapie

Je suis un vieil homme, qui a été retraité 28 ans. C'est plus long que la plupart d'entre vous ont été en vie, mais j'ai eu bonne santé jusqu'à récemment quand je suis tombé dans mon jardin et s'est posé durement sur mon épaule droite. Le lendemain,
RepWrap - appareil à garder une trace de durée et répétitions pour les exercices de physiothérapie (prototype breadboarded)

RepWrap - appareil à garder une trace de durée et répétitions pour les exercices de physiothérapie (prototype breadboarded)

j'ai reçu une série d'exercices à faire par le kinésithérapeute, mais je suis poubelles à eux faisant, chaque petite chose que je peux faire pour les rendre moins une corvée est une bonne chose.J'ai prototypé un dispositif simple arduino pour prendre
Conduit affichage de la matrice colonne ligne numérisation à l’aide d’arduino

Conduit affichage de la matrice colonne ligne numérisation à l’aide d’arduino

Nous sommes tout trouvés d'afficheurs à Led à matrice de points. J'ai fait une Led matrice mais en utilisant des techniques différentes pour ce qui la stimule.J'ai essayé de le rendre semblable à un écran de télévision standard. J'ai utilisé les même
Matrice de LED Arduino

Matrice de LED Arduino

Dans ce bref didacticiel, vous apprendrez comment faire une matrice de LED alimenté par Arduino. Contrairement à plusieurs autres modèles, celui-ci utilise un ordinateur « compagnon » pour informer l'Arduino qui LEDs doivent être alimentées.J'ai four
Ergothérapie dextérité/Cognitive aide

Ergothérapie dextérité/Cognitive aide

/ * Style Definitions * / table. MsoNormalTable {mso-style-name: « Table Normal »; mso-tstyle-rowband-taille: 0; mso-tstyle-colband-taille: 0; mso-style-noshow:yes ; mso-style-priorité : 99 ; mso-style-qformat:yes ; mso-style-parent: "";" m
Interactive Arduino alimenté Coffee Table

Interactive Arduino alimenté Coffee Table

une évidence rapide note : Ceci est mon premier Instructable et mon premier grand projet Arduino, donc si vous voyez des erreurs stupides ou avez une idée de comment les choses pourraient être faites mieux, alors s'il vous plaît laissez-moi savoir.Ma
Flip accessoires animation en utilisant Arduino

Flip accessoires animation en utilisant Arduino

J'ai trouvé une lampe touch mignon à 100 yens shop a essayé de transformer les accessoires:-)J'ai décidé de faire les accessoires pour représenter l'animation flip en touche lumière.Il est bon décorer la poitrine. En outre, il peut se tiendra dans la
Souriant Arduino

Souriant Arduino

Salut! Vous aimez électronique ? Parce que je l'aime. En particulier, j'aime tout ce qui affiche les résultats, comme moniteur. Et aujourd'hui je vais vous montrer comment faire que l'Arduino va sourire (et faire des autres étoffes:). Donc cette inst
Kaleiduino : Alimenté par une batterie de Arduino LED Kaleidoscope

Kaleiduino : Alimenté par une batterie de Arduino LED Kaleidoscope

Bonjour à tous et Bienvenue sur mon Instructable ! Cette instructable va vous montrer comment j'ai fait le premier Arduino DIY jamais contrôlé « LED Kaléidoscope » !Ce qui est un kaléidoscope de LED ? Eh bien, notre traditionnels kaléidoscopes utilis
Pixel expédié Counter basée sur Arduino

Pixel expédié Counter basée sur Arduino

Plusieurs fois, nous utilisons souvent LCD comme écran de matériel, de moniteurs de température minuscule de gros équipements industriels.Le plus drôle dans ce projet, c'est qu'il combine deux rouge LED Matrices comme écran. Vous n'avez besoin d'autr
Arduino - affichage Mini Dot Matrix

Arduino - affichage Mini Dot Matrix

Dans ce projet Arduino, je vais vous montrer comment faire un mini matricielle utilisant deux modules de 8 par 8 LED conseil d'affichage.Pour ce projet, vous aurez besoin des éléments suivants :Carte Arduino CompatibleFils de raccordementCarte de pro
Arduino Ping pong avec 8 * 8 matricielle & Max7219

Arduino Ping pong avec 8 * 8 matricielle & Max7219

Il y a beaucoup d'Arduino tutoriel de ping pong sur internet. Mais la plupart d'entre eux sont pour deux joueurs. Comme personne à jouer avec moi ce qui m'a l'ai trouver un tutoriel qui est pour un seul joueur. Heureusement, j'ai trouvé un, mais c'es
Bras robotisé physiothérapeute...

Bras robotisé physiothérapeute...

Hey folks ! Je suis Nirzaree, une étudiante en génie électronique de l'Inde.Mes colocataires et moi avons fait un bras robotisé très simple qui peut aider les patients avec leurs exercices de physiothérapie... !Il utilise une carte contrôleur, atmega