 Petr Kiselev » 19 июн 2015, 19:34
 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);  
}