Робот машинка

Saenko
Offline
Зарегистрирован: 08.12.2020

Помогите доделать робота)

нужно добавить датчик расстояния и запрограммируйте его так, чтобы робот мог не только двигаться по черной линии, но и останавливаться перед препятствиями

// Include Libraries
#include "Arduino.h"
#include "DCMDriverL298.h"
 
 
// Pin Definitions
#define DCMOTORDRIVERL298_PIN_INT1  2
#define DCMOTORDRIVERL298_PIN_ENB 6
#define DCMOTORDRIVERL298_PIN_INT2  3
#define DCMOTORDRIVERL298_PIN_ENA 5
#define DCMOTORDRIVERL298_PIN_INT3  4
#define DCMOTORDRIVERL298_PIN_INT4  7
#define IRLINEFOLLOW_1_PIN_OUT  8
#define IRLINEFOLLOW_2_PIN_OUT  9
 
const int mySpeed = 255;
 
void setup() {
    pinMode(IRLINEFOLLOW_1_PIN_OUT, INPUT);
    pinMode(IRLINEFOLLOW_2_PIN_OUT, INPUT);
    pinMode(DCMOTORDRIVERL298_PIN_INT1, OUTPUT)
    pinMode(DCMOTORDRIVERL298_PIN_INT2, OUTPUT)
    pinMode(DCMOTORDRIVERL298_PIN_INT3, OUTPUT)
    pinMode(DCMOTORDRIVERL298_PIN_INT4, OUTPUT)
    analogWrite(ENA, mySpeed);
    analogWrite(ENB, mySpeed);
    delay(1000);
}
 
void loop() {
    if (digitalRead(IRLINEFOLLOW_1_PIN_OUT) &&
    digitalRead(IRLINEFOLLOW_2_PIN_OUT)) {
    // Move Forward
    moveForward();
    }
    if (!(digitalRead(IRLINEFOLLOW_1_PIN_OUT)) &&
    digitalRead(IRLINEFOLLOW_2_PIN_OUT)) {
    // Turn right
    turnRight();
    }
    if (digitalRead(IRLINEFOLLOW_1_PIN_OUT) &&
    !(digitalRead(IRLINEFOLLOW_2_PIN_OUT))) {
    // turn left
    turnLeft();
    }
    if (!(digitalRead(IRLINEFOLLOW_1_PIN_OUT)) &&
    !(digitalRead(IRLINEFOLLOW_2_PIN_OUT))) {
    // stop
    stopMove();
    }
}
 
void moveForward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(1000);
}
void moveBackward() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(1000);
}
void stopMove() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void turnRight() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delay(1000);
}
void turnLeft() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delay(1000);
}
BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

1. С такими просьбами - прямиком в платный раздел "Ищу исполнителя".

2. Код надо выкладывать по правилам (а для этого прежде, чем писать на форум - читать правила).

3. Этот код "неремонтопригодный", надо будет переписывать с нуля.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Saenko пишет:

нужно добавить датчик расстояния и запрограммируйте его так, чтобы ...

Мда ... а Вы что будете делать?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Получать профит же.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

Получать профит же.

Понятно, тогда так и напишем

Saenko пишет:
запрограммируйте его так, чтобы робот мог не только двигаться по черной линии, но и останавливаться перед препятствиями

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Евгений Петрович, эта печать без Вашей визы не действительна )))