Gy-271 [hmc5883l – Cảm biến La Bàn] – kết nối & sử dụng với Arduino Uno

566

Mô tả

Gy-271 [hmc5883l – Cảm biến La Bàn] – Hướng dẫn kết nối & sử dụng với Arduino Uno r3

Gy-271 [hmc5883l – Cảm biến La Bàn] – Hướng dẫn kết nối & sử dụng với Arduino Uno r3

 

Hướng dẫn cài đặt và sử dụng Arduino IDE

Mời các bạn xem tại đây :

Module cảm biến là bàn GY-271 [ hmc5883l ]

Các bạn kết nối Module với Kit Arduino theo sơ đồ sau :

 

Ở đây mình Hiển thị lên LCD OLED 0.9 SSD1306  các bạn xem bài viết hướng dẫn Tại đây :

các bạn download và add  thư viện  Gy-271-hmc5883l.zip này vào trình Arduino IDE.

Hướng dẫn add thư viện vào Arduino IDE các ban tham khảo Tại đây :

 

 //    Code test GY-271 -HMC5883L ///   Gy271-hmc5883l-bitmap.ino

#include “U8glib.h”
#include
#include “compass.h”

//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

/* Create an instance for the SSD1306 OLED display in SPI mode
* connection scheme:
* D0=sck=Pin 12
* D1=mosi=Pin 11
* CS=Pin 8
* DC=A0=Pin 9
* Reset=Pin 10
*/

U8GLIB_SSD1306_128X64 u8g(12, 11, 8, 9, 10);

#define Task_t 10 // Task Time in milli seconds

int dt=0;
unsigned long t;
// Main code —————————————————————–
void setup(){
Serial.begin(9600);
// Serial.print(“Setting up I2C ……..n”);
Wire.begin();
compass_x_offset = -48.23; //122.17;
compass_y_offset = 284.69; //230.08;
compass_z_offset = 59.87; //389.85;
compass_x_gainError = 1.07; //1.12;
compass_y_gainError = 1.09; //1.13;
compass_z_gainError = 1.01; //1.03;

compass_init(2);
//compass_debug = 1;
//compass_offset_calibration(3);

}

void loop(){

t = millis();

float load;

compass_scalled_reading();

Serial.print(“x = “);
Serial.println(compass_x_scalled);
Serial.print(“y = “);
Serial.println(compass_y_scalled);
Serial.print(“z = “);
Serial.println(compass_z_scalled);

compass_heading();
Serial.print (“Heading angle = “);
Serial.print (bearing);
Serial.println(” Degree”);

dt = millis()-t;
load = (float)dt/(Task_t/100);
Serial.print (“Load on processor = “);
Serial.print(load);
Serial.println(“%”);

u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );

delay(100);
}

void draw(void) {
static int armLength = 20;
static int cx = 64;
static int cy = 20;
int armX, armY;

//convert degree to radian
float bearingRad = bearing/57.2957795;
armX = armLength*cos(bearingRad);
armY = -armLength*sin(bearingRad);

u8g.setFont(u8g_font_unifont);

u8g.setPrintPos(0, 60);
u8g.print(“bearing: “);
u8g.setPrintPos(70, 60);
u8g.print(bearing);

u8g.drawLine(cx, cy, cx-armX, cy-armY);
u8g.drawCircle(cx, cy, armLength, U8G_DRAW_ALL);

}

// kết thúc chương trình .

Trao đổi học tập

Comments