Բովանդակություն:
Video: Arduino Digital Compass նախագիծ ՝ 3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:50
Բարեւ Ձեզ! Այս ձեռնարկում դուք կտեսնեք, թե ինչպես կարող եք թվային կողմնացույց պատրաստել Arduino- ի և Processing IDE- ի միջոցով: Սա բավականին պարզ, բայց հետաքրքիր և զով տեսք ունեցող Arduino նախագիծ է:
Այս ձեռնարկի ցուցադրական օրինակը կարող եք դիտել վերևի տեսանյութում: Դուք միշտ կարող եք գտնել այսպիսի ավելի հետաքրքիր տեսանյութեր իմ YouTube ալիքում, ինչպես նաև գտնել բազմաթիվ էլեկտրոնիկայի նախագծեր և ձեռնարկներ իմ կայքում ՝ HowToMechatronics.com
Քայլ 1: Պահանջվում են մասեր
Այս նախագծի համար ձեզ հարկավոր կլինի ընդամենը Arduino տախտակ և MEMS մագնիսաչափ, երկրի մագնիսական դաշտը չափելու համար: Ես կօգտագործեմ GY -80 բեկման տախտակ, որը պարունակում է MC5883L 3 - առանցքի մագնիսաչափ:
Նախքան նախագծի սկզբնաղբյուրը շարունակելը Եթե Ձեզ անհրաժեշտ են ավելի շատ մանրամասներ, թե ինչպես է գործում MEMS մագնիսաչափը, ինչպես նաև ինչպես միացնել և օգտագործել GY -80 ճեղքման տախտակը I2C հաղորդակցության միջոցով, կարող եք ստուգել դրա համար իմ հատուկ ձեռնարկները:
Քայլ 2: Arduino կոդ
Այն, ինչ մենք պետք է անենք, առաջինն է ՝ Arduino Board- ում ներբեռնել էսքիզ, որը կկարդա մագնիսաչափից ստացված տվյալները և այն կուղարկի Processing IDE- ին: Ահա Arduino- ի աղբյուրի կոդը.
/ * Arduino Compass * * ՝ Դեյան Նեդելկովսկու, * www. HowToMechatronics.com * */
#ներառել // I2C Arduino գրադարան
#սահմանի մագնիսաչափ_մX0 0x03
#սահմանել մագնիսաչափ_մX1 0x04 #սահմանել մագնիսաչափ_մZ0 0x05 #սահմանել
int mX0, mX1, mX_out;
int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;
բոց վերնագիր, վերնագիր Աստիճաններ, վերնագիր ilտված, անկում;
բոց Xm, Ym, Zm;
#define Magnetometer 0x1E // I2C 7bit հասցե HMC5883
void setup () {
// Initialize Serial and I2C Communications Serial.begin (115200); Wire.begin (); ուշացում (100); Wire.beginTransmission (Magnetometer); Wire.write (0x02); // Ընտրեք ռեժիմի գրանցում Wire.write (0x00); // Չափման շարունակական ռեժիմ Wire.endTransmission (); }
դատարկ շրջան () {
// ---- X-Axis Wire.beginTransmission (Magnetometer); // փոխանցել սարքին Wire.write (Magnetometer_mX1); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); եթե (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (Մագնիսաչափ); // փոխանցել սարքին Wire.write (Magnetometer_mX0); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); եթե (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Y- առանցք
Wire.beginTransmission (Magnetometer); // փոխանցել սարքին Wire.write (Magnetometer_mY1); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (Մագնիսաչափ); // փոխանցել սարքին Wire.write (Magnetometer_mY0); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-Axis Wire.beginTransmission (Magnetometer); // փոխանցել սարքին Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); եթե (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (Մագնիսաչափ); // փոխանցել սարքին Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (մագնիսաչափ, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- X-Axis mX1 = mX1 << 8; mX_out = mX0+mX1; // Հում տվյալներ // Տվյալների թերթից ՝ 0.92 մգ/թվանշան Xm = mX_out*0.00092; // Գաուսի միավոր //* Երկրի մագնիսական դաշտը տատանվում է 0.25 -ից 0.65 Գաուսի միջև, ուստի դրանք այն արժեքներն են, որոնք մենք պետք է մոտավորապես ստանանք:
// ---- Y- առանցք
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0.00092;
// ---- Z- առանցք
mZ1 = mZ1 <0.073 ռադի անկում = 0.073; վերնագիր += անկում; // Ուղղում, երբ նշանները հարգվում են, եթե (վերնագիր <0) վերնագիր += 2*PI;
// Ուղղում `թեքության անկյունի ավելացման պատճառով
if (վերնագիր> 2*PI) վերնագիր -= 2*PI;
headingDegrees = վերնագիր * 180/PI; // Վերնագիրը աստիճանների բաժնում
// Ելքի անկյունի հարթեցում / passածր փոխանցման զտիչ
headingFiltered = headingFiltered*0.85 + headingDegrees*0.15;
// Վերնագրի արժեքը Սերիական նավահանգստի միջոցով ուղարկելով Processing IDE
Serial.println (վերնագիր ilտված);
ուշացում (50); }
Քայլ 3: Մշակեք IDE աղբյուրի կոդը
Arduino- ի էսքիզը վերբեռնելուց հետո մենք պետք է տվյալները ստանանք Processing IDE և գծենք թվային կողմնացույցը: Կողմնացույցը կազմված է ֆոնային պատկերից, սլաքի ֆիքսված պատկերից և կողմնացույցի մարմնի պտտվող պատկերից: Այսպիսով, Arduino- ով հաշվարկված ականջի մագնիսական դաշտի արժեքները օգտագործվում են կողմնացույցը պտտելու համար:
Ահա Processing IDE- ի աղբյուրի կոդը.
/ * Arduino Compass * * ՝ Դեյան Նեդելկովսկու, * www. HowToMechatronics.com * */ ներմուծում processing.serial. *; ներմուծել java.awt.event. KeyEvent; ներմուծում java.io. IOException;
Սերիական myPort;
PImage imgCompass; PImage imgCompassArrow; PImage ֆոն;
Լարային տվյալներ = "";
բոց վերնագիր;
void setup () {
չափը (1920, 1080, P3D); հարթ(); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = նոր Սերիա (սա, «COM4», 115200); // սկսում է սերիական հաղորդակցությունը myPort.bufferUntil ('\ n'); }
դատարկ վիճակահանություն () {
պատկեր (ֆոն, 0, 0); // Բեռնում է հետին պլանի պատկերը pushMatrix (); թարգմանել (լայնություն/2, բարձրություն/2, 0); // Կոորդինատային համակարգը թարգմանում է էկրանի կենտրոն, այնպես որ պտույտը տեղի է ունենում հենց կենտրոնի պտույտ Z- ում (ռադիաններ (-գլուխ)); // Պտտում է կողմնացույցը Z -առանցքի պատկերի շուրջ (imgCompass, -960, -540); // Բեռնում է կողմնացույցի պատկերը և երբ կոորդինատային համակարգը տեղափոխվում է, մենք պետք է պատկերը սահմանենք -960x, -540y (էկրանի չափի կեսը) popMatrix (); // Կոորդինատային համակարգը բերում է սկզբնական դիրքի 0, 0, 0 պատկեր (imgCompassArrow, 0, 0); // Բեռնում է CompassArrow պատկերը, որի վրա չի ազդում rotateZ () գործառույթը popMatrix () գործառույթի պատճառով textSize (30); տեքստ («Վերնագիր.» + վերնագիր, 40, 40); // Տպում է վերնագրի արժեքը էկրանին
ուշացում (40);
}
// սկսում է կարդալ տվյալները Սերիական նավահանգստից
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // կարդում է սերիական նավահանգստի տվյալները և դրանք դնում է String փոփոխական «տվյալների» մեջ: վերնագիր = բոց (տվյալներ); // Լարի արժեքը փոխարկելով Float արժեքի}
Հուսով եմ, որ ձեզ դուր կգա այս նախագիծը: Եթե այդպես է, ապա կարող եք նաև այցելել իմ կայքը ՝ ավելի հետաքրքիր նախագծերի համար:
Խորհուրդ ենք տալիս:
Թվային Ludo Dice հետ Arduino 7 հատվածի ցուցադրման նախագիծ ՝ 3 քայլ
Թվային Ludo Dice With Arduino 7 Segment Display Project. Այս նախագծում 7 հատվածի ցուցադրումը օգտագործվում է 1 -ից 6 թիվը պատահականորեն ցուցադրելու համար, երբ սեղմում ենք կոճակը: Սա ամենաթեժ նախագծերից մեկն է, որը բոլորը հաճույքով են կատարում: 7 հատվածի ցուցադրմամբ աշխատելու սովորելու համար կտտացրեք այստեղ ՝ -7 segme
Arduino DHT22 տվիչների և հողի խոնավության նախագիծ մենյուով. 4 քայլ
Arduino DHT22 սենսոր և հողի խոնավության նախագիծ մենյուով. Բարև տղերք: Այսօր ձեզ եմ ներկայացնում իմ երկրորդ նախագիծը հրահանգների վերաբերյալ: Այս նախագիծը ներկայացնում է իմ առաջին նախագծի խառնուրդը, որում ես օգտագործել եմ հողի խոնավության տվիչ և DHT22 տվիչ, որն օգտագործվում է ջերմաստիճանը և խոնավությունը չափելու համար: . Այս նախագիծը
Arduino Text to Speech Converter օգտագործելով LM386 - Խոսող Arduino նախագիծ - Talkie Arduino գրադարան. 5 քայլ
Arduino Text to Speech Converter օգտագործելով LM386 | Խոսող Arduino նախագիծ | Talkie Arduino գրադարան. Ողջույն, տղերք, շատ նախագծերում մենք պահանջում ենք, որ arduino- ն խոսի ժամացույցի հետ խոսելու կամ որոշ տվյալներ հաղորդելու մասին, և մենք տեքստը խոսքի կդարձնենք Arduino- ի միջոցով:
Ինչպես ռադար պատրաստել Arduino- ով - Arduino նախագիծ ՝ 4 քայլ
Ինչպես ռադար պատրաստել Arduino- ով | Arduino նախագիծ. Այս հոդվածում ես ձեզ կսովորեցնեմ, թե ինչպես կարող եք պարզ ռադար ստեղծել arduino- ով: Դիտեք ամբողջական վիդեո ձեռնարկը այստեղ. Կտտացրեք ինձ
10 հիմնական Arduino նախագիծ սկսնակների համար: Կատարեք առնվազն 15 նախագիծ մեկ տախտակով: 6 քայլ
10 հիմնական Arduino նախագիծ սկսնակների համար: Կատարեք առնվազն 15 նախագիծ մեկ տախտակով: Arduino Project & Ուսուցողական խորհուրդ; Ներառում է 10 հիմնական Arduino նախագիծ: Բոլոր կոդերը, Gerber ֆայլը և այլն: Ոչ SMD! Հեշտ զոդում բոլորի համար: Հեշտ շարժական և փոխարինելի բաղադրիչներ: Դուք կարող եք կատարել առնվազն 15 նախագիծ մեկ բո