Мазмуну:

Робот машинадан тоскоолдук кылуу: 9 кадам
Робот машинадан тоскоолдук кылуу: 9 кадам

Video: Робот машинадан тоскоолдук кылуу: 9 кадам

Video: Робот машинадан тоскоолдук кылуу: 9 кадам
Video: Кир жуугуч машина нерселерди жарактан чыгарат, оңдоо процедурасы 2024, Июль
Anonim
Роботтоштурулган машинадан тоскоолдук
Роботтоштурулган машинадан тоскоолдук
Роботтоштурулган машинадан тоскоолдук
Роботтоштурулган машинадан тоскоолдук

Роботко жол бербөө үчүн тоскоолдукту кантип куруу керек

1 -кадам: Кара куту

Кара куту
Кара куту

биринчи кадам мен робот үчүн база катары кара кутуну колдонгон.

2 -кадам: Arduino

Arduino
Arduino

Arduino бүт системанын мээси жана моторлорубузду оркестрлейт

3 -кадам: Blackboxко Arduino тиркөө

Blackboxко Arduino тиркөө
Blackboxко Arduino тиркөө

Мен ардуинону ысык клей менен кара кутуга бекиттим

4 -кадам: Ultrasonic Sensor

Ultrasonic Sensor
Ultrasonic Sensor

Өз алдынча кыймылдай ала турган робот жасоо үчүн бизге кандайдыр бир киргизүү, биздин максатка туура келген сенсор керек. УЗИ сенсору - УЗИ толкундарынын жардамы менен объектке чейинки аралыкты өлчөөчү прибор. УЗИ сенсору объекттин жакындыгы тууралуу маалыматты жеткирүүчү УЗИ импульстарын жөнөтүү жана алуу үчүн өзгөрткүчтү колдонот.

5 -кадам: Breadboard сенсорунун Arduino менен туташуусу

Сенсордун Arduino менен Breadboard туташуусу
Сенсордун Arduino менен Breadboard туташуусу
Сенсордун Arduino менен Breadboard туташуусу
Сенсордун Arduino менен Breadboard туташуусу

Мен зымдарды нан жана ардуинонун ортосундагы байланышты колдонуш үчүн колдончумун.

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

6 -кадам: Motor Shield

Motor Shield
Motor Shield

Arduino такталары DC кыймылдаткычтарын өз алдынча башкара алышпайт, анткени алар жаратып жаткан агымдар өтө төмөн. Бул маселени чечүү үчүн биз мотор калканчтарын колдонобуз. тепкич мотору. … Бул казыктарга кайрылуу менен, сиз баштоо үчүн мотор каналын тандап, мотордун багытын (полярдыкты), мотор ылдамдыгын (PWM) орното аласыз, моторду токтотуп, иштете аласыз жана ар бир каналдын учурдагы сиңирүүсүн көзөмөлдөй аласыз.

7 -кадам: Motor Shield'ди Arduino менен туташтыруу

Мотор калканчын Arduino менен туташтыруу
Мотор калканчын Arduino менен туташтыруу

Жөн эле мотор калканчын сенсор зымдары кысылып ардуиного тиркеңиз

8 -кадам: 4 моторду жана батареяны калканга туташтыруу

4 моторду жана батареяны калканга туташтыруу
4 моторду жана батареяны калканга туташтыруу

Ар бир Motor Shieldдин (жок дегенде) эки каналы бар, бири мотор үчүн, экинчиси кубат булагы үчүн, аларды бири -бирине карата туташтырыңыз

9 -кадам: Роботту программалоо

бул кодду иштетүү

#кошуу #кошуу

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor мотор1 (1, MOTOR12_1KHZ); AF_DCMotor мотор2 (2, MOTOR12_1KHZ); AF_DCMotor мотор3 (3, MOTOR34_1KHZ); AF_DCMotor мотор4 (4, MOTOR34_1KHZ); Servo myservo;

#TRIG_PIN A2 аныктоо #ECHO_PIN A3 аныктоо #MAX_DISTANCE 150 аныктоо #MAX_SPEED 100 #аныктоо MAX_SPEED_OFFSET 10

логикалык goForward = false; int расстояние = 80; int speedSet = 0;

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

myservo.attach (10); myservo.write (115); кечигүү (2000); аралык = readPing (); кечиктирүү (100); аралык = readPing (); кечиктирүү (100); аралык = readPing (); кечиктирүү (100); аралык = readPing (); кечиктирүү (100); }

void loop () {int distanceR = 0; int расстояние L = 0; кечиктирүү (40); if (расстояние <= 15) {moveStop (); кечиктирүү (50); moveBackward (); кечиктирүү (150); moveStop (); кечиктирүү (100); расR = lookRight (); кечиктирүү (100); расстояние L = lookLeft (); кечиктирүү (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } аралык = readPing (); }

int lookRight () {myservo.write (50); кечигүү (250); int расстояние = readPing (); кечиктирүү (50); myservo.write (100); кайтуу аралыгы; }

int lookLeft () {myservo.write (120); кечигүү (300); int расстояние = readPing (); кечиктирүү (100); myservo.write (115); кайтуу аралыгы; кечиктирүү (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); эгер (см == 0) {см = 200; } см кайтаруу; }

void moveStop () {motor1.run (RELEASE); motor2.run (ЧЫГАРУУ); motor3.run (ЧЫГАРУУ); motor4.run (ЧЫГАРУУ); } void moveForward () {

if (! goForward) {goForward = true; motor1.run (АЛГА); motor2.run (АЛГА); motor3.run (АЛГА); motor4.run (АЛГА); үчүн (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); кечигүү (5); }}}

void moveBackward () {goForward = false; motor1.run (Артка); motor2.run (Артка); motor3.run (Артка); motor4.run (Артка); үчүн (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); кечигүү (5); } боштук turnLeft () {motor1.run (BACKWARD); motor2.run (Артка); motor3.run (АЛГА); motor4.run (АЛГА); кечигүү (500); motor1.run (АЛГА); motor2.run (АЛГА); motor3.run (АЛГА); motor4.run (АЛГА); }

жараксыз turnLeft () {motor1.run (АРТКА); motor2.run (Артка); motor3.run (АЛГА); motor4.run (АЛГА); кечигүү (500); motor1.run (АЛГА); motor2.run (АЛГА); motor3.run (АЛГА); motor4.run (АЛГА); }

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