Fysiotherapie Helper (Arduino adxl345 matrix) (2 / 2 stap)

Stap 2: Functie en programmering


Functie

  • Druk op Control knop 3 seconden-modus wijzigen
    Mode 0: Toon X enige
    Mode 1: Y alleen weergeven
    Modus 2: Toon X en Y op Matrix door Red Point
 <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> 

Als u meer informatie wilt over het installeren van Bibliotheken, zie: http://www.arduino.cc/en/Guide/Libraries

Detail zie: http://www.imediabank.com

Gerelateerde Artikelen

DIY Arduino Dot Matrix polshorloge

DIY Arduino Dot Matrix polshorloge

Pols horloges zijn geweldig en fancy fashion accessoires voor mannen en vrouwen. Makers willen altijd iets anders gebruiken. Mijn diy arduino dot matrix polshorloge is de uiteindelijke uitvoer na één maand werken. Het horloge toont tijd, datum en tem
Arduino LED Matrix Kit

Arduino LED Matrix Kit

Arduino LED Matrix Kit is ontwikkeld zodat u met een 8 x 8 LED Matrix, een geïntegreerde schakeling MAX7219 en een Arduino werken kunt. In het project, zal u trekken, met behulp van een eenvoudige en korte code, een blij gezicht. You´ll tekent vervol
Eenvoudige Arduino Dot-Matrix beeldscherm

Eenvoudige Arduino Dot-Matrix beeldscherm

tegenwoordig zijn er vele Dot-matrix displays op de top van winkels of dit soort plaatsen.Dot-matrix heeft een eenvoudige idee achter, voor het maken en weergeven met LED of lamp puntjes.In deze handleiding wil ik u laten zien hoe een beginner en een
Arduino LED Matrix

Arduino LED Matrix

In deze korte tutorial leert u hoe maak je een Arduino-aangedreven LED-matrix. In tegenstelling tot verschillende andere ontwerpen gebruikt deze een een "metgezel"-computer in kennis te stellen van de Arduino die LEDs moeten worden gevoed.Ik heb
Arduino Nano: Matrix toetsenbord met Visuino

Arduino Nano: Matrix toetsenbord met Visuino

Matrix Keypads behoren tot de eenvoudigste en meest populaire manieren om het toetsenbord gegevens invoeren in de Arduino type micro-controllers.In dit Instructable zal ik u tonen hoe gemakkelijk het is Matrix toetsenbord verbinden met Arduino en pro
Arduino LED Matrix Clock

Arduino LED Matrix Clock

Deze klok maakt gebruik van vijf MAX7219 8 x 8 LED matrices om een klok weer te geven.De twee linker eenheden weergeven het uur, het recht twee de notulen en de middelste matrix telt af de seconden. Dit wordt bereikt door verhelderend één LED per sec
Arduino Dot Matrix Game Console

Arduino Dot Matrix Game Console

Slimme telefoon & iPad gaming is groot en alle liefde Candy Crush & Angry Birds, maar niets kan aanraken van de charme van het maken van een game console door eigen en speel mee. Het was 2003, toen kreeg ik een Nokia 3310 mobiele telefoon en ik ge
Arduino - Dot-Matrix scherm schrijven LED

Arduino - Dot-Matrix scherm schrijven LED

1. doelstellingenEen pen schrijven op dot-matrix scherm bereiken.2. circuit analyseDot-matrix scherm handschrift bestaat uit drie hoofdonderdelen: de rij scanning circuit kolom scannen circuit weergegeven, lichte pen detectie circuit, blokdiagram hie
Stem ingang Arduino Bi-color LED Matrix scrollen tekstweergave (Bluetooth + Android)

Stem ingang Arduino Bi-color LED Matrix scrollen tekstweergave (Bluetooth + Android)

Tijdens het browsen interessante projecten op Instructables, stuitte we op de indrukwekkende stem geactiveerd Arduino (Bluetooth + Android) instructable. Je kan check it out opOnlangs, hebben zetten we een instructable te bouwen een 7 Bi-color 8 x 8
Mislukking & succesverhaal van Arduino horloge

Mislukking & succesverhaal van Arduino horloge

Ik besloot om het bouwen van een Arduino binaire polshorloge. Ik weet dat een polshorloge moet klein in omvang zijn, zoals het is een wearable project. Daarvoor heb ik geselecteerd apparaat oppervlak-mount (SMD) zoals SMD LED, TQFP Atmega IC en SMD w
Arduino Tutorials (deel 4-21 Tutorial Pack)

Arduino Tutorials (deel 4-21 Tutorial Pack)

Dit is de Arduino Tutorial Pack deel 4.Het 1ste deel is hier beschikbaar:Het 2e deel is hier beschikbaar:Het 3e deel is hier beschikbaar:In tegenstelling tot andere tutorials hier geven niet ik elke achtergrond in theorie hoe het werkt. Het is hoe te
Kaleiduino: Een batterij aangedreven Arduino LED Caleidoscoop

Kaleiduino: Een batterij aangedreven Arduino LED Caleidoscoop

Hallo iedereen en welkom op mijn Instructable! Dit instructable zal u tonen hoe ik maakte de eerste ooit DIY Arduino gecontroleerd "LED Caleidoscoop"!Wat is een LED-Caleidoscoop? Nou, onze traditionele Caleidoscoop gebruikt 3 spiegels trad als e
Pixel verzonden teller op basis van Arduino

Pixel verzonden teller op basis van Arduino

Vele malen, gebruik we vaak van LCD zoals weergaveapparatuur, van kleine temperatuur monitoren tot grote industriële apparatuur.Het grappige ding in dit project is dat het combineert twee rode LED Matrices als vertoning. U hoeft geen andere apparaten