ардуино мать её

любые темы, в разумных рамках......

ардуино мать её

Сообщение Vit » 23 дек 2016 15:26

есть у нас тут маньяки? if....else
Что может пойти не так, пойдет не так и это обязательно будет так.
Аватара пользователя
Vit
Команда клуба
Команда клуба
 
Сообщения: 10403
Изображения: 461
Зарегистрирован: 29 май 2008 19:13
Авто:: Oldsmobile Silhouette 3,8
Год выпуска:: 1993
Место жительства: Королев

Re: ардуино мать её

Сообщение pev » 23 дек 2016 17:22

Vit писал(а):есть у нас тут маньяки? if....else


Маньяков наверно нет, так любители :hahaha: если условие выполняется, делаем одно, если не выполняется, другое... Что конкретно нужно сделать? Вот вроде доходчиво http://arduino.ua/ru/prog/Else
Никогда не езди быстрее, чем может летать твой ангел-хранитель.
pev
 
Сообщения: 1248
Изображения: 8
Зарегистрирован: 26 июн 2008 11:32
Откуда: г. Рязань
Авто:: Chevrolet Lumina APV 3,8
Год выпуска:: 1995
Место жительства: Рязань

Re: ардуино мать её

Сообщение Vit » 23 дек 2016 17:59

да это все понятно
считал положение потенциометра присвоил Х;
теперь двигаем пот и пытаемся понять, ускоряемся или замедляемся. вот как это сделать?
не скорость рассчитать от пот, а ускорение-торможение, то есть -1 и 1 , 0 пот стоит мертво.
Что может пойти не так, пойдет не так и это обязательно будет так.
Аватара пользователя
Vit
Команда клуба
Команда клуба
 
Сообщения: 10403
Изображения: 461
Зарегистрирован: 29 май 2008 19:13
Авто:: Oldsmobile Silhouette 3,8
Год выпуска:: 1993
Место жительства: Королев

Re: ардуино мать её

Сообщение pev » 23 дек 2016 21:45

Ну где то так, за достоверность не ручаюсь...

// пины расписаны от балды
// число прибавляемое к х нужно прикинуть, двойку поставил от балды, может будет мало в реале
// переменнику на ось вешаем эксцентрик и устанавливаем в среднее положение
// при движении вперед напряжение на среднем выводе должно увеличиваться, при торможении уменьшаться
#define greenled 8
#define redled 9
#define blueled 10
#define pot A0

void setup(){
pinMode(greenled, OUTPUT); // пин со светодиодом зеленым — выход (ускорение)
pinMode(redled, OUTPUT); // пин со светодиодом красным — выход (торможение)
pinMode(blueled, OUTPUT); // пин со светодиодом синий — выход (стоим на месте)
pinMode(pot, INPUT); // пин с потенциометром - вход
digitalWrite(redled, LOW); // гасим светодиод
digitalWrite(greenled, LOW); // гасим светодиод
digitalWrite(blueled, LOW); // гасим светодиод
}
void loop(){
int x; int y; // объявляем переменную x и y
// считываем напряжение с потенциометра:
// будет получено число от 0 до 1023
// делим его на 4, получится число в диапозоне
// 0-255 (дробная часть будет отброшена)
x = analogRead(pot) / 4;
y=x;
delay(100); // задержка между считываниями для стабильности работы
x = analogRead(pot) / 4;
if (x > y+2){
digitalWrite(greenled, HIGH); // зажигаем зеленый светодиод "ускорение"
}
else if (x < y-2){
digitalWrite(redled, HIGH); // зажигаем крсный светодиод "торможение"
}
else{
digitalWrite(blueled, HIGH); // зажигаем синий светодиод "стоим на месте"
}
delay(1); // задержка между считываниями для стабильности работы
}
Последний раз редактировалось pev 24 дек 2016 10:24, всего редактировалось 1 раз.
Никогда не езди быстрее, чем может летать твой ангел-хранитель.
pev
 
Сообщения: 1248
Изображения: 8
Зарегистрирован: 26 июн 2008 11:32
Откуда: г. Рязань
Авто:: Chevrolet Lumina APV 3,8
Год выпуска:: 1995
Место жительства: Рязань

Re: ардуино мать её

Сообщение pev » 24 дек 2016 00:04

Нет не правильно, переменную х надо сохранять и потом только сравнивать... завтра подумаю.
Никогда не езди быстрее, чем может летать твой ангел-хранитель.
pev
 
Сообщения: 1248
Изображения: 8
Зарегистрирован: 26 июн 2008 11:32
Откуда: г. Рязань
Авто:: Chevrolet Lumina APV 3,8
Год выпуска:: 1995
Место жительства: Рязань

Re: ардуино мать её

Сообщение pev » 24 дек 2016 10:28

поправил скетч, внес еще переменную и задержку между проверками напряжения 0,1 с. таким образом проверка 10 раз в секунду будет...
Короче подумал еще немного и получается ерунда и циклы здесь не самая большая проблема. Теоретически если в предыдущем примере вместо х поставить 127, это половина напряжения на переменнике при условии что аппарат стоит, тогда при ускорении и торможении теоретически получается, паузу только нужно подобрать и возможно светодиоды гасить. Но вот что будет если аппарат установили не горизонтально, правильно он будет показывать положение отличное от "стоим". Следовательно "х" нужно периодически проверять и сохранять в памяти и от нее плясать, вопрос на сколько часто ее проверять? Но и это не все, подозреваю что если проверять часто, то получиться при равномерном ускорении программка выдаст что аппарат "стоит", аналогично с торможением... Если проверять не часто можем проморгать начало ускорения или торможения.
Короче обрисуй что делаешь, для чего это надо, может другим способом это можно реализовать...
Никогда не езди быстрее, чем может летать твой ангел-хранитель.
pev
 
Сообщения: 1248
Изображения: 8
Зарегистрирован: 26 июн 2008 11:32
Откуда: г. Рязань
Авто:: Chevrolet Lumina APV 3,8
Год выпуска:: 1995
Место жительства: Рязань

Re: ардуино мать её

Сообщение R_S_RUDENKO » 24 дек 2016 11:00

Электронную педаль газа?
Аватара пользователя
R_S_RUDENKO
 
Сообщения: 317
Зарегистрирован: 10 окт 2015 14:25
Авто:: Pontiac Trans Sport 3,1
Год выпуска:: 1991
Место жительства: Липецк

Re: ардуино мать её

Сообщение Vit » 24 дек 2016 17:08

накидали пока это. повторная проверка не с переменной а с пина.
я думаю что по другому ни как.

/*

номер пина -> A0 (joystick_pin)
*/

const int joystick_pin = A0;
int joystick, joystick_old; // новое и старое значение джойстика
int var = 0; // -1 замедление / 0 ничего не изменилось/ 1 ускорение
void setup() {
//#1
joystick = analogRead(joystick_pin);


}
void loop() {
//#1 5 миллисекунд вычислит. поток 1
static uint32_t past_1 = 0 ;
if (millis() - past_1 >= 5) { // если прошло 5 миллисек
past_1 = millis();
joystick_old = joystick;
joystick = analogRead(joystick_pin);
if (joystick == joystick_old) var = 0;
else if (joystick > joystick_old) var = 1;
else var = -1;
}
}
Что может пойти не так, пойдет не так и это обязательно будет так.
Аватара пользователя
Vit
Команда клуба
Команда клуба
 
Сообщения: 10403
Изображения: 461
Зарегистрирован: 29 май 2008 19:13
Авто:: Oldsmobile Silhouette 3,8
Год выпуска:: 1993
Место жительства: Королев

Re: ардуино мать её

Сообщение Vit » 24 дек 2016 17:10

pev писал(а):Нет не правильно, переменную х надо сохранять и потом только сравнивать... завтра подумаю.

я delay не использую, для меня это критично.
думаю проблема решена.
Что может пойти не так, пойдет не так и это обязательно будет так.
Аватара пользователя
Vit
Команда клуба
Команда клуба
 
Сообщения: 10403
Изображения: 461
Зарегистрирован: 29 май 2008 19:13
Авто:: Oldsmobile Silhouette 3,8
Год выпуска:: 1993
Место жительства: Королев


Вернуться в Беседы обо всём

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7