Përmbajtje:

Makinë me valë e kontrolluar me gjest: 7 hapa
Makinë me valë e kontrolluar me gjest: 7 hapa

Video: Makinë me valë e kontrolluar me gjest: 7 hapa

Video: Makinë me valë e kontrolluar me gjest: 7 hapa
Video: Noizy - Nuk kan besu (Official Video 4K) 2024, Nëntor
Anonim
Makinë pa tel e kontrolluar me gjeste
Makinë pa tel e kontrolluar me gjeste

Në këtë tutorial ne do të mësojmë, si të bëjmë një makinë të kontrolluar me gjeste ose ndonjë robot. Ky projekt ka dy pjesë, një pjesë është njësi transmetuese dhe pjesa tjetër është njësi marrëse. Njësia e transmetuesit është montuar në të vërtetë në doreza dore dhe njësia e marrësit vendoset brenda një makine ose ndonjë roboti. Tani është koha për të bërë një makinë të bukur. Shkojme!

Hapi 1: Pajisjet

Njësia transmetuese

1. Arduino Nano.

2. Moduli i sensorit MPU6050.

3. Transmetues RF 433 MHz.

4. Çdo lloj 3 qelizash, bateri 11.1 volt (Këtu kam përdorur qelizë monedhe).

5. Vero-Board.

6. Doreza dore.

Njësia e Marrësit

1. Arduino Nano ose Arduino Uno.

2. Moduli i drejtuesit të motorit L298N.

3. Korniza e robotit me 4 rrota përfshirë motorët.

4. Marrës RF 433 RF.

5. Bateri 3-qelizore, 11.1 volt Li-po.

6. Vero-bord.

Të tjerët

1. Ngjitës Shkopinj dhe armë.

2. Telat e kërcyesit.

3. Vidhosës

4. Kit për saldim.

etj

Hapi 2: Skedari i Imazhit të Diagramit të Qarkut

Skedari i Imazhit të Diagramit të Qarkut
Skedari i Imazhit të Diagramit të Qarkut

Hapi 3: Shkrirja e skedarit të Diagramit të Qarkut

Hapi 4: Kodi i Transmetuesit

#përfshi

#përfshi

#përfshi

MPU6050 mpu6050 (Tela);

kohëmatës i gjatë = 0;

kontrollues char *;

void setup ()

{Serial.fillo (9600); Wire.begin (); mpu6050.filloj (); mpu6050.calcGyroOffsets (e vërtetë); vw_set_ptt_inverted (e vërtetë); // vw_set_tx_pin (10); vw_setup (4000); // shpejtësia e transferimit të të dhënave Kbps

}

lak void ()

{ ////////////////////////////////////////////////////////////////////////////////////////////////

mpu6050. përditësim ();

nëse (milis () - kohëmatës> 1000)

{Serial.println ("============================================= =========== "); Serial.print ("temp:"); Serial.println (mpu6050.getTemp ()); Serial.print ("accX:"); Serial.print (mpu6050.getAccX ()); Serial.print ("\ taccY:"); Serial.print (mpu6050.getAccY ()); Serial.print ("\ taccZ:"); Serial.println (mpu6050.getAccZ ()); Serial.print ("gyroX:"); Serial.print (mpu6050.getGyroX ()); Serial.print ("\ tgyroY:"); Serial.print (mpu6050.getGyroY ()); Serial.print ("\ tgyroZ:"); Serial.println (mpu6050.getGyroZ ()); Serial.print ("accAngleX:"); Serial.print (mpu6050.getAccAngleX ()); Serial.print ("\ taccAngleY:"); Serial.println (mpu6050.getAccAngleY ()); Serial.print ("gyroAngleX:"); Serial.print (mpu6050.getGyroAngleX ()); Serial.print ("\ tgyroAngleY:"); Serial.print (mpu6050.getGyroAngleY ()); Serial.print ("\ tgyroAngleZ:"); Serial.println (mpu6050.getGyroAngleZ ()); Serial.print ("angleX:"); Serial.print (mpu6050.getAngleX ()); Serial.print ("\ tangleY:"); Serial.print (mpu6050.getAngleY ()); Serial.print ("\ tangleZ:"); Serial.println (mpu6050.getAngleZ ()); Serial.println ("============================================== ========== / n "); kohëmatësi = milis (); }

/////////////////////////////////////////////////////////////////////////////////////

if (mpu6050.getAccAngleX () 30) {kontrollues = "X2"; vw_send ((uint8_t *) kontrollues, strlen (kontrollues)); vw_wait_tx (); // Prisni derisa të zhduket i gjithë mesazhi Serial.println ("PARA"); } else if (mpu6050.getAccAngleY ()> 40) {controller = "Y1"; vw_send ((uint8_t *) kontrollues, strlen (kontrollues)); vw_wait_tx (); // Prisni derisa të zhduket i gjithë mesazhi Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {controller = "Y2"; vw_send ((uint8_t *) kontrollues, strlen (kontrollues)); vw_wait_tx (); // Prisni derisa të zhduket i gjithë mesazhi Serial.println ("E DREJTA"); } tjetër if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {controller = "A1"; vw_send ((uint8_t *) kontrollues, strlen (kontrollues)); vw_wait_tx (); // Prisni derisa të zhduket i gjithë mesazhi Serial.println ("STOP"); }}

Hapi 5: Kodi i Marrësit

#përfshi

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (e vërtetë); // Kërkohet për DR3100 vw_set_rx_pin (12); vw_setup (4000); // Bit për sec pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // Filloni marrësin PLL që funksionon Serial.println ("Të gjitha në rregull");

}

lak void () {uint8_t buf [VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN;

nëse (vw_get_message (buf, & buflen)) // Jo-bllokimi

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("BACKWARD"); prapa (); vonesë (100); // joaktiv (); } tjetër if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("PARA"); përpara (); vonesë (100); // joaktiv (); }

përndryshe nëse ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("E majta"); majtas (); vonesë (100); // joaktiv (); }

përndryshe nëse ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("E DREJTA"); e drejtë (); vonesë (100); // joaktiv (); } tjetër nëse ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); off (); vonesë (100); }} else {Serial.println ("Asnjë sinjal nuk është marrë"); }}

zbrazëti përpara ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 70); analogWrite (RB, 0); }

zbrazëti prapa ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 0); analogWrite (RB, 70); }

zbrazëti majtas ()

{analogWrite (LA, 0); analogWrite (LB, 70); analogWrite (RA, 70); analogWrite (RB, 0); }

e zbrazët e drejtë ()

{analogWrite (LA, 70); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 70); }

zbrazet ()

{analogWrite (LA, 0); analogWrite (LB, 0); analogWrite (RA, 0); analogWrite (RB, 0); }

Hapi 6: Dosjet INO

Hapi 7: Lidhja e Bibliotekave

Biblioteka Virtual Wire:

MPU6050_tockn Libraby:

Biblioteka Wire:

Recommended: