Задержки в Arduino

Здесь обсуждаем Arduino
Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Задержки в Arduino

Сообщение gurvinok » 24 дек 2015, 13:36

О... Протеус. Ну-ну. Очень интересно на нем работает например такой код.

Включить светодиод.
Задержка пол секунды.
Выключить светодиод.
Задержка пол секунды.

И самое главное не нужно удивляться если программа идеально работающая в протеусе почему-то не заработает в железе. :)
Из личного опыта протеус это самый кривой отладчик и интерпретатор электрических схем.
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Задержки в Arduino

Сообщение GhostX » 24 дек 2015, 14:38

Да, я все это читал на форумах про него, а еще у большей половины он вообще не работал или частично что то не работало. Думаю, для моих задач, он пойдет. Ибо остальное все, что я попробовал, вообще не работает. Какие альтернативы? Бумажка с карандашиком?
А с кодом как поступить? Оставить как есть?

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Задержки в Arduino

Сообщение gurvinok » 24 дек 2015, 15:21

Код можно оставить как есть. Единственное нужно убрать точку с запятой тут void Parkuem (void){; и в делеях прописать жестко время задержки, а то из-за переменной, функция может сыграть злую шутку.
И еще. В одном из ифов нужно обязательно в условии поставить либо <=, либо >=, а то может зависнуть в промежутке.
Если долго мучиться, может быть получится.

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Задержки в Arduino

Сообщение gurvinok » 24 дек 2015, 15:35

Я бы даже вот так изобразил бы.

Код: Выделить всё

//P = 20 милисек
//pos = в диапазоне от 0 до 100 где то будет в момент нажатия кнопки. В 99% всех случаев наступления события в //крайних точках.
//gorizont = 55 градусов
//key1 нужен для фиксации события, нажатие кнопки, или снятия этого события.

void Parkuem (void)
{ // из любого положения поворачивает серву в горизонтальную плоскость.
   if (pos <= gorizont) 
	   {
         for ( pos; pos < gorizont; pos++ )
		     {
		         myservo.write(pos);              // процесс перемещения
		         delay(P);          // ждём 20ms пока серва займёт новое положение
		     }
	    }
   else 
	   {
		  for ( pos; pos > gorizont; pos-- )
			  {
				myservo.write(pos);              // процесс перемещения
				delay(P);         // ждём 20ms пока серва займёт новое положение
			  }
	   }
	key1 = 1;
}
Если долго мучиться, может быть получится.

Аватара пользователя
GhostX
Сообщения: 1115
Зарегистрирован: 07 дек 2015, 14:40
Откуда: Рязань

Re: Задержки в Arduino

Сообщение GhostX » 24 дек 2015, 16:47

Принял на вооружение. Спасибо. :)
либо <=, либо >=, а то может зависнуть в промежутке.
Причина в компиляторе или м/с ?
Логику зависания не понимаю.
if (50<50) ответ может быть только "нет", другого я не представляю...
и if (50>50) так же ответ только "нет".

Аватара пользователя
gurvinok
Сообщения: 1500
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Задержки в Arduino

Сообщение gurvinok » 24 дек 2015, 17:01

Это если 50 не нужно. Как в алгебре круглая скобка не включает точку, а квадратная включает, при поиске корней.
Если долго мучиться, может быть получится.

Ответить