"9 graden van vrijheid" IMU (10 / 12 stap)

Stap 10: Praat met gyroscoop met I2C


De volgende code moet uitprinten van de X-, Y- en Z rauwe gyro gegevens naar de seriële Monitor. De uitvoer voor mijn board is hierboven weergegeven.

#include < Wire.h > #define GYRO_ADDRESS ((int) 0x68) / / 0x68 = 0xD0 / 2 #define OUTPUT__BAUD_RATE 57600 #define STATUS_LED_PIN 13 / / pincode van status-LED / / Arduino achterwaartse compatibiliteit macro's #if ARDUINO > = 100 #define WIRE_SEND(b) Wire.write((byte) b) #define WIRE_RECEIVE() Wire.read() #else #define Wire.receive() #endif WIRE_RECEIVE() WIRE_SEND(b) Wire.send(b) #define float gyro [3]; int num_gyro_errors = 0; Boole output_errors = false; void setup {Wire.begin(); / / i2c bus (adres facultatief voor master) join Serial.begin(OUTPUT__BAUD_RATE); / / start seriële voor uitvoer / / Init status-LED pinMode (STATUS_LED_PIN, OUTPUT); digitalWrite (STATUS_LED_PIN, laag); / / Init sensoren delay(50); / / sensoren geven genoeg tijd om te beginnen Gyro_Init(); / / Lees sensoren, init DCM algoritme vertraging(20); / / sensoren genoeg tijd te geven om gegevens te verzamelen} void Gyro_Init() {/ / Power up resetten standaard Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x3E); WIRE_SEND(0x80); Wire.endTransmission(); delay(5); Selecteer volledige bereik van de sensoren gyro / / Set LP filter bandbreedte tot 42 Hz Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x16); WIRE_SEND(0x1B); DLPF_CFG = 3, FS_SEL = 3 Wire.endTransmission(); delay(5); Monster rato ingesteld op 50 Hz Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x15); WIRE_SEND(0x0A); SMPLRT_DIV = 10 (50Hz) Wire.endTransmission(); delay(5); PLL klok instellen met z gyro referentie Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x3E); WIRE_SEND(0x00); Wire.endTransmission(); delay(5); } / / Leest x, y en z gyroscoop registreert nietig Read_Gyro() {int i = 0; byte buff [6]; #include <Wire.h> #define GYRO_ADDRESS ((int) 0x68) // 0x68 = 0xD0 / 2 #define OUTPUT__BAUD_RATE 57600 #define STATUS_LED_PIN 13 // Pin number of status LED // Arduino backward compatibility macros #if ARDUINO >= 100 #define WIRE_SEND(b) Wire.write((byte) b) #define WIRE_RECEIVE() Wire.read() #else #define WIRE_SEND(b) Wire.send(b) #define WIRE_RECEIVE() Wire.receive() #endif float gyro[3]; int num_gyro_errors = 0; boolean output_errors = false; void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(OUTPUT__BAUD_RATE); // start serial for output // Init status LED pinMode (STATUS_LED_PIN, OUTPUT); digitalWrite(STATUS_LED_PIN, LOW); // Init sensors delay(50); // Give sensors enough time to start Gyro_Init(); // Read sensors, init DCM algorithm delay(20); // Give sensors enough time to collect data } void Gyro_Init() { // Power up reset defaults Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x3E); WIRE_SEND(0x80); Wire.endTransmission(); delay(5); // Select full-scale range of the gyro sensors // Set LP filter bandwidth to 42Hz Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x16); WIRE_SEND(0x1B); // DLPF_CFG = 3, FS_SEL = 3 Wire.endTransmission(); delay(5); // Set sample rato to 50Hz Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x15); WIRE_SEND(0x0A); // SMPLRT_DIV = 10 (50Hz) Wire.endTransmission(); delay(5); // Set clock to PLL with z gyro reference Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x3E); WIRE_SEND(0x00); Wire.endTransmission(); delay(5); } // Reads x, y and z gyroscope registers void Read_Gyro() { int i = 0; byte buff[6]; Wire.beginTransmission(GYRO_ADDRESS); WIRE_SEND(0x1D); // Sends address to read from Wire.endTransmission(); Wire.beginTransmission(GYRO_ADDRESS); Wire.requestFrom(GYRO_ADDRESS, 6); // Request 6 bytes while(Wire.available()) // ((Wire.available())&&(i<6)) { buff[i] = WIRE_RECEIVE(); // Read one byte i++; } Wire.endTransmission(); if (i == 6) // All bytes received? { gyro[0] = -1 * ((((int) buff[2]) << 8) | buff[3]); // X axis (internal sensor -y axis) gyro[1] = -1 * ((((int) buff[0]) << 8) | buff[1]); // Y axis (internal sensor -x axis) gyro[2] = -1 * ((((int) buff[4]) << 8) | buff[5]); // Z axis (internal sensor -z axis) } else { num_gyro_errors++; if (output_errors) Serial.println("!ERR: reading gyroscope"); } } void loop() { delay(200); Read_Gyro(); Serial.print(gyro[0]); Serial.print(" "); Serial.print(gyro[1]); Serial.print(" "); Serial.println(gyro[2]); } 

Gerelateerde Artikelen

Maken van een 3 graden van vrijheid 'hand' om te helpen met solderen / lijmen werk

Maken van een 3 graden van vrijheid 'hand' om te helpen met solderen / lijmen werk

hoe maak je een nieuwe drie graden van vrijheid hand voor uw 'helpende handen'. Het ontwerp kunt u aangepaste, schakelbare-eindstukjes (naast de standaard alligator clip).Stap 1: zoeken delen rondslingeren ############hebt u nodig:drie schroeven,vier
6 graden van vrijheid (DoF) Platform

6 graden van vrijheid (DoF) Platform

Er is een online gedetailleerde tutorial die laat zien hoe dit 6 graden van vrijheid platform maken.Het omvat Snelle prototypering, Arduino, programmering en PIC Programmeren / conversie naar een PIC microcontroller gebaseerd. Het project gebruikt Fl
Vier graden van vrijheid Lego Robot Arm gemaakt van twee Thymio Robots

Vier graden van vrijheid Lego Robot Arm gemaakt van twee Thymio Robots

deze 4-graad van vrijheid robotarm bestaat uit twee Thymio Robots en tal van lego.  De kleine lego wielen draait tegenover de nabijheid sensoren voor het meten van de werkelijke afstand reisde.Deze robotarm is gemaakt door: Dr. Stéphane Magnenat of E
Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Wat is het?DIY Segway/balans controller met moderne digitale IMU sensor.Software voor een Arduino waarmee het standpunt om gegevens te lezen van een van de nieuwere digitale accelerometer/gyroscoop eenheden, processen, de gegevens met behulp van Kalm
Het vinden van vrijheid & flexibiliteit voor uw geld

Het vinden van vrijheid & flexibiliteit voor uw geld

banken en de mensen die ze uitvoeren zijn niet erg populair door de meerderheid van het publiek wordt bekeken. Het is waarschijnlijk iets te maken met de recessie en het feit dat ze nog steeds enorme bonussen ondanks waardoor de economie inzinking on
Een sferische vliegmachine met geen controle van de oppervlakten

Een sferische vliegmachine met geen controle van de oppervlakten

Deze onze binnenkomst voor een lokale vliegmachine ontwerpwedstrijd. Voor deze wedstrijd waren we belast met het ontwerpen en bouwen van een vliegmachine die kan worden omschreven als 'onconventionele'. Wordt hardcore fans van veel sciencefiction too
Guide to gyro en versnellingsmeter met Arduino met inbegrip van Kalman-filtering

Guide to gyro en versnellingsmeter met Arduino met inbegrip van Kalman-filtering

deze gids werd voor het eerst geplaatst op het forum van de Arduino, en kan hier worden gevonden: http://arduino.cc/forum/index.php/topic, 58048.0.htmlIk reposted gewoon, dus zelfs meer gebruik van het krijg. De code kan hier worden gevonden:https://
TEAM IMPACT! Smart helm - Intel Edison, Sparkfun 9DOF

TEAM IMPACT! Smart helm - Intel Edison, Sparkfun 9DOF

Intel Edison met Sparkfun 9DOF LSM9DS0 IMU3e plaats @ de Intel IoT Roadshow NYC 2015Dit Instructable is voor een Intel Edison IoT Smart helm die gebruik maakt van een 9DOF van Sparkfun om gegevens te verzamelen van de helm om te meten hoofd tramas en
SITWAY

SITWAY

je bent nooit te oud om te leren en nieuwe dingen te proberen. Ik denk dat een van de beste dagen in mijn leven was de dag dat ik de Instructables website ontdekte. Het opende een hele nieuwe wereld voor mij. Dit is mijn derde instructable. Ik echt g
Wat is quad copter een een beetje over het maken van een

Wat is quad copter een een beetje over het maken van een

Wat is een Quad-copter?een onbemande helikopter met vier rotoren. meer gewoonMultiCopters aërodynamisch onstabiel zijn en absoluut vereisen een boordcomputer (aka vlucht controller) voor stabiele vlucht. Dientengevolge, zij zijn "Fly by Wire" sy
3DOF bal over het gebruik van de plaat gesloten lus stappenmotoren

3DOF bal over het gebruik van de plaat gesloten lus stappenmotoren

De bal op plaat probleem bestaat uit een vlakke plaat waaraan een bal moet worden geplaatst. Bal positionering wordt alleen bereikt door unstable evenwicht waar elke kleine veranderingen in de hoek van de plaat in de continue versnelling van de bal r
Het bouwen van de Robot Builder

Het bouwen van de Robot Builder

De Builder Robot is een complete mobiele robotica-platform en een arm met een grijper en een actieve visie systeem omvat. Deze instructies worden de stappen beschreven om maar samen de robot van 3D-bestanden afgedrukt. Instructies vindt u ook op hoe
Trekken van een boot met een fiets

Trekken van een boot met een fiets

Woont u in de buurt van een meer, maar niet op het meer; een fiets boot trailer is de manier voor het trekken van uw kleine boot naar de buurt lake. Deze trailer is gemaakt van zwart ijzeren pijp en kruiwagen wielen. Het maakt gebruik van standaard s
Hoe te maken van een animatie in Fusion 360

Hoe te maken van een animatie in Fusion 360

Nauwkeuriger, toont dit Instructable u hoe te maken een beweging studie in Autodesk Fusion 360 met behulp van hun erg mooi en zeer snelle Cloud renderen. Dus als bijvoorbeeld, je hebt iets gemodelleerd, en u voorzien van animatie hoe het beweegt wilt