Подтягивающие резисторы (программирвемыые)
- Войдите на сайт для отправки комментариев
Я начинающий ардуинщик. Не судите строго =)
Железо - Ардуино Мега 2560. Питание от USB.
В общем для начала хотел немного осовиться с контроллером, чтобы 13 лампочка моргала как я ей скажу при помощи дискретных входов. Запилил прогу, грубо - если видишь 30 вход то лампочка вкл, если 31, то выкл.
30 и 31 входы настроил таким образом
pinMode(t1, INPUT); digitalWrite(t1, HIGH);
В результате на входы не откликается (замыкаю просто проводком с 5V на 30 вход, например).
Затем строку digitalWrite(t1, HIGH); заменил на digitalWrite(t1, LOW); - стала работать, но нельзя сказать что стабильно, т.е. не всегда при замыкании лампа гаснет, и не всегда загорается.
Вообще, ход мыслей был следующий:
1. читаю статью про дискретный вход http://arduino.ru/tutorials/button
2. делаю вывод, что нужен подтягивающий резитор (хотя честно говоря его смысла я не понимаю ибо не сильно шарю в электрике)
3. читаю статью http://arduino.ru/Tutorial/DigitalPins
4. делаю вывод, что подтягивающий резистор есть программный, и можно, включив его, замыкать просто проводком и все будет ОК
Внимание вопрос - что я сделал не так? =) и как заставить программу реагировать нормально на дискретный вход?
Подтяжка к питанию. Плюс Вы замыкаете пин на питание, вопрос на засыпку, а почему должно что то меняться?
Вот здесь еще интересно. Может картинки на размышления наведут.
Спасибо! но "подтяжка к питанию" мне ни о чем не говорит, я же сказал не понимаю электроники. Почему должно меняться - потому что я думал что внутри контроллера (в смысле процессора, короче атмела) GND замкнут (грубо), и при подаче питания на вход возникнец цепь и потечет ток.
Спасибо! Жаль, ведь брал ардуино чтобы не паять... А есть обьяснение почему не рекомендовано использовать программные "подтяжки" ?
Спасибо! Жаль, ведь брал ардуино чтобы не паять... А есть обьяснение почему не рекомендовано использовать программные "подтяжки" ?
"Будучи как автор" могу рекомендовать "Сагу о кнопках" собственного разлива... тьфу, т.е. производства. Там про различного рода подтяжки и оттяжки тоже есть.
Хочешь - используй. Не хочешь - не используй. Не хочешь паять - не паяй. Но так, чтобы вовсе об электронику не мораться... Не получится. :))
На, читай статью: http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html , там и про подтягивающие резисторы есть (в картинках в конце статьи). Чтобы заниматься ардуиной нужно владеть хотя бы базовыми навыками электроники, даже если ничего не паять. Без этого никак.
Всем спасибо, особенно за статьи! Я не планирую не мокаться, даже по пояс бы зашел, но не планирую ходить в дальние плавания =) Паяльником владею. Просто я хотел собрать красиво - проводки и все, а теперь придется еще думать че как запилить эти сопротивления, чтобы выглядело не колхозом.
Просто я хотел собрать красиво - проводки и все, а теперь придется еще думать
тебе же объясняют, что для того, что бы ничего не паять - нужно изучить электротехнику курса средней школы.
тебе же объясняют, что для того, что бы ничего не паять - нужно изучить электротехнику курса средней школы.
Откуда столько злости? Лучше расскажи, если есть решение подключения кнопки без подтяжки.
а теперь придется еще думать
Ага, это ключевая фраза. Читать и думать придется, много.
Есть два вида подтягивающих резисторов: Pull-Up (подтягивает к питанию, VCC) и Pull-Down (подтягивает к земле, GND). Программная подтяжка в ардуине - это тот же подтягивающий резистор, только он внутри микросхемы находится. Но в ардуине есть только подтяжка к питанию VCC (Pull-Up). Поэтому, чтобы на входе ардуино с программной подтяжкой (к питанию VCC) что-то изменилось, нужно подавать на вход землю (GND).
тебе же объясняют, что для того, что бы ничего не паять - нужно изучить электротехнику курса средней школы.
Откуда столько злости? Лучше расскажи, если есть решение подключения кнопки без подтяжки.
Да почитай, ссылку что я дал, и "Сагу .....". И все поймешь. Почти верно сделал, но есть нюанс.
Единственное, это хорошо на очень коротких проводах, а дальше полезут проблемы.
Откуда столько злости?
Нет никакой злости, Клапауций 911 абсолютно правильно говорит. Без элементарных знаний электроники тут делать нечего.
Лучше расскажи, если есть решение подключения кнопки без подтяжки.
Да подключай без подтяжки, кто ж тебе запрещает. Вот только работать будет хреново, т.к. помехи и наводки.
Откуда столько злости? Лучше расскажи, если есть решение подключения кнопки без подтяжки.
есть решение... но, ты же схемы электрические читать не желаешь учиться.
сходи к учителю музыки и заяви, что ты желаешь учиться, но ноты учить не собираешься - пусть он тебе балалайку о твою голову разломает.
Нет никакой злости, Клапауций 911 абсолютно правильно говорит.
не ломай мой имидж злого демона, угнетающего кретинов.
Я все статьи прочел, про встроенную подтяжку понял. Сейчас попробую, думаю сработет.
Jeka_M Отдельное спасибо за терпение!
Осталься один вопрос - почему не рекомедовано использовать встроенную подтяжку? потому что появится наводка посильней, то сгорит процессор, а так бы сгорело внешнее сопротивление?
Вы такие все хитрые, я написал - "думать, чтобы выглядело не колхозом" имея ввиду, чтобы не висели сопротивления на проводах замотаные изолетной, а вы услышали только "придется думать"
сходи к учителю музыки и заяви, что ты желаешь учиться, но ноты учить не собираешься - пусть он тебе балалайку о твою голову разломает.
Хендрикс нот не знал.... Но этого и ты мог не знать, но про Моцарта то слыхал?
Хендрикс нот не знал....
ну, что можно возразить кретину?
разбить о твою дурную голову балалайку?
Хендрикс не задавал на форумах вопросов, как играть на гитаре.
ну, что можно возразить кретину?
разбить о твою дурную голову балалайку?
Тревиально мыслишь! Не должны все учиться так, как учился ты. Я играю на гитаре (музыкалка ноты вся фигня), и Я смогу научить за пару дней сыграть че-нить несложное и красивое, шоб 1 раз выпендриться где-нить перед девушкой, например. И !!!ВНИАНИЕ!!! человек не будет знать даже что дакое скрипичный ключ!
Осталься один вопрос - почему не рекомедовано использовать встроенную подтяжку?
Тьфу ты, триста христа поперек... Чтоб у твоей диагональной матрицы детерминант не сходился! МОИ резоны в применении "подтягивающих", "стягивающих" и встроенных подтягивающих приведены в "Саге о кнопках". Хотите овладеть - придется читать. Как у других - тоже придется читать. Возможно, меньше, но все одно - придется. :))
P.S.
- У Вас оригинальный аттракцион есть?
- Да. Муха, делающая пертвую петлю. Я эту муху пять лет дрессировал.
- (Давя пальцем насекомое) И что?
Хендрикс не задавал на форумах вопросов, как играть на гитаре.
Думаю, в свое время настроить гитару его все же научили....
приведены в "Саге о кнопках". Хотите овладеть - придется читать. Как у других - тоже придется читать.
Про сагу не понял, что это буквально. Теперь понял и нашел, прочту, спасибо!
Анекдота не понял, да и пофиг.
зы. АХАХАХАХ начал читать - поржал с первых строк =))))) Круто!
Тревиально мыслишь! Не должны все учиться так, как учился ты.
верно - тебя будут учить на этом форуме, разбивая балалайки о твою голову.
результатом обучения будет твоё умение читать электрические схемы и понимание основ электротехники.
результатом обучения будет твоё умение читать электрические схемы и понимание основ электротехники.
Входы уже работают, кстати. правда чета лапочка PWR тухнет когда я небрежно проводком ковыраю =)))))
Входы уже работают, кстати.
ок. у меня балалаек хватит на всех.
правда чета лапочка PWR тухнет когда я небрежно проводком ковыраю =)))))
Дык того.... этого... надо смелей и уверенней ковырать. Чтоб если лапочка PWR потухла, то уже чтоб не повадно ей было обратно зажигаться. Покажи мастер-класс и кто тут главный! Лапочка PWR должна тебя слушаться.
Мдя, похоже я неправильные ссылки давал, попробуйте лучше эту и эту.
=))))) больше всего понравилась фотка с шурупом. Нам как раз скоро на даче электричесво подключать, шурупы есть, а орехов нет, так зачем усложнять =))))
Я через все это прошел. Большинство на авто - отвертки друг с другом спаял однажды, потом еще ток на АКБ замерял =))))))))))))
Мдя, похоже я неправильные ссылки давал, попробуйте лучше эту и эту.
вот правильная ссылка для ТС https://www.google.com/search?q=бугага
Хендрикс не задавал на форумах вопросов, как играть на гитаре.
Думаю, в свое время настроить гитару его все же научили....
Пианистоам проще - они сами свой инструмент не настраивают.
И вообще, не факт, что его целенаправленно учили настраивать гитару, а не он научился сам, наблюдая, как это делают другие.
А можно ли использовать встроенные подтягивающие резисторы если ввод настрен на прерывание? Например для считывания оборот двигателя на пине D2, прерывание вызывается только при смене значения на порту с HIGH на LOW:
Можно, пока Клапауций не запретил.
На цифровом входе был программно включен подтягивающий резистор. При подключении питания этот цифровой вход сразу же был подключен к массе (все пока на столе и скручены провода в один пучек), т.е. дуина еще не загрузилась а пин уже висел на массе. После нескольких десятков включений выключений питания этот вход все время теперь считывает LOW назвисимо от того висит ли он на массе. Получется я спалил вход дуины, потому что он был подключен а дуина еще не загрузилась? И если я все же его спалил, сгорел бы он если ипользовался внешний подтягивающий резистор?
На цифровом входе был программно включен подтягивающий резистор. При подключении питания этот цифровой вход сразу же был подключен к массе (все пока на столе и скручены провода в один пучек), т.е. дуина еще не загрузилась а пин уже висел на массе. После нескольких десятков включений выключений питания этот вход все время теперь считывает LOW назвисимо от того висит ли он на массе. Получется я спалил вход дуины, потому что он был подключен а дуина еще не загрузилась? И если я все же его спалил, сгорел бы он если ипользовался внешний подтягивающий резистор?
бред.
Почему он тогда постоянно считывет LOW? Хотя до этого полчаса исправно все работало
Почему он тогда постоянно считывет LOW? Хотя до этого полчаса исправно все работало
если ты опубликуешь схему подключения и код скетча, то я, возможно, смогу ответить, а пока иди в пень.
/sites/default/files/u24220/01.jpg
/sites/default/files/u24220/buttonaccent.ino_.png
пин D8
/sites/default/files/u24220/01.jpg
/sites/default/files/u24220/buttonaccent.ino_.png
пин D8
публикуешь электрическую схему и код скетча, или идёшь нахуй. 2.0
ладно, дерзкий ты хрен, "спасибо" за помощь
ладно, дерзкий ты хрен, "спасибо" за помощь
ссылки свои открой, убийца разума.
изображение платы, схемы нет, удалил уже, и скетч переименованный в png, потому что здесь прикрепляются только изображения
и скетч переименованный в png, потому что здесь прикрепляются только изображения
Не надо выкладывать скетч файлом, выкладывай кодом через кнопку "code" на панели инструментов.
И да, схема электрическая принципиальная нужна.
#include <Bounce2.h> // подключаем библиотеку подавления дребезга Bounce 2 #define pressed_long 2000 // длительность долговременное нажатия #define max_mode 3 // количество режимов #define Button 7 // пин кнопки #define Clutch 8 // пин входа сцепления #define Buzzer 3 // пин зуммера #define ACC 4 // пин аксессуаров #define Ign1 5 // пин зажигания 1 #define Ign2 12 // пин зажигания 2 #define Starter 11 // пин стартера #define Rled 6 // пин красного сид #define Gled 9 // пин зеленого сид #define Bled 10 // пин синего сид #define Dimmer A4 // пин входа габаритов #define ob_start 100 // обороты запуска двигателя #define delay_ign 1800 // задержка перед включением стартера unsigned long astop_Starter = 3000; // ограничение автоматической работы стартера unsigned long mstop_Starter = 10000; // ограничение ручной работы стартера unsigned long previousMillis = 0; // счетчик времени // Тахометр для ускорения и точности переменные помещаются в ОЗУ командой volatile: volatile unsigned long micros_th = 0; // переменная времени импульса volatile byte tz = 0; // счетчик обнуления volatile unsigned int tp = 0; // обороты volatile boolean tt = false; // триггер тахометра // Установки кнопки: int regim = 1; // начальный режим Bounce bouncer = Bounce(); // создаем экземпляр класса Bounce unsigned long pressed_moment; // счетчик времени нажатия // Установки светодиодов: int brightness = 0; // начальная яркость int fadeAmount = 7; // шаг изменеия яркости unsigned long inter = 100; // частота мигания unsigned long currentTime; // счетчик времени unsigned long loopTime; // период сид unsigned long RpreviousMillis; // период сид void setup() { attachInterrupt(0, tahometr, FALLING); // активация прерывания для тахотера pinMode(Button, INPUT); // объявляем режим работы пина pinMode(Clutch, INPUT); // объявляем режим работы пина pinMode(Buzzer, OUTPUT); // объявляем режим работы пина pinMode(ACC, OUTPUT); // объявляем режим работы пина pinMode(Ign1, OUTPUT); // объявляем режим работы пина pinMode(Ign2, OUTPUT); // объявляем режим работы пина pinMode(Starter, OUTPUT); // объявляем режим работы пина pinMode(Rled, OUTPUT); // объявляем режим работы пина pinMode(Gled, OUTPUT); // объявляем режим работы пина pinMode(Bled, OUTPUT); // объявляем режим работы пина pinMode(Dimmer, INPUT); // объявляем режим работы пина digitalWrite(2, HIGH); // включаем вход digitalWrite(Clutch, HIGH); // включаем выход digitalWrite(ACC, LOW); // выключаем выход digitalWrite(Ign1, LOW); // выключаем выход digitalWrite(Ign2, LOW); // выключаем выход digitalWrite(Starter, LOW); // выключаем выход digitalWrite(Rled, LOW); // выключаем сид digitalWrite(Gled, LOW); // выключаем сид digitalWrite(Bled, LOW); // выключаем сид bouncer .attach(Button); // привязываем библиотеку кнопки к выводу Button bouncer .interval(20); // устанавливаем период дребезга = 20 мс Serial.begin(9600); // установка Serial-порта на скорость 9600 бит/сек currentTime = millis(); // устанавливаем время loopTime = currentTime; // синхронизируем время } void loop() { currentTime = millis(); // счетчик привязываем ко времени if (tz != 0) { tz--; } else { tp = 0; }; // обработка тахометра Serial.print("Tacho: "); Serial.println (tp); //delay (500); if (bouncer.update()) // если произошло событие { if (bouncer.read() == 1) // если кнопка нажата { pressed_moment = millis(); // запоминаем время нажатия tone(Buzzer, 3500, 60); // подаем сигнал что нажата кнопка } else // кнопка отпущена { if ((millis() - pressed_moment) < pressed_long) // если кнопка была нажата кратковременно { if (regim == 4 && digitalRead(Clutch) == LOW) { regim = 2; // если был включен 4 режим и нажато сцепление устанавливаем 2, обнуляем момент нажатия pressed_moment = 0; goto rej2; } if (digitalRead (Clutch) == HIGH) // сцепление при этом не нажато { regim++; // увеличиваем счетчик текушего режима if (regim > max_mode) { regim = 1; // при достижении максимального режима возвращаемся в режим1 } pressed_moment = 0; // обнуляем момент нажатия } else { if (regim == 4) { regim = 1; // если был включен 4 режим устанавливаем 1, обнуляем момент нажатия pressed_moment = 0; goto rej1; } else // иначе, если нажато сцепление: { regim = 5; // устанавливаем 5 режим pressed_moment = 0; // обнуляем момент нажатия tone(Buzzer, 3500, 100); // звуковой сигнал delay(200); tone(Buzzer, 3500, 100); // звуковой сигнал goto rej5; } } } } } if ((pressed_moment > 0) && ((millis() - pressed_moment) > pressed_long)) // кнопка удерживалась долго { if (regim == 4) // если режим 4 { regim = 1; // то устанавливаем режим 1 pressed_moment = 0; // обнуляем момент нажатия goto rej1; // переход на 1 режим } if (regim == 1 || regim == 2 || regim == 3) // если режим 1, 2 или 3 { regim = 5; // то переходим к 5 pressed_moment = 0; // обнуляем момент нажатия tone(Buzzer, 3500, 100); // подаем много звуковых сигналов delay(200); // потому как начинается запуск без защиты тормозом tone(Buzzer, 3500, 100); // для не стандартных ситуаций delay(200); tone(Buzzer, 3500, 100); // звуковой сигнал delay(200); tone(Buzzer, 3500, 100); // звуковой сигнал goto rej5; // переход на 5 режим } } if (regim == 1) // первый режим - все выключено { rej1: // ссылка на 1 режим digitalWrite(ACC, LOW); // Аксессуары отключены digitalWrite(Ign1, LOW); // Зажигание отключено digitalWrite(Ign2, LOW); // Зажигание отключено digitalWrite(Starter, LOW); // Стартер отключен digitalWrite(Rled, LOW); // Красный сид выключен digitalWrite(Gled, LOW); // Зеленый сид выключен digitalWrite(Bled, LOW); // Синий сид выключен if (digitalRead(Clutch) == LOW) // если нажато сцепление { if (currentTime >= (loopTime + 1)) // проверяем время { analogWrite(Rled, brightness); // Передаём яркость сид brightness = brightness + fadeAmount; // Прибавляем шаг изменения яркости if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; // если достигли мин. или макс. значения, то идем в обратную сторону (реверс) } if (brightness >= 255) { brightness = 255; // устанавливаем предел чтобы не мигал } if (brightness <= 0) { brightness = 0; // устанавливаем предел чтобы не мигал } loopTime = currentTime; // синхронизируем время } } else { digitalWrite(Rled, LOW); // Гасим сид } Serial.println("ALL OFF:"); // Передаем режим рабоы } if (regim == 2) // второй режим - включены аксессуары { rej2: // ссылка на 2 режим digitalWrite(ACC, HIGH); // Аксессуары включены digitalWrite(Ign1, LOW); // Зажигание отключено digitalWrite(Ign2, LOW); // Зажигание отключено digitalWrite(Starter, LOW); // Стартер отключен digitalWrite(Rled, LOW); // Красный сид выключен digitalWrite(Gled, HIGH); // Зеленый сид включен digitalWrite(Bled, LOW); // Синий сид выключен if (digitalRead(Clutch) == LOW) // если нажато сцепление { if (currentTime >= (loopTime + 1)) // проверяем время { digitalWrite(Gled, LOW); // Выключаем зеленый сид analogWrite(Rled, brightness); // Передаём яркость сид brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; // если достигли мин. или макс. значения, то идем в обратную сторону (реверс) } if (brightness >= 255) { brightness = 255; // устанавливаем предел чтобы не мигал } if (brightness <= 0) { brightness = 0; // устанавливаем предел чтобы не мигал } loopTime = currentTime; // синхронизируем время } } else { digitalWrite(Rled, LOW); //Гасим сид digitalWrite(Gled, HIGH); // Восстанавливаем сид } Serial.println("ACC ONLY"); // Передаем режим работы } if (regim == 3) // третий режим - ручное включение зажигания { rej3: // ссылка на 3 режим if (tp >= ob_start) { digitalWrite(Starter, LOW); // защита автозапуска regim = 4; goto rej4; } digitalWrite(ACC, HIGH); // Аксессуары включены digitalWrite(Ign1, HIGH); // Зажигание включено digitalWrite(Ign2, HIGH); // Зажигание включено digitalWrite(Starter, LOW); // Стартер отключен digitalWrite(Rled, LOW); // Красный сид выключен digitalWrite(Gled, LOW); // Зеленый сид выключен digitalWrite(Bled, HIGH); // Синий сид включен if (digitalRead(Clutch) == LOW) // если нажато сцепление { if (currentTime >= (loopTime + 1)) // проверяем время { digitalWrite(Bled, LOW); // Синий сид выключен analogWrite(Rled, brightness); // Передаём яркость сид brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; // если достигли мин. или макс. значения, то идем в обратную сторону (реверс) } if (brightness >= 255) { brightness = 255; // устанавливаем предел чтобы не мигал } if (brightness <= 0) { brightness = 0; // устанавливаем предел чтобы не мигал } loopTime = currentTime; // синхронизируем время } } else { digitalWrite(Rled, LOW); // Гасим сид digitalWrite(Bled, HIGH); // Восстанавливаем сид } Serial.println("IGN ON ENGIN OFF"); // Передаем режим работы } if (regim == 4) // четвертый режим - основной рабочий { rej4: // ссылка на 4 режим digitalWrite(ACC, HIGH); // Аксессуары включены digitalWrite(Ign1, HIGH); // Зажигание включено digitalWrite(Ign2, HIGH); // Зажигание включено digitalWrite(Starter, LOW); // Стартер отключен if (analogRead(Dimmer) >= 200) { analogWrite(Rled, 50); // Если включены габариты красный снижает яркость чтобы не слепить } else { digitalWrite(Rled, HIGH); } digitalWrite(Gled, LOW); // Зеленый сид выключен digitalWrite(Bled, LOW); // Синий сид выключен Serial.println("ENGIN ON"); // Передаем режим работы if (tp < 50) { regim = 3; // если заглох переходим в режм 3 goto rej3; } } if (regim == 5) // пятый режим - пуск двигателя { rej5: // ссылка на 5 режим if (tp >= ob_start) { digitalWrite(Starter, LOW); // Защита автозапуска regim = 4; goto rej4; } digitalWrite(ACC, LOW); // Аксессуары выключены digitalWrite(Ign1, HIGH); // Включить зажигание digitalWrite(Ign2, LOW); // Зажигание отключено digitalWrite(Gled, LOW); // Зеленый сид выключен digitalWrite(Bled, LOW); // Синий сид выключен delay (delay_ign); // Задержка на бензонасос и датчики previousMillis = millis(); // время для ограничения стартера RpreviousMillis = millis(); // время для мигания красного сид if (bouncer.read() == 0 && digitalRead(Clutch) == 0) // если кнопка отпущена и нажато сцепление { auto_start: // подпрограмма автозапуска currentTime = millis(); // текущее время if (currentTime - RpreviousMillis > inter) { RpreviousMillis = currentTime; // мигание сид digitalWrite(Rled, !digitalRead(Rled)); } if (tp <= ob_start && digitalRead(Clutch) == 0) // если не заведена, но сцепление нажато { digitalWrite(Starter, HIGH); // включаем стартер Serial.print("Starter ON AUTO :"); Serial.println (tp); // информация в порт } if (tp >= ob_start) { digitalWrite(Starter, LOW); // если завелась, отключаем стартер, сообщаем, переходим в режим 4 regim = 4; Serial.println("START Ok!!!"); goto rej4; } if (currentTime - previousMillis > astop_Starter) { digitalWrite(Starter, LOW); // если сработал таймаут, отключаем стартер, сообщаем об ошибке, переходим в режим 3 tone (Buzzer, 3500, 1000); regim = 3; Serial.println("Error: TimeOut"); goto rej3; } if (digitalRead(Button) == 1) { digitalWrite(Starter, LOW); // если еще раз нажали кнопку, отключаем стартер, сообщаем об ошибке, переходим в режим 3 regim = 3; Serial.println("Error: Press Button"); delay (1000); goto rej3; } goto auto_start; // возврат в начало подпрограммы автозапуска. } else // если не сработало первое правило (кнопка отпущена нажато сцепление) { manual_start: // подпрограмма ручного запуска if (digitalRead(Button) == 1) // кнопка нажата, начинается ручной запуск { currentTime = millis(); // текущее время if (currentTime - RpreviousMillis > inter) { RpreviousMillis = currentTime; // мигаем сид digitalWrite(Rled, !digitalRead(Rled)); } digitalWrite(Starter, HIGH); // включаем стартер Serial.print("Starter ON MANUAL :"); Serial.println (tp); // передаем информацию } else { digitalWrite(Starter, LOW); // если отпустили кнопку отключаем стартер, сообщаем об ошибке, переходим в режим 3 regim = 3; Serial.println("Start OFF"); goto rej3; } if (currentTime - previousMillis > mstop_Starter) { digitalWrite(Starter, LOW); // если сработал таймаут, отключаем стартер, сообщаем об ошибке, переходим в режим 3 tone (Buzzer, 3500, 1000); regim = 3; Serial.println("Error: TimeOut"); goto rej3; } goto manual_start; // возврат в начало подпрограммы ручного запуска } } } void tahometr() // подпрограмма измерения оборотов { if (!tt) { micros_th = micros(); } else { tp = (60000000 / (micros() - micros_th)); } tt = !tt; tz = 10; }Блин схему никак, я их обычно удаляю после того как нарисовал печатку.
Блин схему никак, я их обычно удаляю после того как нарисовал печатку.
молодец.
это просто вторая плата, первая уже месяц стоит в авто и без нареканий. и сэтой то проблем нет, просто перекинуть на другой пин вход педали сцепления и припоять перемычку, уже проверил работает. интересно что стало с 8 пином и почему. и вообще все же лучше использовать внутренние резисторы или внешние?
Лучше ставь внешние.
Вывести скетч "блинк" на этот больной пин. Оно и видно станет.
Лично я предпочитаю для подтяжки внешние резисторы. Для длинных сигнальных линий - номинал поменьше.