#1 2017-01-04 23:32:03

dethdron
Учасник
Зареєстрований: 2017-01-04
Повідомлень: 2

добавить автономности роботу проблемы

Решил сделать радиоупрвление на ик для роботf отличным примером послужил урок Дмитрия Осипова по ик управлению. Все получилось, все отлично, Сейчас жду ультрозвуковой дальномер и стало необходимо добавить автономную работу для робота по нажатию определенной кнопки т.е нажал на кнопку и робот стал работать в автономном режиме. еще раз нажал на нее и робот стал работать в режиме ик управления. Компиляция проходит но ничего не робит. Я пробовал добавить flag в случае со светодиодом все работает. но как только вставляю программу робота происходит ерунда

Остання редакція dethdron (2017-01-05 23:41:08)

Неактивний

#2 2017-01-05 18:25:43

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: добавить автономности роботу проблемы

Самая большая проблема не в этом. Если вы сложили шалаш, это не значит что вы сможете сложить не то что небоскреб, но и двух этажный дом.  Рассказывать вам про систему реального времени и millis() ,как машинные часы в системе реального времени. Это долго. Да и мне не зачем.

Неактивний

#3 2017-01-05 20:00:18

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: добавить автономности роботу проблемы

dethdron,привет
qwone - пошутил )

на этот  ( https://geektimes.ru/post/258558/) вариант ориентируетесь?

if (results.value == 0xC70AA3AA)
{
if ( auto_flag ) auto_flag  = 0;
        else auto_flag  = 1;
}



if ( auto_flag )
{
автоматический режим работы
}
else
{
ваши кнопки
}

Неактивний

#4 2017-01-05 20:37:25

qwone
Учасник
Зареєстрований: 2016-07-25
Повідомлень: 143

Re: добавить автономности роботу проблемы

Какие шутки. Первое что надо сделать сделать класс мотор.

/*
#1 моторы
Мотор правый  ENA ->5 (M1_ENA_pin) скорость
              IN1 ->4 (M1_IN1_pin) вперед
              IN2 ->3 (M1_IN2_pin) назад
Мотор левый   ENA ->9 (M2_ENA_pin) скорость
              IN1 ->8 (M2_IN1_pin) вперед
              IN2 ->7 (M2_IN2_pin) назад
*/
class Cl_Motor {
  public:
    Cl_Motor(byte _1pin, byte _2pin, byte _3pin, byte _speed); // конструктор
    void in_setup(); // функцию засунуть в setup() программы
    void FORWARD(); // запустить мотор вперед
    void BACKWARD(); // запустить мотор вперед
    void STOP();// остановить мотор
  private:
    byte ENA_pin; // пин  ENA
    byte N1_pin; // пин  N1
    byte N2_pin; // пин  N2
    byte Speed; // скорость мотора
    byte Motor;// 1 мотор вращается вперед/2 мотор вращается назад / 0 нет

};
Cl_Motor::Cl_Motor(byte _1pin, byte _2pin, byte _3pin, byte _speed) { // конструктор
  ENA_pin = _1pin; // пин  ENA
  N1_pin = _2pin; // пин  N1
  N2_pin = _3pin; // пин  N2
  Speed = _speed; // скорость мотора
}
void Cl_Motor::in_setup() { // функцию засунуть в setup() программы
  Motor = 0;
  analogWrite (ENA_pin, Speed);
  pinMode (N1_pin, OUTPUT);
  digitalWrite(N1_pin, 0);
  pinMode (N2_pin, OUTPUT);
  digitalWrite(N2_pin, 0);
}
void Cl_Motor::FORWARD() { // запустить мотор вперед
  if (Motor != 1) {
    Motor = 1;
    digitalWrite(N1_pin, 1);
    digitalWrite(N2_pin, 0);
  }
}
void Cl_Motor::BACKWARD() { // запустить мотор назад
  if (Motor != 2) {
    Motor = 2;
    digitalWrite(N1_pin, 1);
    digitalWrite(N2_pin, 0);
  }
}
void Cl_Motor::STOP() { // остановить мотор
  if (Motor != 0) {
    Motor = 0;
    digitalWrite(N1_pin, 0);
    digitalWrite(N2_pin, 0);
  }
}

// #1 моторы
Cl_Motor M1(5, 4, 3, 255); // создать мотор 1 (ENA=5,N1=4,N2=3,SPEED=255) 255 максимальная скорость
Cl_Motor M2(9, 8, 7, 255); // создать мотор 2 (ENA=9,N1=8,N2=7,SPEED=255) 255 максимальная скорость
void setup() {
  // #1 моторы
  M1.in_setup();// инициализировать мотор 1
  M2.in_setup();// инициализировать мотор 2
  // движение вперед
  M1.FORWARD();
  M2.FORWARD();
  delay (60000); // пауза 1 минута
  // движение назад
  M1.BACKWARD();
  M2.BACKWARD();
  delay (60000); // пауза 1 минута
  // вращение на месте
  M1.FORWARD();
  M2.BACKWARD();
  delay (60000); // пауза 1 минута
  // остановка
  M1.STOP();
  M2.STOP();
  delay (60000); // пауза 1 минута
}

void loop() {
  // #1 моторы

}

Неактивний

#5 2017-01-05 23:35:12

dethdron
Учасник
Зареєстрований: 2017-01-04
Повідомлень: 2

Re: добавить автономности роботу проблемы

спасибо всем ! Сделал вообщем что хотел, построив простое меню с помощью swith case правда пришлось использовать внешнюю кнопку для переключения режимов.. Осталось оптимизировать и сжать скетч с 10200 до 7100 что бы запихать в atmega8

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму