Petr Kiselev » 19 июн 2015, 19:34
Нашел вот скетч для нашего Разведчика (однодвижительного с УЗ сенсором)
Скетч 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);
}