Sisukord:
Video: Arduino digitaalse kompassi projekt: 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Tere! Selles juhendis näete, kuidas saate Arduino ja töötleva IDE abil digitaalset kompassi teha. See on üsna lihtne, kuid huvitav ja lahe välimus Arduino projekt.
Selle õpetuse demo näidet saate vaadata ülaltoodud videost. Minu YouTube'i kanalilt leiate alati rohkem selliseid huvitavaid videoid, aga ka palju elektroonikaprojekte ja õpetusi minu veebisaidilt HowToMechatronics.com
Samm: vajalikud osad
Selle projekti jaoks vajate maa magnetvälja mõõtmiseks lihtsalt Arduino plaati ja MEMS magnetomeetrit. Kasutan GY -80 katkestusplaati, mis sisaldab MC5883L 3 -teljelist magnetomeetrit.
Enne projekti lähtekoodiga jätkamist Kui vajate lisateavet selle kohta, kuidas MEMS -i magnetomeeter töötab, samuti kuidas ühendada ja kasutada GY -80 katkestusplaati I2C kommunikatsiooni kaudu, saate vaadata minu konkreetseid õpetusi.
Samm: Arduino lähtekood
Kõigepealt peame üles laadima visandi Arduino pardale, mis loeb magnetomeetri andmed ja saadab need töötlevale IDE -le. Siin on Arduino lähtekood:
/ * Arduino kompass * * autor Dejan Nedelkovski, * www. HowToMechatronics.com * */
#include // I2C Arduino raamatukogu
#define Magnetomeeter_mX0 0x03
#define Magnetometer_mX1 0x04 #define Magnetometer_mZ0 0x05 #define Magnetometer_mZ1 0x06 #define Magnetometer_mY0 0x07 #define Magnetometer_mY1 0x08
int mX0, mX1, mX_out;
int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;
ujukipealkiri, rubriikKraadid, rubriikFiltreeritud, deklinatsioon;
ujuk Xm, Ym, Zm;
#define Magnetomeeter 0x1E // I2C HMC5883 7 -bitine aadress
tühine seadistus () {
// Initsialiseeri jada- ja I2C -side Serial.begin (115200); Wire.begin (); viivitus (100); Wire.beginTransmission (magnetomeeter); Wire.write (0x02); // Vali režiimi register Wire.write (0x00); // Pideva mõõtmise režiim Wire.endTransmission (); }
void loop () {
// ---- X-telje traat.beginTransmission (magnetomeeter); // edastada seadmesse Wire.write (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (Magnetomeeter); // edastada seadmesse Wire.write (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Y-telg
Wire.beginTransmission (magnetomeeter); // edastada seadmesse Wire.write (Magnetomeeter_mY1); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (Magnetomeeter); // edastada seadmesse Wire.write (Magnetomeeter_mY0); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-telje traat.beginTransmission (magnetomeeter); // edastada seadmesse Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (Magnetomeeter); // edastada seadmesse Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (Magnetomeeter, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- X-telg mX1 = mX1 << 8; mX_out = mX0+mX1; // Toorandmed // Andmelehelt: 0,92 mG/number Xm = mX_out*0,00092; // Gaussi ühik //* Maa magnetväli on vahemikus 0,25–0,65 Gaussi, seega on need väärtused, mida peame ligikaudselt saama.
// ---- Y-telg
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0,00092;
// ---- Z-telg
mZ1 = mZ1 <0,073 rad deklinatsioon = 0,073; rubriik += deklinatsioon; // Parandamine märkide austamisel, kui (rubriik <0) rubriik += 2*PI;
// Parandamine deklinatsiooninurga lisamise tõttu
if (rubriik> 2*PI) rubriik -= 2*PI;
rubriikKraadid = rubriik * 180/PI; // Pealkiri kraadiühikus
// Väljundnurga silumine / madalpääsfilter
rubriikFiltreeritud = rubriikFiltreeritud*0,85 + rubriikKraadid*0,15;
// Pealkirja väärtuse saatmine jadapordi kaudu IDE töötlemiseks
Serial.println (rubriikFiltreeritud);
viivitus (50); }
3. toiming: IDE lähtekoodi töötlemine
Pärast eelmise Arduino eskiisi üleslaadimist peame andmed töötlevasse IDE -sse vastu võtma ja digitaalse kompassi joonistama. Kompass koosneb taustapildist, noole fikseeritud kujutisest ja kompassi keha pöörlevast pildist. Seega kasutatakse kompassi pööramiseks Arduino abil arvutatud magnetvälja väärtusi.
Siin on töötlemise IDE lähtekood:
/ * Arduino kompass * * autor Dejan Nedelkovski, * www. HowToMechatronics.com * */ import processing.serial. *; import java.awt.event. KeyEvent; importige java.io. IOException;
Seeria myPort;
PImage imgCompass; PImage imgCompassArrow; PImage taust;
Stringi andmed = "";
ujukipealkiri;
tühine seadistus () {
suurus (1920, 1080, P3D); sile (); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = uus seeria (see, "COM4", 115200); // käivitab jadaühenduse myPort.bufferUntil ('\ n'); }
tühine viik () {
pilt (taust, 0, 0); // Laeb taustapildi pushMatrix (); tõlkima (laius/2, kõrgus/2, 0); // Tõlgib koordinaatsüsteemi ekraani keskele, nii et pöörlemine toimub otse keskel rotateZ (radiaanid (-pealkiri)); // Pöörab kompassi Z -telje ümber (imgCompass, -960, -540); // Laeb kompassi pildi ja kuna koordinaatsüsteem on ümber paigutatud, peame pildi määrama -960x, -540y (pool ekraani suurust) popMatrix (); // Toob koordinaatsüsteemi tagasi algasendisse 0, 0, 0 image (imgCompassArrow, 0, 0); // Laeb CompassArrow pildi, mida funktsioon rotateZ () ei mõjuta funktsiooni popMatrix () tõttu textSize (30); tekst ("Pealkiri:" + pealkiri, 40, 40); // Prindib pealkirja väärtuse ekraanile
viivitus (40);
}
// alustab jadaportist andmete lugemist
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // loeb jadapordist andmeid ja paneb need String muutuja "data". rubriik = ujuk (andmed); // Stringi väärtuse teisendamine Float -väärtuseks}
Loodan, et teile meeldib see projekt. Kui see nii on, võite minu veebisaiti külastada ka lahedamate projektide jaoks.
Soovitan:
Arduino abil analoogkella ja digitaalse kella valmistamine LED -ribaga: 3 sammu
Arduino abil LED -ribaga analoog- ja digitaalkella valmistamine: täna valmistame analoogkella & Digitaalne kell Led Stripiga ja MAX7219 Dot moodul koos Arduinoga. See korrigeerib aega kohaliku ajavööndiga. Analoogkell võib kasutada pikemat LED -riba, nii et selle saab seinale riputada, et saada kunstiteoseks
DIY kompassi robot: 14 sammu
DIY Compass Bot: Tere! Täna hakkan tegema kompassi botti. Selle idee sain, kui mõtlesin, kui raske on täiuslikku ringi joonistada ilma matemaatilise kastita. Noh, ma sain teie lahenduse? Nagu teate, on ring täpselt 360 kraadi, nii et see robot saab joonistada
ESPcopter ja Visuino - teisendage kompassi suund 3D -nurgaks: 6 sammu
ESPcopter ja Visuino - teisendage kompassi suund 3D -nurga alla: ESPcopterit toetab nüüd täielikult Visuino uusim versioon ja see muudab ilmselt kõige lihtsamaks olemasoleva drooni programmeerimise! :-) Selle Visuino toega saate mootoreid juhtida, LED, töö kiirendusmõõturiga, Gyr
Kuidas kasutada GY511 moodulit Arduinoga [Digitaalse kompassi tegemine]: 11 sammu
Kuidas kasutada GY511 moodulit koos Arduinoga [Digitaalse kompassi tegemine]: ülevaade Mõnes elektroonikaprojektis peame igal hetkel teadma geograafilist asukohta ja tegema vastavalt sellele konkreetse toimingu. Selles õpetuses saate teada, kuidas kasutada LSM303DLHC GY-511 kompassimoodulit koos Arduinoga digitaalsete kompaktide tegemiseks
Arduino digitaalse koodiluku projekt maatriksklaviatuuri abil: 9 sammu
Arduino digitaalse koodluku projekt maatriksklaviatuuri abil: looge Arduino ja Qwiic -süsteemiga digitaalne koodilukuseade, kasutades Zio M Uno ja Hex 4x3 maatriksklaviatuuri. Projekti ülevaade Selle projekti jaoks koostame lihtsa digitaalse koodluku, mida kasutajad saavad sisestada ja sisestada sisse. Selles õpetuses näitame kasutamist