Ви не увійшли.
Решил сделать радиоупрвление на ик для роботf отличным примером послужил урок Дмитрия Осипова по ик управлению. Все получилось, все отлично, Сейчас жду ультрозвуковой дальномер и стало необходимо добавить автономную работу для робота по нажатию определенной кнопки т.е нажал на кнопку и робот стал работать в автономном режиме. еще раз нажал на нее и робот стал работать в режиме ик управления. Компиляция проходит но ничего не робит. Я пробовал добавить flag в случае со светодиодом все работает. но как только вставляю программу робота происходит ерунда
Остання редакція dethdron (2017-01-05 23:41:08)
Неактивний
Самая большая проблема не в этом. Если вы сложили шалаш, это не значит что вы сможете сложить не то что небоскреб, но и двух этажный дом. Рассказывать вам про систему реального времени и millis() ,как машинные часы в системе реального времени. Это долго. Да и мне не зачем.
Неактивний
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
{
ваши кнопки
}
Неактивний
Какие шутки. Первое что надо сделать сделать класс мотор.
/*
#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 моторы
}
Неактивний
спасибо всем ! Сделал вообщем что хотел, построив простое меню с помощью swith case правда пришлось использовать внешнюю кнопку для переключения режимов.. Осталось оптимизировать и сжать скетч с 10200 до 7100 что бы запихать в atmega8
Неактивний