PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2011, 17:52   #1
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию HELP!! Arduino

Подскажите пожалуйста как зациклить программу, чтобы она читалась постоянно по кругу?
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 17:54   #2
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию

перерыл все...
void loop()
{
тело программы
}
вроде это, но программа доходит до конца и не стартует заново
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 17:57   #3
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию

Другой вопрос, когда на входе появляется HIGH, на выходе тоже HIGH и программа не идет дальше... как только вход переходит в LOW программа начинает выполнятся дальше... что не правильно делаю?


int Vhod=2; //вход
int Vihod=13 //выход

void setup()
{
pinMode(VhodPin, INPUT);
pinMode(VihodPin,OUTPUT);

}


if (digitalRead(VhodPin) == HIGH)
{
digitalWrite(VihodPin, HIGH);
delay(100);
digitalWrite(VihodPin, LOW);
delay(100);
digitalWrite(VihodPin, HIGH);
delay(100);
digitalWrite(VihodPin, LOW);
delay(100);
}
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 20:23   #4
Hamster
Больной. Диагноз "Car PC"
 
Аватар для Hamster
 
Регистрация: 01.09.2005
Возраст: 50
Город: Москва
Регион: 77, 97, 99, 177
Машина: 08\Acura\MDX •••• 07\Honda\Civic 4D
Сообщений: 4,379
Hamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to behold
По умолчанию

Цитата:
Сообщение от Dj Aleks Посмотреть сообщение
что не правильно делаю?
Добавил жирным косяки:

// Неудачное название переменных. Отличаются одной буквой, да она еще в середине и не особо видна.
// Код становится хреново читаемый, появляется большая вероятность ошибки
// Обычно вход именуют от слова input, выход от output. Типа inPin и outPin будет much better

int VhodPin=2; //вход
int VihodPin=13 //выход

void setup()
{
pinMode(VhodPin, INPUT);
pinMode(VihodPin,OUTPUT);

}

void loop() //эта функция нужна, она собственно и вызывается в цикле
{
up_dn();
}


// Этот код надо оформлять в функцию и вызывать из loop()
// правда я не уверен, что ее нужно вызывать в цикле
// к примеру:
void up_dn()
{

if (digitalRead(VhodPin) == HIGH) // насколько я понимаю интересует переход из LOW в HIGH, для этого есть функция PulseIn()
{
digitalWrite(VihodPin, HIGH);
delay(100);
digitalWrite(VihodPin, LOW);
delay(100);
digitalWrite(VihodPin, HIGH);
delay(100);
digitalWrite(VihodPin, LOW);
delay(100);
}
}

Вообщем для начала читать:
http://www.freeduino.ru/arduino/lang.html
и
http://arduino.cc/en/Reference/HomePage
__________________
Старый проект Honda Accord RHD
Теперь будет Acura MDX 2008 и Honda Civic 4D 2007 и Mitsubishi Outlander XL 2011
Hamster вне форума   Ответить с цитированием
Старый 28.10.2011, 20:47   #5
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию

это скинул пример... void loop() забыл поставить...
вот собственно программа сама... за ссылки спасибо, но уже все давно распечатано и по 1000000 раз штудировано
отладку веду в Proteus... когда нажимаю 2 кнопки StartPin и TormPin программа отрабатывает на ура весь цикл до (выделенного красным) потом если нажать кнопку StartPin, то программа все правильно тушит, если нажать сначала TormPin а потом StartPin, то ничего больше не происходит! если корректно все выполнить то она через раз возвращается в начало программы...

int StartPin=0; //вход для кнопки start stop engine
int TormPin=1; //вход для лягушки педали тормоза
int CamPin=2; //вход для камеры заднего вида
int ACCPin=8; //выход на реле зажигания АСС
int StPin=9; //выход на реле стартера
int MBPin=10; //выход на Блок питания ноутбука
int RemPin=11; //выход на включение усилителя (remote)
int CmPin=12; //выход кнопки переключения камеры заднего вида
int RSPin=13; //Выход кнопки для старта ноутбука

void setup()
{
/*Объявляем входы и выходы*/

pinMode(StartPin, INPUT);
pinMode(TormPin, INPUT);
pinMode(CamPin, INPUT);
pinMode(ACCPin, OUTPUT);
pinMode(StPin, OUTPUT);
pinMode(MBPin, OUTPUT);
pinMode(RemPin, OUTPUT);
pinMode(CmPin, OUTPUT);
pinMode(RSPin, OUTPUT);

}

void loop()
{
if (digitalRead(StartPin) == HIGH && digitalRead(TormPin) == HIGH) //сравнение 2 входов
{
digitalWrite(ACCPin, HIGH); //включаем зажигание
delay(150);
digitalWrite(StPin, HIGH); //включаем стартер
delay(200);
digitalWrite(StPin, LOW); //выключаем стартер через 10 сек
delay(50);
digitalWrite(MBPin, HIGH); //Подаем напряжение на блок питания ноутбука
delay(40);
digitalWrite(RSPin, HIGH); //нажатие кнопки ноутбука
delay(20);
digitalWrite(RSPin, LOW); //отпускаем кнопку
delay(1200);
digitalWrite(RemPin, HIGH); //remote усилителя

}

if (digitalRead(StartPin) == HIGH) //сравниваем значение кнопки
{
digitalWrite(ACCPin, LOW); //выключаем АСС
delay(100);
digitalWrite(RemPin, LOW); //Усилители
digitalWrite(RSPin, HIGH); //кнопка ноутбука
delay(100);
digitalWrite(RSPin, LOW); //отпускаем
delay(1200);
digitalWrite(MBPin, LOW); //глушим блок питания бука

}

}
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 20:48   #6
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию

if (digitalRead(VhodPin) == HIGH) // насколько я понимаю интересует переход из LOW в HIGH, для этого есть функция PulseIn()

если честно интересует немного другое... а именно авто переключение на камеру заднего вида... но как заставить выполняться программу когда она стопорится пока на входе HIGH, как писал выше...
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 21:36   #7
Hamster
Больной. Диагноз "Car PC"
 
Аватар для Hamster
 
Регистрация: 01.09.2005
Возраст: 50
Город: Москва
Регион: 77, 97, 99, 177
Машина: 08\Acura\MDX •••• 07\Honda\Civic 4D
Сообщений: 4,379
Hamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to behold
По умолчанию

Цитата:
Сообщение от Dj Aleks Посмотреть сообщение
если честно интересует немного другое... а именно авто переключение на камеру заднего вида... но как заставить выполняться программу когда она стопорится пока на входе HIGH, как писал выше...
можно использовать прерывание. т.е. можно указать, что при переходе из состояния X в состояние Y вызывается определенная процедура.
Пример можно посмотреть тут. И вообще, на компкаре по ардуино много интерестного, целый раздел с подразделами.
__________________
Старый проект Honda Accord RHD
Теперь будет Acura MDX 2008 и Honda Civic 4D 2007 и Mitsubishi Outlander XL 2011
Hamster вне форума   Ответить с цитированием
Старый 28.10.2011, 21:36   #8
BlkDem
Старший Пользователь
 
Аватар для BlkDem
 
Регистрация: 21.10.2009
Возраст: 46
Город: Киселевск
Регион: 42
Машина: Kia Sorento 2.5TD AT TOD LSD
Сообщений: 524
BlkDem is just really niceBlkDem is just really niceBlkDem is just really niceBlkDem is just really nice
По умолчанию

Попробуй вот так:

PHP код:
void loop()
{
if ((
digitalRead(StartPin) == HIGH) && (digitalRead(TormPin) == HIGH)) //сравнение 2 входов
{
digitalWrite(ACCPinHIGH); //включаем зажигание
delay(150);
digitalWrite(StPinHIGH); //включаем стартер
delay(200); 
digitalWrite(StPinLOW); //выключаем стартер через 10 сек
delay(50); 
digitalWrite(MBPinHIGH); //Подаем напряжение на блок питания ноутбука 
delay(40); 
digitalWrite(RSPinHIGH); //нажатие кнопки ноутбука
delay(20); 
digitalWrite(RSPinLOW); //отпускаем кнопку
delay(1200); 
digitalWrite(RemPinHIGH); //remote усилителя

}

if ((
digitalRead(StartPin) == HIGH) && (digitalRead(TormPin) == LOW)) //сравниваем значение кнопки
{
digitalWrite(ACCPinLOW); //выключаем АСС
delay(100);
digitalWrite(RemPinLOW); //Усилители 
digitalWrite(RSPinHIGH); //кнопка ноутбука
delay(100); 
digitalWrite(RSPinLOW); //отпускаем
delay(1200);
digitalWrite(MBPinLOW); //глушим блок питания бука

}


Код сознательно не оптимизирован
__________________
Планшет на Android -> USB-DAC (PCM2704 - SPDIF) -> Clarion HX-D2 -> Helix H500 Esprit -> Dynaudio MD100 + Миды из комплекта Pioneer TS-C131 PRS, доработанные Михаилом Nitro + Hertz F20 + Alpine PDX-1.600 + Auditor RIP 380.
BlkDem вне форума   Ответить с цитированием
Старый 28.10.2011, 21:37   #9
Dj Aleks
Старший Пользователь
 
Аватар для Dj Aleks
 
Регистрация: 13.05.2010
Возраст: 39
Город: Воронеж
Регион: 36
Машина: Jetta 6
Сообщений: 899
Dj Aleks is infamous around these parts
По умолчанию

Цитата:
Сообщение от Hamster Посмотреть сообщение
можно использовать прерывание. т.е. можно указать, что при переходе из состояния X в состояние Y вызывается определенная процедура.
Пример можно посмотреть тут. И вообще, на компкаре по ардуино много интерестного, целый раздел с подразделами.
спасибо громадное за наводку... а что с основной прогой?
__________________
Мой проект http://pccar.ru/showthread.php?t=18618

Поспешишь, AIRBAG распушишь...

Dj Aleks вне форума   Ответить с цитированием
Старый 28.10.2011, 21:38   #10
Hamster
Больной. Диагноз "Car PC"
 
Аватар для Hamster
 
Регистрация: 01.09.2005
Возраст: 50
Город: Москва
Регион: 77, 97, 99, 177
Машина: 08\Acura\MDX •••• 07\Honda\Civic 4D
Сообщений: 4,379
Hamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to beholdHamster is a splendid one to behold
По умолчанию

Цитата:
Сообщение от Dj Aleks Посмотреть сообщение
но как заставить выполняться программу когда она стопорится
Программа не может взять и остановиться
Она может зациклится или тупо стоять и ждать определенного события (считай тот же цикл).
__________________
Старый проект Honda Accord RHD
Теперь будет Acura MDX 2008 и Honda Civic 4D 2007 и Mitsubishi Outlander XL 2011
Hamster вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 09:25.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot