Мазмуну:

Жест менен башкарылган зымсыз унаа: 7 кадам
Жест менен башкарылган зымсыз унаа: 7 кадам

Video: Жест менен башкарылган зымсыз унаа: 7 кадам

Video: Жест менен башкарылган зымсыз унаа: 7 кадам
Video: Я есть. Ты есть. Он есть_Рассказ_Слушать 2024, Декабрь
Anonim
Жаңсап башкарылган зымсыз унаа
Жаңсап башкарылган зымсыз унаа

Бул үйрөткүчтө биз жаңсоолор менен башкарылган машинаны же роботту кантип жасоону үйрөнөбүз. Бул долбоор эки бөлүктөн турат, бир бөлүгү өткөргүч, экинчиси кабыл алуучу блок. Бергич бирдиги чындыгында кол мээлейлерге орнотулган жана алуучу бирдиги машинанын же кандайдыр бир роботтун ичине жайгаштырылган. Эми жакшы машина жасоого убакыт келди. Кеттик!

1 -кадам: жабдуулар

Бергич бирдиги

1. Ардуино Нано.

2. MPU6050 сенсор модулу.

3. RF 433 МГц өткөргүч.

4. 3 ячейканын ар кандай түрү, 11.1 вольт батареясы (Бул жерде мен тыйын уячасын колдондум).

5. Vero-Board.

6. Кол мээлей.

Алуучу бирдиги

1. Arduino Nano же Arduino Uno.

2. L298N мотор айдоочу модулу.

3. 4 дөңгөлөктүү робот алкагы моторлорду камтыйт.

4. RF 433 RF алуучу.

5. 3 уячалуу, 11,1 вольттуу Li-po батареясы.

6. Vero-board.

Башкалар

1. Желим таякчалар жана мылтык.

2. Өткөргүч зымдар.

3. Бурама айдоочулар

4. Лайнердик комплект.

жана башкалар.

2 -кадам: Райондук диаграмманын сүрөт файлы

Райондук диаграмманын сүрөт файлы
Райондук диаграмманын сүрөт файлы

3 -кадам: Райондук диаграмманын фризинг файлы

4 -кадам: өткөргүч коду

#кошуу

#кошуу

#кошуу

MPU6050 mpu6050 (зым);

узак таймер = 0;

char *контролеру;

жараксыз орнотуу ()

{Serial.begin (9600); Wire.begin (); mpu6050.begin (); mpu6050.calcGyroOffsets (чыныгы); vw_set_ptt_inverted (true); // vw_set_tx_pin (10); vw_setup (4000); // маалыматтарды берүүнүн ылдамдыгы Kbps

}

боштук цикл ()

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

mpu6050.update ();

эгер (миллис () - таймер> 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 "); таймер = миллис (); }

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

эгер (mpu6050.getAccAngleX () 30) {контроллери = "X2"; vw_send ((uint8_t *) контролеру, strlen (контролер)); vw_wait_tx (); // Билдирүү бүткөнчө күтө туруңуз Serial.println ("АЛГА"); } else if (mpu6050.getAccAngleY ()> 40) {контролер = "Y1"; vw_send ((uint8_t *) контролеру, strlen (контролер)); vw_wait_tx (); // Бардык билдирүү кеткенге чейин күтө туруңуз Serial.println ("LEFT"); } else if (mpu6050.getAccAngleY () <-40) {контролер = "Y2"; vw_send ((uint8_t *) контролеру, strlen (контролер)); vw_wait_tx (); // Билдирүү бүткөнчө күтө туруңуз Serial.println ("ОҢ"); } башка if (mpu6050.getAccAngleX ()-10 && mpu6050.getAccAngleY ()-10) {контролер = "A1"; vw_send ((uint8_t *) контролеру, strlen (контролер)); vw_wait_tx (); // Билдирүү бүткөнчө күтө туруңуз Serial.println ("STOP"); }}

5 -кадам: Алуучунун коду

#кошуу

int LA = 3;

int LB = 11; int RA = 5; int RB = 6; void setup () {Serial.begin (9600); vw_set_ptt_inverted (true); // DR3100 vw_set_rx_pin үчүн талап кылынат (12); vw_setup (4000); // Бит секундага pinMode (13, OUTPUT); pinMode (LA, OUTPUT); pinMode (LB, OUTPUT); pinMode (RA, OUTPUT); pinMode (RB, OUTPUT); vw_rx_start (); // PLL ресиверин Serial.println ("Баары ОК") менен иштетүү;

}

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

if (vw_get_message (buf, & buflen)) // Бөгөттөөчү эмес

{if ((buf [0] == 'X') && (buf [1] == '1')) {Serial.println ("АРТКА"); артка (); кечиктирүү (100); // өчүрүү (); } else if ((buf [0] == 'X') && (buf [1] == '2')) {Serial.println ("АЛГА"); алдыга (); кечиктирүү (100); // өчүрүү (); }

эгер башка ((buf [0] == 'Y') && (buf [1] == '1'))

{Serial.println ("СОЛГО"); сол (); кечиктирүү (100); // өчүрүү (); }

эгер башка ((buf [0] == 'Y') && (buf [1] == '2'))

{Serial.println ("ОҢ"); оң (); кечиктирүү (100); // өчүрүү (); } else if ((buf [0] == 'A') && (buf [1] == '1')) {Serial.println ("STOP"); өчүрүү (); кечиктирүү (100); }} else {Serial.println ("Сигнал алынган жок"); }}

алдыга боштук ()

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

артка боштук ()

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

боштук солго ()

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

жараксыз укук ()

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

жокко чыгаруу ()

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

6 -кадам: INO Files

7 -кадам: Китепканалардын шилтемеси

Виртуалдык зым китепканасы:

MPU6050_tockn Libraby:

Зым китепканасы:

Сунушталууда: