Arduino Robot плавный стар с последующим нарастанием скорости

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017

Доброго времени суток, уже какой день не могу приложить ума как решить задачу. Может вы мне поможете? Дело в том, что имею на руках Arduino Robot ( http://amperka.ru/product/arduino-robot) и мне нужно реализовать плавный старт и постепенное наращивание скорости до максимальной. Очень бы хотелось увидеть пример скетча где такая задача решена. Заранее спасибо. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Лично я вижу 4 варианта подхода к данной задаче:

1. Поиск на простиорах И-нета.

2. Заказ в теме "Ищу исполнителя".

3. Самостоятельное написание.

4. Забыть об этой идее, как о страшном сне.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

Лично я вижу 4 варианта подхода к данной задаче:

Есть ещё пятый - подождать пока проснётся qwone и надеяться, что у того будет правильное настроение :)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А пятый вариант - секретный, новичкам о нем знать необязательно.

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017

Мужики ну че началось, формулу подобрать не могу а вы меня стебете. 

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017
#include <ArduinoRobot.h>

void setup()
{
  Robot.begin();
}
void loop()
{
    for (byte i = 0; i < 255; i = i + 10)
    {
        Robot.motorsWrite(i,i); 
        delay(500);
    }
  delay(3000);
    for (byte i = 0; i < 255; i = i + 10)
    {
        Robot.motorsWrite(255 - i, 255 - i); 
        delay(500);
    }
  delay(3000);
}

Вот например есть у меня код, но он проскакивает в 10 в цикле. Как это поправить, не пойму. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DragonHead пишет:

Вот например есть у меня код, но он проскакивает в 10 в цикле. Как это поправить, не пойму. 

Не понимаю, что именно Вам надо поправить, но если Вы в строках 9 и 15 замените 10 на 9, то будет проскакивать "в 9 в цикле". Если если замените не на 9, а на 8, то .... угадайте с 3-х раз :)

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017

Спасибо большое, стало быть проблема в этих злополучных 10, чуть позже попробую просто с i++ будет ли работать на ваш беглый проффисиональный взгляд?)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Не знаю. Я же не знаю ни что там за подключение, ни что там вообще делается.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Мой ХШ подсказывает, что "проскакивает" упирается в непонимание разрядности целых чисел и прибавляя 10 (9 или даже 8) автор тупо нарывается на переполнение байтовой переменной и никак не может дождаться заветного условия <255 .. может сменить тип счетчика на int или ПРАВИЛЬНО пользовать байтовые счетчики? Ошибка типовая для начинающих "сионистов" .. ваще-то. ;)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

тысячу раз написано, что мир линеен только у военных.

Реальный мир - логарифмы, что шкала громкости, что звездные величина, что клавиатура пианино.

...но это лирика, а по делу - нужно умножать, а не прибавлять. Ардуинка, со своими 16 МГц, вполне справляется с плавающей точкой.

поэтому не  i += 10; а  i *= 1.022; Примерно, а коэффициент подбирать, 1.022 - это на около 250 шагов. Я обычно где-то 100 шагов делаю. Дело вкуса. Для 25 шагов - 1.246.

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017

Ну я же написал, что новичок >_> 

DragonHead
DragonHead аватар
Offline
Зарегистрирован: 28.02.2017

Спасибо большое, попробую сегодня. 

Logik
Offline
Зарегистрирован: 05.08.2014

wdrakula пишет:

тысячу раз написано, что мир линеен только у военных.

Реальный мир - логарифмы, что шкала громкости, что звездные величина, что клавиатура пианино.

ага.

wdrakula пишет:

..но это лирика, а по делу - нужно умножать, а не прибавлять. Ардуинка, со своими 16 МГц, вполне справляется с плавающей точкой.

Справляется, но тяжеловато. Зачем насиловать.

wdrakula пишет:

поэтому не  i += 10; а  i *= 1.022; Примерно, а коэффициент подбирать, 1.022 - это на около 250 шагов. Я обычно где-то 100 шагов делаю. Дело вкуса. Для 25 шагов - 1.246.

Мой вкус требует обычно так. Скорость модельки устанавливаем из диавпазоеа n=0..9. Пересчитываем шаги в управляющее m дето так  m=n<4?n:(1<<(n-1))-1. Получаем 0,1,2,3,7,15,31,63,127,255. Как раз байт и  распределено хороше и не напрягает процессор. Для диапазона 0..11 получим до 1023 - под ШИМ десятибитный.

ПС. Для плавного старта полезно может быть поддать газку сразу но не долго, для преодоления трения покоя.