Ребята подскажите новичку
- Войдите на сайт для отправки комментариев
Добрый день всем гуру программирования! Я совсем новичек в Ардуино, и программировании, прошу сильно не пинать, мне для авто нужд необходимо сделать устройство которое управляется одним проводом, например 0 на все время работы устройства, 0 сменился на еденицу и цикл завершился и устройство в режиме ожидания. так вот при наличии 0 на упр пине, необходимо получить с устройства 4 импульса в разной последовательности, и при пропадании 0 на упр пине еще нужно пару импульсов на нескольких выходных пинах из этих четырех.
Вот что удалось накидать, один выход работает при подаче 0 на управляющий, добавил в код второй пин, он через раз отрабатывает, что то я делаю не так, нет опыта у меня еще.... подскажите пожалуйста
unsigned long time; int IMMOpin = 5; // IMMO пин на выходе 5 включает обход иммо int KEYpin = 7; // KEY пин на выходе 6 включает датчик наличия ключа int switchPin = 13; // выключатель на порту 13, замыкает на землю void setup() { pinMode(IMMOpin, OUTPUT); pinMode(KEYpin, OUTPUT); pinMode(switchPin, INPUT); digitalWrite(switchPin, HIGH); // включаем подтягивающий резистор } void loop() { static unsigned long IMMOpin_time = 0; static unsigned long KEYpin_time = 0; time = millis(); if (digitalRead(switchPin) == LOW) { delay(200); // время перед задержкой включением IMMOpin digitalWrite(IMMOpin, HIGH); // включаем канал IMMOpin IMMOpin_time = time + 500; // счетчик до момента выкл канала после статуса LOW на 13 пине }else if( IMMOpin_time && (IMMOpin_time <= time) ) //опрос времени IMMOpin { digitalWrite(IMMOpin, LOW); // выключение канала IMMOpin time = millis(); if (digitalRead(switchPin) == LOW) { digitalWrite(KEYpin, HIGH); // включаем канал IMMOpin KEYpin_time = time + 1000; // счетчик до момента выкл канала после статуса LOW на 13 пине }else if( KEYpin_time && (KEYpin_time <= time) ) {digitalWrite(KEYpin, LOW); } } }
Уберите перезапись time из голого цикла, это должно быть исключительно внутри условия. Условие выглядит
Не поможите и мне ? только-только начал осваивать ,поэтому много непонятного ((
допустим у нас есть 2 светодиода. как сделать так,чтобы 1 светодиод мигал 2 раза,затем мигал 2 светодиод 3 раза,затем 1 светодиод начинал моргать без перерыва ?
если покажете на простом примере - буду примного Благодарен .
Не поможите и мне ? только-только начал осваивать ,поэтому много непонятного ((
допустим у нас есть 2 светодиода. как сделать так,чтобы 1 светодиод мигал 2 раза,затем мигал 2 светодиод 3 раза,затем 1 светодиод начинал моргать без перерыва ?
в Сетапе 2 раза мигаем первым светиком и три раза - вторым. Потом переходим в ЛУП и мигаем первым. Луп исполняется бесконечно....
Большое Спасибо !!
Приветствую.
Встретил тут в книжке что-то типа такого
Вопрос в чём, в указанной функции же не всегда выполняется return. Оно по идее даже компилиться не должно. Если функция не встретила return, она что возвращает?
Компилироваться такое будет, просто будет warning. Насчёт того, что возвращает, когда не втретила return - емнип, будет неопределённое значение.
Ну так там дальше currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH)
И всё работает. Если currentButton void, то как оно его сравнивает?
Ну так там дальше currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH)
И всё работает. Если currentButton void, то как оно его сравнивает?
currentButton не void - а имеет неопределённое значение. И компилятор скастит его к bool, каким будет значение currentButton, если из функции не вернулось значение - зависит от компилятора, но по стандарту - там неопределённое значение.
Смотрите, на абстрактном примере: перед вызовом функции, которая возвращает 1 байт (bool) указатель вершины стека увеличивается на 1 (чтобы после выхода из функции было место, куда записать возвращаемое значение). Байт с каким значением лежал на стеке до инкрементирования указателя - неизвестно, поэтому и говорят про неопределённое значение. В случае с bool любое такое значение можно привести к типу bool, ибо всё, что не 0 - true, остальное - false.