Задержки в Arduino

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

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

Сообщение gurvinok » 21 дек 2015, 22:52

Почему падают слейвы? Я ща молотком по МК тресну!!!
Если долго мучиться, может быть получится.

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

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

Сообщение GhostX » 21 дек 2015, 23:49

Ну молоток конечно решит проблемы. Все... И даже те, что не нужно было бы решать...
Время свободное сразу появится.)))
Слейвы, это датчики температурные или о чем речь?

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

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

Сообщение GhostX » 22 дек 2015, 03:40

Даже не знаю, как спросить. На языке крутиться ГДЕ Я?
Но такой вопрос, не корректно звучит.)))
Поставил вижл студию 2015
с ней установил Arduino For Visual Studio
если память не изменяет, прям из самой студии, как то залез что то нажал, и она сама с инета скачалась и сама встала..., что именно сделал не скажу, уже много лазил, запутался.
Коды открывает, адреса где ардуина иде лежит спрашивает, где библиотеки лежат тоже интересуется. Ну короче блокнот получился, с отладчиком под виндовс))
есть монитор порта. и что то пытается компилировать при потыкте запустить отладчик... с ошибкой само собой.
На экране код которым я впервые запустил серву по нужному алгоритму.
надо полагать, что ничего полезного из этого не выжать или я ошибаюсь?
Вложения
Безымянный.jpg

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

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

Сообщение gurvinok » 22 дек 2015, 18:50

pos += 1 ))) Так оно работать будет, но правильно так pos++, а pos -= 1 это pos--.
А почему при pos от 0 до 100 это от 0 до 180 градусов? ;)
И если нужно точно позиционировать, то проще шаговик использовать. Да и управление простое, можно свою функцию написать и вращать на любой угол. Современные шаговики на 200 шагов. При полношаговом режиме дают 1,8 градусов. Если в полушаговом, то 0,6. Ну и дальше микрошаг.
Если долго мучиться, может быть получится.

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

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

Сообщение GhostX » 22 дек 2015, 21:51

По феншую Pos++, было, но я эксперементировал с шагами по 3 градуса, стало pos +=1.
0-100, это именно от 0-100 градусов. Так нужно, для правильной позиции лотка.
В идеале 45 градусов, это горизонт, 0 и 90 это крайние позиции.
Но с учетом механических погрешностей исправлять которые не сложно, но геморойно и кропотливо, проще программно поставить серву в то положение, которое визуально соответсвует задуманному.
И раз уж затронули тему про ++ и +=
То вопрос

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

if (key == 1)
{
for (pos =0; pos < 100; pos ++)
{
myservo.write(pos);
delay(20);
}
}
If(key == 0)
{
For pos =100; pos >0; pos--)
{
myservo.write(pos);
delay(20);
}
}
По сути не сложные условия которые практически дублируют друг друга, как оптимизировать код?
Возможно ли знаки менять условием if например...
Шаговик сильно не проще, потому, что его нет, а серва есть. :) Да и серва держит свое положение, а шаговик нет.
Ну и самая мелочь, вопрос касался не кода в вижл студии, а самой студии.))

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

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

Сообщение gurvinok » 22 дек 2015, 22:52

Ну и самая мелочь, вопрос касался не кода в вижл студии, а самой студии.))
На экране код которым я впервые запустил серву по нужному алгоритму.
надо полагать, что ничего полезного из этого не выжать или я ошибаюсь?
Или я что-то не понял? )))
По феншую Pos++, было, но я эксперементировал с шагами по 3 градуса, стало pos +=1.
Pos++; и Pos += 1; и Pos = Pos + 1; Это одно и тоже.
Да и серва держит свое положение, а шаговик нет.
Наоборот. Серва болтается, а шаговик стоит как вкопанный. Его для этого и разрабатывали. Ну и в конце концов в точные приборы сервы не ставят, а ставят шаговики. Хотя бы для примера принтера.
Если долго мучиться, может быть получится.

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

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

Сообщение gurvinok » 22 дек 2015, 23:00

Все уже придумано. Вот код с офсайта.

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



#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}
Если долго мучиться, может быть получится.

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

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

Сообщение GhostX » 23 дек 2015, 00:43

gurvinok писал(а):Или я что-то не понял? )))
Да, все наизнанку.
Я все говорил про вижл студию. Я ее поставил, на нее плагин ардуино поставил. Все запустилось, без ошибок.
Спросило адрес ардуино иде, где библиотеки лежат, плату какая, порт.
Даже порт! И еще и увидела его, когда я ардуину воткнул. Но я не смог запустить ни компилятор, ни отладчик...
Вот и спросил, можно ли что то сделать из этого и как?
С сервой и шаговиками согласен, тупанул, каюсь. :) но факт наличия сервы и отсутствия шаговиков ни кто не отменял.))
Код с оф сайта мало имеет отношения к поставленному вопросу.
Вопрос был как менять плюс на минус, больше на меньше, в цикле фор в зависимости от, например ключей?
То есть если ключ == 1, то прибавляем, если ключ == 0 то минусуем.
Вот как то так. Знаю, что объясняю не по человечески, но по другому не умею... :)

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

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

Сообщение gurvinok » 23 дек 2015, 23:10

Судя по ошибке функция void loop() уже была определена. Вот он и возмущается что второй раз определяют.
Больше, меньше, минус, плюс и равно - это операторы, а не переменные. Поэтому их нельзя менять в цикле. Только
if()
{
{
else
{
}
Если долго мучиться, может быть получится.

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

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

Сообщение GhostX » 24 дек 2015, 02:00

gurvinok писал(а):Больше, меньше, минус, плюс и равно - это операторы, а не переменные. Поэтому их нельзя менять в цикле. Только
if()
{
{
else
{
}
Исчерпывающий ответ. Печально...

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

//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 пока серва займёт новое положение
			key1 = 1;
		}
	}
	if (pos > gorizont) {
		for ( pos ; pos > gorizont; pos-- ){
			myservo.write(pos);              // процесс перемещения
             delay(P);		   // ждём 20ms пока серва займёт новое положение
			key1 = 1;
		}
	}
}
вот этот кусок кода, мне не нравится как написан.
delay, я уберу. А что бы сделать с for? Как по феншую написать?
P.S.
Ну а с Visual Studio я перешел в Proteus 8 Professional и о чудо, нашел все, что искал. И писать можно и компилируется все нормально, и с ходу можно нарисовать, что угодно. И отладчик есть, и осциллографы и порт и шагает по программе, что в переменных лежит, и изменения этих переменных подсвечивается, вообще все удовольствия. Интерфейс хоть и не русский, но такой дружественный, что и так все понятно. Я уже и не ждал, что такое изобилие возможно. :)
А еще, самое главное! Это все, РАБОТАЕТ!!! :D
Вложения
Безымянный.jpg
Моя маленькая победа

Ответить