Primjer 1.
Za početak, spajanje…
Na slici 1 prikazan je način spajanja MPU6050 modula s Arduino Uno mikroupravljačkim sučeljem.
[if !vml]
Slika 1, spajanje MPU6050 s ArduinoUno mikroupravljačkim sučeljem
Za spajanje i očitavanje podataka koristit ćemo samo 4 izvoda MPU 6050 modula (VCC, GND, SDA i SCL). Izvod VCC spajamo na izvod napajanja na Arduino Uno pločici (modul ima ugrađen regulator napona pa možemo koristiti 3,3 V ili 5 V napajanje). Izvod GND s modula spajamo na bilo koji GND izvod na Arduino Uno pločici. SDA izvod s modula spajamo na izvod A4 na Arduinu i konačno izvod SCL s modula spajamo na izvod A5. I to je to što se tiče spajanja.
Sad krećemo s pisanjem koda:
Na početku…
#include <Wire.h> //Ovaj redak služi za uključivanje I2C biblioteke, kako bi Arduino razgovarao s MPU6050.
#include <GY6050.h> //Ovaj redak služi se za uključivanje glavne biblioteke za MPU6050.
GY6050 mojziro (0x68); //“nekoime“ je proizvoljni naziv našeg modula MPU6050, a Ox68" je I2C adresa MPU6050, ali ponekad može biti drugačija. To možemo provjeriti jednostavnim skenerom sabirnice I2C koji možemo pronaći na internetu.
Sada u "void setup" upisujemo:
mojziro.inicijalizacija(); //Ova linija inicijalizira MPU6050 i omogućuje da pravilno razgovara s našim Arduinom.
I sada glavni dio našeg programa:
U "void loop" upisujemo:
PrilagođenaVarijabla = mojziro.refresh([Argument1], [Argument2]);
Napomena: Budući da biblioteka vraća cjelobrojnu vrijednost, možemo je pohraniti u drugu cjelobrojnu vrijednost (ovdje PrilagođenaVarijabla), ali ovaj parametar možemo koristiti i kao: Serial.println(gyro.refresh([Argument1], [Argument2]); . Naravno, prije trebamo u početnom dijelu programa deklarirati tu varijablu, na primjer „X“: int X=0; Sada bi naša funkcija izgledala ovako:
x = mojziro.refresh([Argument1], [Argument2]);
[Argument1] se koristi za "uređaj" koji želimo koristiti:
'A': akcelerometar,
'T': temperatura,
'G' : Žiroskop.
[Argument2] se koristi za os (ili jedinicu, za temperaturu) koju želimo koristiti:
Akcelerometar i žiroskop: 'X', 'Y' i 'Z'
Temperatura: 'C' : Celzijus; 'F' : Farenhajt
Napomena: Ova slova moraju biti između apostrofa ('), poput: mojziro.refresh('A', 'X');
Ako želimo očitavati pomak po osi x, naša će funkcija izgledati ovako:
x = mojziro.refresh('A', 'X');
Argument 'A' označava akcelerometar, a 'X' označava os x, što znači da očitavamo pomak po osi x s akcelerometra.
Vrijednosti očitane s osi akcelerometra trebale bi biti između -90 i 90 (kutni stupanj), ali mogu biti i 110 ili -110, zbog inercije "pokretnih dijelova" unutar akcelerometra.
Vrijednosti za žiroskop trebale bi biti između -120 i 120 (bez određene jedinice), ali može biti i malo više, sve ovisi o brzini rotacije.
Eto i kako bi naš kod trebao izgledati:
#include "GY6050.h"
#include "Wire.h"
GY6050 mojziro(0x68);
int X;
void setup() {
Serial.begin(9600);
Wire.begin();
mojziro.initialisation();
}
void loop() {
X=mojziro.refresh('A','X');
Serial.println(X);
delay(100);
}
Pokrenemo li program, na serijskom monitoru bismo trebali dobiti očitavanja sa MPU6050 modula. Kako zakrećemo naš modul po osi x, tako se i mijenjaju očitane vrijednosti.