Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2014, 16:04   #21
Iura
Member
 
Регистрация: 10.03.2014
Адрес: Кишинев
Возраст: 41
Сообщений: 31
Вес репутации: 0
Iura is an unknown quantity at this point
Отправить сообщение для Iura с помощью Skype™
По умолчанию Re: Еще одна тележка с камерой

У меня это работает на ура, только у меня гусенецы
Код:
const int Motor1Pin1 = 2;
const int Motor1Pin2 = 3;
const int Motor2Pin1 = 5;
const int Motor2Pin2 = 6;
int EN1 = 4;
int EN2 = 10;
char symbol;

enum States
{
WAITING,
READING,
RUNNING,
ERROR
};

States state;
States onWait();
States onRead();
States onRun();
States onError();

//Место объявления ваших переменных
//[ДОБАВИТЬ СВОЙ КОД НИЖЕ]


void setup()
{
  //Место инициализации ваших переменных
  //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  pinMode(Motor1Pin1, OUTPUT);   
  pinMode(Motor1Pin2, OUTPUT);   
  pinMode(Motor2Pin1, OUTPUT);   
  pinMode(Motor2Pin2, OUTPUT);
  pinMode(EN1, OUTPUT);
  pinMode(EN2, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  switch (state)
  {
    case WAITING:
      state = onWait();
      break;
    case READING:
      state = onRead();
      break;
    case RUNNING:
      state = onRun();
      break;
    default:
      state = onError();
  }
}

States onWait()
{
  if (Serial.available() > 0)
  {
    return READING;
  }
  return WAITING;
}

States onRead()
{
  symbol = Serial.read();
  return RUNNING;
}

States onRun()
{
  switch (symbol)
  {
    case 'W':
      //начало действий при полученном символе 'W'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  digitalWrite(Motor1Pin2, LOW);
  digitalWrite(Motor1Pin1, HIGH);
  digitalWrite(Motor2Pin2, LOW);
  digitalWrite(Motor2Pin1, HIGH);
  analogWrite(EN1, 255);
  analogWrite(EN2, 255);
      break;
    case 'T':
      //начало действий при полученном символе 'T'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  //digitalWrite(Motor1Pin2, LOW);
  //digitalWrite(Motor1Pin1, LOW);
  //digitalWrite(Motor2Pin1, LOW);
  //digitalWrite(Motor2Pin2, LOW);
  analogWrite(EN1, 0);
  analogWrite(EN2, 0);
      break;
    case 'A':
      //начало действий при полученном символе 'A'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  digitalWrite(Motor1Pin1, LOW);
  digitalWrite(Motor1Pin2, HIGH);
  digitalWrite(Motor2Pin2, LOW);
  digitalWrite(Motor2Pin1, HIGH);
  analogWrite(EN1, 255);
  analogWrite(EN2, 255);
      break;
    case 'S':
      //начало действий при полученном символе 'S'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  digitalWrite(Motor1Pin1, LOW);
  digitalWrite(Motor1Pin2, HIGH);
  digitalWrite(Motor2Pin1, LOW);
  digitalWrite(Motor2Pin2, HIGH);
  analogWrite(EN1, 255);
  analogWrite(EN2, 255);
      break;
    case 'D':
      //начало действий при полученном символе 'D'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]
  digitalWrite(Motor1Pin2, LOW);
  digitalWrite(Motor1Pin1, HIGH);
  digitalWrite(Motor2Pin1, LOW);
  digitalWrite(Motor2Pin2, HIGH);
    analogWrite(EN1, 255);
  analogWrite(EN2, 255);
      break;
    case 'l':
      //начало действий при полученном символе 'l'
      //[ДОБАВИТЬ СВОЙ КОД НИЖЕ]

      break;
    default:
      return ERROR;
  }
  return WAITING;
}

States onError()
{
  //Получены неоговоренные символы. Очищаем ввод и продолжаем.
  //Здесь можно добавить какие-то действия для этой ситуации.
  //...
  while (Serial.available())
  {
    Serial.read();
  }
  return WAITING;
}
Iura вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:11. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика