Нашел вот скетч для нашего Разведчика (однодвижительного с УЗ сенсором) Скетч 01 От Михаила Шевченко #include <AFMotor.h>
#include <Servo.h>
AF_DCMotor motor(1);
Servo servo1;
int inputPin=13; // Echo
int outputPin=7; // Trig
int count = 0;
void setup()
{
Serial.begin(9600);
Serial.println("Motor test!");
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
servo1.attach(9);
motor.setSpeed(255);
servo1.write(90);
motor.run(RELEASE);
delay(2000);
}
void loop()
{
digitalWrite(outputPin, LOW);
delayMicroseconds(2);
digitalWrite(outputPin, HIGH);
delayMicroseconds(10);
digitalWrite(outputPin, LOW);
int distance = pulseIn(inputPin, HIGH);
distance = distance / 58;
Serial.println(distance);
if (distance == 0 || distance > 50)
{
int e = servo1.read();
if (e < 90) servo1.write(e+10);
if (e > 90) servo1.write(e-10);
}
else // препятствие
{
if ( count == 2 ) servo1.write(170); // вправо
else servo1.write(10); // влево
count += 1;
if ( count == 3 ) count = 0;
}
motor.run(FORWARD);
delay(100);
}
Добавлено спустя 3 минуты 8 секунд: Попробую найти скетч для двухплатного на Pro mini. Писать сейчас просто лень.
Добавлено спустя 3 минуты 31 секунду: Мои студенты пишут что-то вроде таких: Скетч движения робота до мины и возвращение на «Старт»
int IN1 = 2; int IN2 = 3; int IN3 = 4; int IN4 = 5; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(3000); // Это условие выполняется 3 секунд. } void loop()
{ digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // 2 секунд движения вперед. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(100); // Поворот влево 0,1 секунды. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(200); // Остановка на 0.2 секунду. digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ – LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,HIGH); // Двигатель Б назад ДА - HIGH delay(200); // Поворот вправо 0.2 секунда. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(100); // Поворот влево 0,1 секунды. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // 2 секунд движения вперед. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,HIGH); // Двигатель Б назад ДА - HIGH delay(200); // Поворот влево 0.2 секунду. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // 2 секунд движения вперед. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // Остановка на 2 секунды. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,HIGH); // Двигатель А назад ДА - HIGH digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(500); // Поворот вправо 0.5 секунды (разворот). digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду. digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // 2 секунд движения вперед. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ – LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - HIGH delay(200); // Поворот вправо 0.2 секунда. digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(1000); // Остановка на 1 секунду, после чего идет следующее условие ниже.
digitalWrite(IN1,HIGH); // Двигатель А вперед ДА - HIGH digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,HIGH); // Двигатель Б вперед ДА - HIGH digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(3000); // 3 секунд движения вперед (возвращение на исходную позицию). digitalWrite(IN1,LOW); // Двигатель А вперед НЕТ - LOW digitalWrite(IN2,LOW); // Двигатель А назад НЕТ - LOW digitalWrite(IN3,LOW); // Двигатель Б вперед НЕТ - LOW digitalWrite(IN4,LOW); // Двигатель Б назад НЕТ - LOW delay(2000); // Остановка на 20 секунд. }
Добавлено спустя 14 минут 44 секунды: Нашел что-то похожее. Скетчи для прохождения маршрута "Квадрат" при управлении бортами. Для левого борта:
#include <Stepper.h>
const int stepsPerRevolution = 300; // change this to fit the number of steps per revolution // for your motor
// initialize the stepper library on pins 2 through 5: Stepper myStepper(stepsPerRevolution, 2,3,4,5);
void setup() { // set the speed at60 rpm: myStepper.setSpeed(60); // initialize the serial port: Serial.begin(9600); }
void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(3500); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(350); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(4000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(350); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(4000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(350); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(4000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(350); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(0); delay(5000); }
А это для правого:
Добавлено спустя 1 минуту 2 секунды: #include <Stepper.h>
const int stepsPerRevolution = 300; // change this to fit the number of steps per revolution // for your motor
// initialize the stepper library on pins 2 through 5: Stepper myStepper(stepsPerRevolution, 2,3,4,5);
void setup() { // set the speed at60 rpm: myStepper.setSpeed(60); // initialize the serial port: Serial.begin(9600); }
void loop() { // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(3500); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(0); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(3000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(0); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(3000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(0); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(3000); delay(500); // step one revolution in one direction: Serial.println("clockwise"); myStepper.step(-350); delay(500); // step one revolution in the other direction: Serial.println("counterclockwise"); myStepper.step(0); delay(5000); }
|