Satura rādītājs:
- 1. darbība. Nepieciešamās detaļas
- 2. darbība: Arduino avota kods
- 3. darbība: IDE avota koda apstrāde
Video: Arduino digitālā kompasa projekts: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Sveiki! Šajā pamācībā jūs redzēsit, kā jūs varat izveidot digitālo kompasu, izmantojot Arduino un apstrādes IDE. Šis ir diezgan vienkāršs, bet interesants un foršs Arduino projekts.
Jūs varat noskatīties šīs apmācības demonstrācijas piemēru iepriekš redzamajā videoklipā. Manā YouTube kanālā vienmēr varat atrast interesantākus šādus videoklipus, kā arī atrast daudz elektronikas projektu un pamācību.
1. darbība. Nepieciešamās detaļas
Šim projektam jums būs nepieciešama tikai Arduino plāksne un MEMS magnetometrs zemes magnētiskā lauka mērīšanai. Es izmantošu GY -80 sadalīšanas paneli, kas satur MC5883L 3 ass magnetometru.
Pirms turpināt projekta avota kodu Ja jums nepieciešama sīkāka informācija par to, kā darbojas MEMS magnetometrs, kā arī par to, kā savienot un izmantot GY -80 sadalīšanas paneli, izmantojot I2C paziņojumu, varat pārbaudīt manas īpašās apmācības.
2. darbība: Arduino avota kods
Vispirms mums ir jāaugšupielādē skice Arduino panelī, kas nolasīs datus no magnetometra un nosūtīs tos apstrādes IDE. Šeit ir Arduino avota kods:
/ * Arduino kompass * * autors Dejan Nedelkovski, * www. HowToMechatronics.com * */
#include // I2C Arduino bibliotēka
#define Magnetometrs_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;
pludiņa pozīcija, virsrakstsGrādi, pozīcijaFiltrēts, deklinācija;
pludiņš Xm, Ym, Zm;
#define Magnetometrs 0x1E // I2C HMC5883 7 bitu adrese
void setup () {
// Inicializēt seriālos un I2C sakarus Serial.begin (115200); Wire.begin (); kavēšanās (100); Wire.beginTransmission (magnetometrs); Wire.write (0x02); // Izvēlieties režīma reģistru Wire.write (0x00); // Nepārtrauktas mērīšanas režīms Wire.endTransmission (); }
void loop () {
// ---- X ass stieple.beginTransmission (magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (Magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Y ass
Wire.beginTransmission (magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mY1); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (Magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mY0); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-ass stieple.beginTransmission (magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (Magnetometrs); // pārraidīt uz ierīci Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (Magnetometrs, 1); ja (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- X ass mX1 = mX1 << 8; mX_out = mX0+mX1; // Neapstrādāti dati // No datu lapas: 0,92 mG/cipars Xm = mX_out*0,00092; // Gausa vienība //* Zemes magnētiskais lauks svārstās no 0,25 līdz 0,65 Gauss, tāpēc šīs ir vērtības, kas mums ir jāiegūst aptuveni.
// ---- Y ass
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0,00092;
// ---- Z-ass
mZ1 = mZ1 <0,073 rad deklinācija = 0,073; virsraksts += deklinācija; // Labošana, kad zīmes tiek godātas, ja (pozīcija <0) virsraksts += 2*PI;
// Labošana, pateicoties deklinācijas leņķa pievienošanai
if (pozīcija> 2*PI) pozīcija -= 2*PI;
headDegrees = pozīcija * 180/PI; // Virsraksts grādu vienībā
// Izvades leņķa izlīdzināšana / Zemas caurlaidības filtrs
virsrakstsFiltrēts = virsrakstsFiltrēts*0,85 + virsrakstsGrādi*0,15;
// Virsraksta vērtības nosūtīšana caur seriālo portu apstrādes IDE
Serial.println (virsrakstsFiltrēts);
kavēšanās (50); }
3. darbība: IDE avota koda apstrāde
Pēc iepriekšējās Arduino skices augšupielādes mums ir jāsaņem dati apstrādes IDE un jāuzzīmē digitālais kompass. Kompass sastāv no fona attēla, fiksēta bultiņas attēla un rotējoša kompasa korpusa attēla. Tātad ar Arduino aprēķinātās zemes magnētiskā lauka vērtības tiek izmantotas, lai pagrieztu kompasu.
Šeit ir apstrādes IDE avota kods:
/ * Arduino Compass * * autors Dejan Nedelkovski, * www. HowToMechatronics.com * */ import processing.serial. *; importēt java.awt.event. KeyEvent; importēt java.io. IOException;
Sērijas myPort;
PImage imgCompass; PImage imgCompassArrow; PImage fons;
Stīgu dati = "";
pludiņa pozīcija;
void setup () {
izmērs (1920, 1080, P3D); gluda (); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); fons = loadImage ("Background.png"); myPort = jauns seriāls (šis, "COM4", 115200); // sāk sērijveida komunikāciju myPort.bufferUntil ('\ n'); }
void draw () {
attēls (fons, 0, 0); // Ielādē fona attēlu pushMatrix (); tulkot (platums/2, augstums/2, 0); // Pārvērš koordinātu sistēmu ekrāna centrā, lai rotācija notiktu tieši centrā rotateZ (radiāni (-virsraksts)); // Pagriež kompasu ap Z -ass attēlu (imgCompass, -960, -540); // Ielādē kompasa attēlu un, pārvietojot koordinātu sistēmu, mums ir jāiestata attēls -960x, -540y (puse no ekrāna izmēra) popMatrix (); // Atved koordinātu sistēmu atpakaļ sākotnējā pozīcijā 0, 0, 0 attēls (imgCompassArrow, 0, 0); // Ielādē CompassArrow attēlu, kuru funkcija rotateZ () neietekmē popMatrix () funkcijas textSize (30) dēļ; teksts ("Virsraksts:" + virsraksts, 40, 40); // Izdrukā virsraksta vērtību ekrānā
kavēšanās (40);
}
// sāk lasīt datus no seriālā porta
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // nolasa datus no seriālā porta un ievieto tos virknes mainīgajā "data". virsraksts = pludiņš (dati); // String vērtības konvertēšana Float value}
Es ceru, ka jums patiks šis projekts. Ja tas tā ir, varat arī apmeklēt manu vietni, lai iegūtu vairāk foršu projektu.
Ieteicams:
DIY kompasa bots: 14 soļi
DIY Compass Bot: Sveiki! Šodien es izveidošu kompasa robotu. Man radās šī ideja, domājot par to, cik grūti ir uzzīmēt perfektu apli bez matemātiskas kastes. Nu, es sapratu jūsu risinājumu? Kā jūs zināt, aplis ir tieši 360 grādu leņķī, tāpēc šis robots var uzzīmēt ša
Pamācība saskarnes HMC5883L kompasa sensoram ar Arduino: 10 soļi (ar attēliem)
Apmācība interfeisa HMC5883L kompasa sensoram ar Arduino: Apraksts HMC5883L ir 3 asu digitālais kompass, ko izmanto diviem vispārējiem mērķiem: lai izmērītu magnētiska materiāla, piemēram, feromagnēta, magnetizāciju vai mērītu stiprumu un dažos gadījumos virzienu. magnētiskais lauks s punktā
Hapta kompasa josta: 9 soļi
Hapta kompasa josta: ar Arduino darbināma josta, kas vibrē uz ziemeļiem. Cilvēka uztvere vienmēr ir bijusi ierobežota ar mūsu bioloģiskajām sajūtām, bet ko darīt, ja mēs to varētu mainīt? Dabā ir dzīvnieki ar spēju uztvert magnētiskos laukus, barometrisko spiedienu, ambi
ESPcopter un Visuino - pārvērst kompasa virzienu 3D leņķī: 6 soļi
ESPcopter un Visuino - pārvērst kompasa virzienu 3D leņķī: ESPcopter tagad ir pilnībā atbalstīts ar Visuino jaunāko versiju, un tas padara to, iespējams, visvieglāk ieprogrammējamo dronu! :-) Ar tā Visuino atbalstu jūs varat vadīt motorus, LED, strādājiet ar akselerometru, Gyr
Arduino digitālā koda bloķēšanas projekts, izmantojot matricas tastatūru: 9 soļi
Arduino digitālā koda bloķēšanas projekts, izmantojot matricas tastatūru: izveidojiet digitālo koda bloķēšanas ierīci ar Arduino un Qwiic sistēmu, izmantojot Zio M Uno un Hex 4x3 matricas tastatūru. Projekta pārskats Šim projektam mēs izveidosim vienkāršu digitālo koda atslēgu, ko lietotāji varēs ievadīt un ievadīt in. Šajā apmācībā mēs parādīsim izmantošanu