PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : قطب نمای الکترونیکی با gy721 , آردوینو



hassan5
26-04-2019, 02:27
با سلام
من یه قطبنمای الکترونیکی میخوام بسازم توش موندم نمیدونم مشکل کجاست که کارنمی کنه
کد شو هم میزارم باشد که کمک کنید


#include<Wire.h>
#include<QMC5883.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 4, 5, 6, 7);

QMC5883 GY271;
String dire = "";

void setup (void) {
lcd.begin (16, 2);
GY271.begin();
analogWrite(11, 150);
analogWrite(3, 255);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*electronics 98*");
lcd.setCursor(0, 1);
lcd.print ("> GY271 ");
delay(2000);
lcd.clear();
}

void loop (void) {
GY271.calculate();
getDir (GY271.getHeadingDegree('z'));
lcd.setCursor(0, 0);
lcd.print ("deg=");
lcd.print(GY271.getHeadingDegree('z'));
lcd.setCursor(12, 0);
lcd.print (dire);
lcd.setCursor(0, 1);
lcd.print ("angle=");
lcd.print (GY271.getHeading('z'));
lcd.print (" rad ");
delay (200);

}

void getDir (int degree) {
if ( degree >= 0 && degree <= 30 ) {
dire = "[N] ";
}
else if ( degree > 30 && degree <= 60 ) {
dire = "[NE]";
}
else if ( degree >= 60 && degree < 90 ) {
dire = "[E] ";
}
else if ( degree >= 90 && degree < 120 ) {
dire = "[E] ";
}
else if ( degree >= 120 && degree < 160 ) {
dire = "[SE]";
}
else if ( degree >= 160 && degree < 200 ) {
dire = "[S] ";
}
else if ( degree >= 200 && degree < 245 ) {
dire = "[SW]";
}
else if ( degree >= 245 && degree < 290 ) {
dire = "[W] ";
}
else if ( degree >= 290 && degree < 335 ) {
dire = "[NW]";
}
else if ( degree >= 335 && degree <= 360 ) {
dire = "[N] ";
}
}