Точку с запятой поставь
PHP код:
if (digitalRead(back_on)==LOW & int tmp==LOW );
Вид для печати
Точку с запятой поставь
PHP код:
if (digitalRead(back_on)==LOW & int tmp==LOW );
ставил ошибка не ушла.
sketch_apr12a.cpp: In function 'void loop()':
sketch_apr12a:16: error: expected primary-expression before 'int'
sketch_apr12a:16: error: expected `)' before 'int'
Проверь правильность расстановки скобок, вот этих {}.
Ты бы хоть для приличия учебник почитал
Компилятор тебе написал в какой строке и какая ошибка.
PHP код:
int av_mode = 12; //Выход для нажатии кнопки
int back_on = 13; //вход сигнал включения задней скорости
void setup()
{
pinMode(av_mode, OUTPUT);
pinMode(back_on, INPUT);
digitalWrite(back_on, HIGH); //Подключить внутренний подтягивающий резистор
digitalWrite(av_mode, LOW);
Serial.begin(115200);
}
//-----------------------------------------------
void loop()
{
int tmp=digitalRead(back_on);
delay(5000);
if (digitalRead(back_on)==LOW & tmp==LOW ); //включен ли задний ход
{
digitalWrite(av_mode, HIGH);
while(digitalRead(back_on) == LOW)
{
}
delay(500); //ЗДЕСЬ МОЖНО СДЕЛАТЬ ЗАДЕРЖКУ ВЫКЛЮЧНИЯ КАМЕРЫ ЗХ
digitalWrite(av_mode, LOW);
}
}
ох чувствую скоро полетят в меня табуретки ...
такая картина на 12 выходе постоянно с delay(5000) появляется HIGH (4.6вольта)
на время delay(500) не зависимо что на входе 13("-" или его отсутствие).
для камеры заднего хода можно и убрать delay(500)(и тогда все работает как надо) но вот для обгонной нужна задержка минимум 10 сек пока не вернулся в свой ряд совершив обгон и так же задержка на включение.:(
нашел как выставить задержки немного по другому. при много благодарен за помощь и терпение:)
Мой вариант без программной задержки (ну очень уж она мешала в моем проекте):
Задержку на выключение не делал.PHP код:
iint back_on = 12; //номер порта для сигнала заднего хода
boolean time_flag=false; // статус счетчика
boolean cam_on=false; // статус работы камеры
unsigned long time_cam;
void setup()
{
pinMode(av_mode, OUTPUT);
pinMode(back_on, INPUT);
digitalWrite(back_on, HIGH); //Подключить внутренний подтягивающий резистор
digitalWrite(av_mode, LOW);
Serial.begin(115200);
}
//-----------------------------------------------
void loop()
{
camBack;
}
void camBack()
{
if (digitalRead(back_on) == LOW) // обрабатываем "ноль"
{
if (cam_on == false) // если камера не включена
{
if (time_flag == false) // если таймер не включен
{
time_cam = millis(); // засекаем время в "нуле"
time_flag = true; // уставливаем флаг счетчика
}
else // таймер включен
{
if ((millis()-time_cam) > 1000) // если прошло > 1 сек
{
time_flag = false; // сбрасываем флаг счетчика
cam_on = true; // камера включена
Serial.println("CamBack_on"); // в этоЙ строке д.б. команда на включение камеры
}
}
}
}
else // обрабатываем "единицу"
{
if (cam_on == true) // только когда камера включена
{
cam_on = false; // камера выключена
Serial.println("CamBack_off"); // в этоЙ строке д.б. команда на выключение камеры
}
}
}
http://www.compcar.ru/forum/attachme...4&d=1298362791
Будьте внимательны, на самом деле ноги 1 и 2 на РС817 расположены по-другому )
Долго не мог понять почему не работает схема, пока не полез в даташит )
Так на корпусе микросхемы есть точка напротив 1 вывода
Подскажите подойдет ли мне такая простая схема?
На разъеме магнитолы есть провод, при включении задней передачи появляется +12В.
Не надо ли повесить резистор на вход D12?
Кнопка на мониторе всего одна - переключает режимы VGA и AV, ее просто соединить с выходом D13 напрямую без резисторов?
http://www.compcar.ru/forum/attachme...3&d=1257321371
Резистор не нужен, главное анод с катодом не перепутай, а то умрет твой контроллер
Кнопку подключай как на схеме или можно оптопару использовать
Скажи пожалуйста, по какому принципу работает эта схема?
Будет ли она работать с моим автомобилем?
Что в левой части схемы мне объяснили, главное 12 вольт не должно попасть на контролер.
А что у нас справа?
У меня есть одна кнопка, нужен какой-то транзистор, резистор на 100 ом и все это дело подключается к 2 ногам кнопки, правильно?
Есть KT815, подойдет?
Диод КД226.
Схема работает так:
При появлении на входе +12в нажимает кнопку заданное количество раз для перехода в режим AV, после пропадания +12в опять нажимает для возврата в предыдущий режим
подскажите в мониторе резистивные кнопки, как управлять ими с arduino? Сопротивление нужной кнопки 100 Ом
Можно поставить оптрон без резистора
Полярность подключения транзистора проверял?
Нужно на кнопке вызвонить землю и к ней подключить эмитер
В твоем случаи лучше полевик с низким внутренним сопротивлением
Ищи N-канальный транзистор
На затвор резистор 180ом и к контроллеру , из этого же вывода контроллера резистор 10ком на землю, исток к контакту кнопки на котором GND
Еще резистор от контроллера к базе транзистора поставь от 180-470 ом
У тебя как я понимаю кнопки нажимаются относительно земли?
тогда еще как вариант попробуй подключи на прямую к контроллеру , ногу контроллера нужно переводить на вход, а при эмуляции нажатия переназначить эту ногу на выход и выдать на нее сигнал LOW, после этого перевести эту ногу обратно на вход
Это не константа , а функция. В цикле LOOP тоже можно перекофигурировать порты
А как организовать влючение монитора не зависимо от компа – подало питание при вкл з.х и отключении питания при откл з.х
Почему так никто не ответил? Решения нет?
у меня вопрос. подключаю не камеру, но смысл тот же. проверяем наличие высокого уровня на ноге(+5v), если он есть, дергаем другой ногой и выполняем некую функцию(someFunc). при пропадании уровня, опять дергаем ногой. так вот, у меня проблема-некая вункция(someFunc) выполняется в лупе, хотя мне надо чтоб она выполнилась 1раз только при высоком уровне на первой ноге - типа триггера, при изменении состояния дергаем ножкой, но в определенном состоянии выполняем некую функцию один раз
Код:int trig; //power trigger current state
int prev_trig = 0; //power trigger previous state
#define accPin 14
void setup() {
Serial.begin(38400);
pinMode(accPin, INPUT); //acc +5v input
void loop() {
checkACC();
}
void checkACC()
{
trig = digitalRead(accPin);
if (prev_trig != trig )
{
some code
prev_trig = trig;
}
if (trig !=0) {
digitalWrite(sboardPin, HIGH);
someFunction
}
else {
digitalWrite(sboardPin, LOW);
}
}
и еще, я не очень понимаю зачем вам диод и подтягивающий резистор к +12
macau, так запомни состояние выхода и жди когда изменница состояние входа, если изменилось то выполняй изменение выхода
На схеме ниже в правой части приведен пример получения сигнала о статусе заднего хода.
Выход естественно "программно" подтянут к +5В.
Только не понятно будет ли схема работать если со стороны диода будет +12В(как на картинке)? или земля? или в обоих случаях корректно работать будет?
По умолчанию на пине 1 - подтянут к +5В.
Если с другой стороны диода земля, то на пине 0.
Если с другой стороны диода +12В, то 1 останется или все же 0 будет???
http://compcar.ru/forum/attachment.p...3&d=1257321371
Пин подтянут к +5в и если подать 12в то на пине будет +5вЦитата:
Если с другой стороны диода +12В, то 1 останется или все же 0 будет???
Тогда как определить, что +12В сидит?
Через делитель? или как-то притянуть выход к земле?
И второй вопрос как тогда схема приведенная на картинке работает?
Там же как раз со стороны диода +12В сидит.
Все время же 1 будет.
Задняя скорость выключена-GND через спираль лампочки попадает на вход диода и на пин контроллера
Задняя скорость включена - +12в на катоде диода, диод закрыт и на входе пина +5в от подтягивающего резистора
Требуемый Диод Шоттке, так как на нем минимальное падение напряжения
Можно вместо диода оптрон PC817 прикрутить