Подтягивающие резисторы (программирвемыые)
- Войдите на сайт для отправки комментариев
Я начинающий ардуинщик. Не судите строго =)
Железо - Ардуино Мега 2560. Питание от USB.
В общем для начала хотел немного осовиться с контроллером, чтобы 13 лампочка моргала как я ей скажу при помощи дискретных входов. Запилил прогу, грубо - если видишь 30 вход то лампочка вкл, если 31, то выкл.
30 и 31 входы настроил таким образом
1 | pinMode(t1, INPUT); |
2 | 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" на панели инструментов.
И да, схема электрическая принципиальная нужна.
001
#include <Bounce2.h> // подключаем библиотеку подавления дребезга Bounce 2
002
#define pressed_long 2000 // длительность долговременное нажатия
003
#define max_mode 3 // количество режимов
004
#define Button 7 // пин кнопки
005
#define Clutch 8 // пин входа сцепления
006
#define Buzzer 3 // пин зуммера
007
#define ACC 4 // пин аксессуаров
008
#define Ign1 5 // пин зажигания 1
009
#define Ign2 12 // пин зажигания 2
010
#define Starter 11 // пин стартера
011
#define Rled 6 // пин красного сид
012
#define Gled 9 // пин зеленого сид
013
#define Bled 10 // пин синего сид
014
#define Dimmer A4 // пин входа габаритов
015
#define ob_start 100 // обороты запуска двигателя
016
#define delay_ign 1800 // задержка перед включением стартера
017
unsigned
long
astop_Starter = 3000;
// ограничение автоматической работы стартера
018
unsigned
long
mstop_Starter = 10000;
// ограничение ручной работы стартера
019
unsigned
long
previousMillis = 0;
// счетчик времени
020
021
// Тахометр для ускорения и точности переменные помещаются в ОЗУ командой volatile:
022
volatile unsigned
long
micros_th = 0;
// переменная времени импульса
023
volatile
byte
tz = 0;
// счетчик обнуления
024
volatile unsigned
int
tp = 0;
// обороты
025
volatile boolean tt =
false
;
// триггер тахометра
026
027
028
// Установки кнопки:
029
int
regim = 1;
// начальный режим
030
Bounce bouncer = Bounce();
// создаем экземпляр класса Bounce
031
unsigned
long
pressed_moment;
// счетчик времени нажатия
032
033
// Установки светодиодов:
034
int
brightness = 0;
// начальная яркость
035
int
fadeAmount = 7;
// шаг изменеия яркости
036
unsigned
long
inter = 100;
// частота мигания
037
unsigned
long
currentTime;
// счетчик времени
038
unsigned
long
loopTime;
// период сид
039
unsigned
long
RpreviousMillis;
// период сид
040
041
void
setup
()
042
{
043
attachInterrupt(0, tahometr, FALLING);
// активация прерывания для тахотера
044
pinMode(Button, INPUT);
// объявляем режим работы пина
045
pinMode(Clutch, INPUT);
// объявляем режим работы пина
046
pinMode(Buzzer, OUTPUT);
// объявляем режим работы пина
047
pinMode(ACC, OUTPUT);
// объявляем режим работы пина
048
pinMode(Ign1, OUTPUT);
// объявляем режим работы пина
049
pinMode(Ign2, OUTPUT);
// объявляем режим работы пина
050
pinMode(Starter, OUTPUT);
// объявляем режим работы пина
051
pinMode(Rled, OUTPUT);
// объявляем режим работы пина
052
pinMode(Gled, OUTPUT);
// объявляем режим работы пина
053
pinMode(Bled, OUTPUT);
// объявляем режим работы пина
054
pinMode(Dimmer, INPUT);
// объявляем режим работы пина
055
digitalWrite(2, HIGH);
// включаем вход
056
digitalWrite(Clutch, HIGH);
// включаем выход
057
digitalWrite(ACC, LOW);
// выключаем выход
058
digitalWrite(Ign1, LOW);
// выключаем выход
059
digitalWrite(Ign2, LOW);
// выключаем выход
060
digitalWrite(Starter, LOW);
// выключаем выход
061
digitalWrite(Rled, LOW);
// выключаем сид
062
digitalWrite(Gled, LOW);
// выключаем сид
063
digitalWrite(Bled, LOW);
// выключаем сид
064
bouncer .attach(Button);
// привязываем библиотеку кнопки к выводу Button
065
bouncer .interval(20);
// устанавливаем период дребезга = 20 мс
066
Serial
.begin(9600);
// установка Serial-порта на скорость 9600 бит/сек
067
currentTime = millis();
// устанавливаем время
068
loopTime = currentTime;
// синхронизируем время
069
}
070
071
072
void
loop
()
073
{
074
currentTime = millis();
// счетчик привязываем ко времени
075
if
(tz != 0) {
076
tz--;
077
}
else
{
078
tp = 0;
079
};
// обработка тахометра
080
Serial
.print(
"Tacho: "
);
081
Serial
.println (tp);
082
//delay (500);
083
084
if
(bouncer.update())
// если произошло событие
085
{
086
if
(bouncer.read() == 1)
// если кнопка нажата
087
{
088
pressed_moment = millis();
// запоминаем время нажатия
089
tone(Buzzer, 3500, 60);
// подаем сигнал что нажата кнопка
090
}
091
else
// кнопка отпущена
092
{
093
if
((millis() - pressed_moment) < pressed_long)
// если кнопка была нажата кратковременно
094
{
095
if
(regim == 4 && digitalRead(Clutch) == LOW) {
096
regim = 2;
// если был включен 4 режим и нажато сцепление устанавливаем 2, обнуляем момент нажатия
097
pressed_moment = 0;
098
goto
rej2;
099
}
100
if
(digitalRead (Clutch) == HIGH)
// сцепление при этом не нажато
101
{
102
regim++;
// увеличиваем счетчик текушего режима
103
if
(regim > max_mode) {
104
regim = 1;
// при достижении максимального режима возвращаемся в режим1
105
}
106
pressed_moment = 0;
// обнуляем момент нажатия
107
}
108
else
109
{
110
if
(regim == 4) {
111
regim = 1;
// если был включен 4 режим устанавливаем 1, обнуляем момент нажатия
112
pressed_moment = 0;
113
goto
rej1;
114
}
115
else
// иначе, если нажато сцепление:
116
{
117
regim = 5;
// устанавливаем 5 режим
118
pressed_moment = 0;
// обнуляем момент нажатия
119
tone(Buzzer, 3500, 100);
// звуковой сигнал
120
delay(200);
121
tone(Buzzer, 3500, 100);
// звуковой сигнал
122
goto
rej5;
123
}
124
}
125
}
126
}
127
}
128
if
((pressed_moment > 0) && ((millis() - pressed_moment) > pressed_long))
// кнопка удерживалась долго
129
{
130
if
(regim == 4)
// если режим 4
131
{
132
regim = 1;
// то устанавливаем режим 1
133
pressed_moment = 0;
// обнуляем момент нажатия
134
goto
rej1;
// переход на 1 режим
135
}
136
if
(regim == 1 || regim == 2 || regim == 3)
// если режим 1, 2 или 3
137
{
138
regim = 5;
// то переходим к 5
139
pressed_moment = 0;
// обнуляем момент нажатия
140
tone(Buzzer, 3500, 100);
// подаем много звуковых сигналов
141
delay(200);
// потому как начинается запуск без защиты тормозом
142
tone(Buzzer, 3500, 100);
// для не стандартных ситуаций
143
delay(200);
144
tone(Buzzer, 3500, 100);
// звуковой сигнал
145
delay(200);
146
tone(Buzzer, 3500, 100);
// звуковой сигнал
147
goto
rej5;
// переход на 5 режим
148
}
149
}
150
151
if
(regim == 1)
// первый режим - все выключено
152
{ rej1:
// ссылка на 1 режим
153
digitalWrite(ACC, LOW);
// Аксессуары отключены
154
digitalWrite(Ign1, LOW);
// Зажигание отключено
155
digitalWrite(Ign2, LOW);
// Зажигание отключено
156
digitalWrite(Starter, LOW);
// Стартер отключен
157
digitalWrite(Rled, LOW);
// Красный сид выключен
158
digitalWrite(Gled, LOW);
// Зеленый сид выключен
159
digitalWrite(Bled, LOW);
// Синий сид выключен
160
if
(digitalRead(Clutch) == LOW)
// если нажато сцепление
161
{
162
if
(currentTime >= (loopTime + 1))
// проверяем время
163
{
164
analogWrite(Rled, brightness);
// Передаём яркость сид
165
brightness = brightness + fadeAmount;
// Прибавляем шаг изменения яркости
166
if
(brightness <= 0 || brightness >= 255) {
167
fadeAmount = -fadeAmount;
// если достигли мин. или макс. значения, то идем в обратную сторону (реверс)
168
}
169
if
(brightness >= 255) {
170
brightness = 255;
// устанавливаем предел чтобы не мигал
171
}
172
if
(brightness <= 0) {
173
brightness = 0;
// устанавливаем предел чтобы не мигал
174
}
175
loopTime = currentTime;
// синхронизируем время
176
}
177
}
else
{
178
digitalWrite(Rled, LOW);
// Гасим сид
179
}
180
Serial
.println(
"ALL OFF:"
);
// Передаем режим рабоы
181
}
182
183
if
(regim == 2)
// второй режим - включены аксессуары
184
{ rej2:
// ссылка на 2 режим
185
digitalWrite(ACC, HIGH);
// Аксессуары включены
186
digitalWrite(Ign1, LOW);
// Зажигание отключено
187
digitalWrite(Ign2, LOW);
// Зажигание отключено
188
digitalWrite(Starter, LOW);
// Стартер отключен
189
digitalWrite(Rled, LOW);
// Красный сид выключен
190
digitalWrite(Gled, HIGH);
// Зеленый сид включен
191
digitalWrite(Bled, LOW);
// Синий сид выключен
192
if
(digitalRead(Clutch) == LOW)
// если нажато сцепление
193
{
194
if
(currentTime >= (loopTime + 1))
// проверяем время
195
{
196
digitalWrite(Gled, LOW);
// Выключаем зеленый сид
197
analogWrite(Rled, brightness);
// Передаём яркость сид
198
brightness = brightness + fadeAmount;
// прибавляем шаг изменения яркости
199
if
(brightness <= 0 || brightness >= 255) {
200
fadeAmount = -fadeAmount;
// если достигли мин. или макс. значения, то идем в обратную сторону (реверс)
201
}
202
if
(brightness >= 255) {
203
brightness = 255;
// устанавливаем предел чтобы не мигал
204
}
205
if
(brightness <= 0) {
206
brightness = 0;
// устанавливаем предел чтобы не мигал
207
}
208
loopTime = currentTime;
// синхронизируем время
209
}
210
}
211
else
{
212
digitalWrite(Rled, LOW);
//Гасим сид
213
digitalWrite(Gled, HIGH);
// Восстанавливаем сид
214
}
215
216
Serial
.println(
"ACC ONLY"
);
// Передаем режим работы
217
}
218
219
if
(regim == 3)
// третий режим - ручное включение зажигания
220
{ rej3:
// ссылка на 3 режим
221
if
(tp >= ob_start) {
222
digitalWrite(Starter, LOW);
// защита автозапуска
223
regim = 4;
224
goto
rej4;
225
}
226
digitalWrite(ACC, HIGH);
// Аксессуары включены
227
digitalWrite(Ign1, HIGH);
// Зажигание включено
228
digitalWrite(Ign2, HIGH);
// Зажигание включено
229
digitalWrite(Starter, LOW);
// Стартер отключен
230
digitalWrite(Rled, LOW);
// Красный сид выключен
231
digitalWrite(Gled, LOW);
// Зеленый сид выключен
232
digitalWrite(Bled, HIGH);
// Синий сид включен
233
if
(digitalRead(Clutch) == LOW)
// если нажато сцепление
234
{
235
if
(currentTime >= (loopTime + 1))
// проверяем время
236
{
237
digitalWrite(Bled, LOW);
// Синий сид выключен
238
analogWrite(Rled, brightness);
// Передаём яркость сид
239
brightness = brightness + fadeAmount;
// прибавляем шаг изменения яркости
240
if
(brightness <= 0 || brightness >= 255) {
241
fadeAmount = -fadeAmount;
// если достигли мин. или макс. значения, то идем в обратную сторону (реверс)
242
}
243
if
(brightness >= 255) {
244
brightness = 255;
// устанавливаем предел чтобы не мигал
245
}
246
if
(brightness <= 0) {
247
brightness = 0;
// устанавливаем предел чтобы не мигал
248
}
249
loopTime = currentTime;
// синхронизируем время
250
}
251
}
252
else
{
253
digitalWrite(Rled, LOW);
// Гасим сид
254
digitalWrite(Bled, HIGH);
// Восстанавливаем сид
255
}
256
Serial
.println(
"IGN ON ENGIN OFF"
);
// Передаем режим работы
257
}
258
259
if
(regim == 4)
// четвертый режим - основной рабочий
260
{ rej4:
// ссылка на 4 режим
261
digitalWrite(ACC, HIGH);
// Аксессуары включены
262
digitalWrite(Ign1, HIGH);
// Зажигание включено
263
digitalWrite(Ign2, HIGH);
// Зажигание включено
264
digitalWrite(Starter, LOW);
// Стартер отключен
265
if
(analogRead(Dimmer) >= 200) {
266
analogWrite(Rled, 50);
// Если включены габариты красный снижает яркость чтобы не слепить
267
}
else
{
268
digitalWrite(Rled, HIGH);
269
}
270
digitalWrite(Gled, LOW);
// Зеленый сид выключен
271
digitalWrite(Bled, LOW);
// Синий сид выключен
272
Serial
.println(
"ENGIN ON"
);
// Передаем режим работы
273
if
(tp < 50) {
274
regim = 3;
// если заглох переходим в режм 3
275
goto
rej3;
276
}
277
}
278
279
if
(regim == 5)
// пятый режим - пуск двигателя
280
{ rej5:
// ссылка на 5 режим
281
if
(tp >= ob_start) {
282
digitalWrite(Starter, LOW);
// Защита автозапуска
283
regim = 4;
284
goto
rej4;
285
}
286
digitalWrite(ACC, LOW);
// Аксессуары выключены
287
digitalWrite(Ign1, HIGH);
// Включить зажигание
288
digitalWrite(Ign2, LOW);
// Зажигание отключено
289
digitalWrite(Gled, LOW);
// Зеленый сид выключен
290
digitalWrite(Bled, LOW);
// Синий сид выключен
291
delay (delay_ign);
// Задержка на бензонасос и датчики
292
previousMillis = millis();
// время для ограничения стартера
293
RpreviousMillis = millis();
// время для мигания красного сид
294
if
(bouncer.read() == 0 && digitalRead(Clutch) == 0)
// если кнопка отпущена и нажато сцепление
295
{ auto_start:
// подпрограмма автозапуска
296
currentTime = millis();
// текущее время
297
if
(currentTime - RpreviousMillis > inter) {
298
RpreviousMillis = currentTime;
// мигание сид
299
digitalWrite(Rled, !digitalRead(Rled));
300
}
301
if
(tp <= ob_start && digitalRead(Clutch) == 0)
// если не заведена, но сцепление нажато
302
{
303
digitalWrite(Starter, HIGH);
// включаем стартер
304
Serial
.print(
"Starter ON AUTO :"
);
Serial
.println (tp);
// информация в порт
305
}
306
if
(tp >= ob_start) {
307
digitalWrite(Starter, LOW);
// если завелась, отключаем стартер, сообщаем, переходим в режим 4
308
regim = 4;
309
Serial
.println(
"START Ok!!!"
);
310
goto
rej4;
311
}
312
if
(currentTime - previousMillis > astop_Starter) {
313
digitalWrite(Starter, LOW);
// если сработал таймаут, отключаем стартер, сообщаем об ошибке, переходим в режим 3
314
tone (Buzzer, 3500, 1000);
315
regim = 3;
316
Serial
.println(
"Error: TimeOut"
);
317
goto
rej3;
318
}
319
if
(digitalRead(Button) == 1) {
320
digitalWrite(Starter, LOW);
// если еще раз нажали кнопку, отключаем стартер, сообщаем об ошибке, переходим в режим 3
321
regim = 3;
322
Serial
.println(
"Error: Press Button"
);
323
delay (1000);
324
goto
rej3;
325
}
326
goto
auto_start;
// возврат в начало подпрограммы автозапуска.
327
}
328
else
// если не сработало первое правило (кнопка отпущена нажато сцепление)
329
{ manual_start:
// подпрограмма ручного запуска
330
if
(digitalRead(Button) == 1)
// кнопка нажата, начинается ручной запуск
331
{
332
currentTime = millis();
// текущее время
333
if
(currentTime - RpreviousMillis > inter) {
334
RpreviousMillis = currentTime;
// мигаем сид
335
digitalWrite(Rled, !digitalRead(Rled));
336
}
337
digitalWrite(Starter, HIGH);
// включаем стартер
338
Serial
.print(
"Starter ON MANUAL :"
);
Serial
.println (tp);
// передаем информацию
339
}
340
else
{
341
digitalWrite(Starter, LOW);
// если отпустили кнопку отключаем стартер, сообщаем об ошибке, переходим в режим 3
342
regim = 3;
343
Serial
.println(
"Start OFF"
);
344
goto
rej3;
345
}
346
if
(currentTime - previousMillis > mstop_Starter) {
347
digitalWrite(Starter, LOW);
// если сработал таймаут, отключаем стартер, сообщаем об ошибке, переходим в режим 3
348
tone (Buzzer, 3500, 1000);
349
regim = 3;
350
Serial
.println(
"Error: TimeOut"
);
351
goto
rej3;
352
}
353
goto
manual_start;
// возврат в начало подпрограммы ручного запуска
354
}
355
}
356
}
357
358
359
void
tahometr()
// подпрограмма измерения оборотов
360
{
361
if
(!tt) {
362
micros_th = micros();
363
}
364
else
{
365
tp = (60000000 / (micros() - micros_th));
366
}
367
tt = !tt;
368
tz = 10;
369
}
Блин схему никак, я их обычно удаляю после того как нарисовал печатку.
Блин схему никак, я их обычно удаляю после того как нарисовал печатку.
молодец.
это просто вторая плата, первая уже месяц стоит в авто и без нареканий. и сэтой то проблем нет, просто перекинуть на другой пин вход педали сцепления и припоять перемычку, уже проверил работает. интересно что стало с 8 пином и почему. и вообще все же лучше использовать внутренние резисторы или внешние?
Лучше ставь внешние.
Вывести скетч "блинк" на этот больной пин. Оно и видно станет.
Лично я предпочитаю для подтяжки внешние резисторы. Для длинных сигнальных линий - номинал поменьше.