проблема с пинами
- Войдите на сайт для отправки комментариев
Сб, 17/02/2018 - 04:21
Есть простой скетч для примера
int dv = A1;
int AUT5 = 2;
void setup()
{
Serial.begin(9600);
pinMode(AUT5, OUTPUT);
}
void loop()
{
int D = digitalRead(dv);
if(D == LOW ) {digitalWrite(AUT5, LOW);}
if(D == HIGH ) { digitalWrite(AUT5,HIGH ); delay(2000); }
}
если подать на А1 наприжения,то на пине 2 будет 5в
В моём случаи даже если пальцем прикаснуться то этот HIGH срабатывает,пин просто реагирует на малейшее прикосновения всего кроме полнейшего диэлектрика.Может у меня ардуино накрылась?
На водки. Вход надо настроить с паттяжкой.
а можно попадробней для чайника))?мне от GND резистор этак на 15кОм пустить?
pinMode(dv, INPUT_PULLUP);
пробовал.тоже самое выходит
Нуууу.... чюдеса случаюца...
сделал так
int dv = A1;
int AUT5 = 2;
void setup()
{
Serial.begin(9600);
pinMode(dv, INPUT_PULLUP);
pinMode(AUT5, OUTPUT);
}
void loop()
{
int D = digitalRead(dv);
if(D == LOW ) {digitalWrite(AUT5, LOW);}
if(D == HIGH ) { digitalWrite(AUT5,HIGH ); delay(2000); }
}
теперь на 2 пине всегда +5.Либо я дурак либо лыжи не едут)
у меня: ардуино нано подкл. к компу,на пине gnd и D2 сидит диод(с резист.)ВСЁ.первый скетч при касании даже пальцем к А1 -диод горит.По второму скетчу (где pinMode(dv, INPUT_PULLUP)) -диод горит постоянно .
Что не так?(((
а нужно что бы диод горел от сигнала хотябы 1 вольт,а не от микро вольтов)) или дажо нано)
Ну а как ты хотел ? У тебя кнопка подключена к аналоговому входу. И в условии D=digitalRead(dv).
Т.е. D при любой наводке true.
Если подтягивает его INPUT_PULLUP, то там всегда будет 5в, и для управления надо с кнопки подавать на него 0(gnd), и в программе это учитывать( ну или сразу инвертировать сигнал, примерно так
D=!digitalRead(dv);
Ещё поди и кнопка сенсорная ?
кнопка обычная.Дело в другом,я же всё отдельно без кнопки подключил ,пин ревгирует на прикосновения пальца или отвёрки например,мне как то не надо что бы всё реагировала от малейшего статического эл.(
Если поставить D=!digitalRead(dv); то работает,но от gnd но мне надо что бы работала от + сигнала(((
Тогда подтягивающий резистор ставь 10-20 кОм.
И если использование аналогового пина принципиально , а подтягивать неохота, то пиши так
D=analogRead(dv);
if(D>=x){digitalWrite(AUT5,LOW);}
if(D меньше х) (знак меньше неадекватно движком форума воспринимается){digitalWrite(AUT5,HIGH;}
Где х-порог нужной чувствительности, на палец не срабатывает, на кнопку да.(можешь в мониторе подглядеть значения).
Подтягивающий резистор-между пином и gnd
теперь на 2 пине всегда +5.
а что вас в этом удивляет? Так и должно быть.
Нет никакой "проблемы с пинами".
int D=analogRead(A1);
if(D"знак меньше"=400){digitalWrite(AUT5,LOW);}
if(D>=400){digitalWrite(AUT5,HIGH);}
+подтяг. 10кОМ
спасибо заработала)
int D=analogRead(A1);
if(D"знак меньше"=400){digitalWrite(AUT5,LOW);}
if(D>=400){digitalWrite(AUT5,HIGH);}
+подтяг. 10кОМ
спасибо заработала)
Во-первых, analogКead() - это из пушки по воробьям (он работает раз в 20 дольше digitalRead()), а во вторых, в Вашем втором варианте отсутствует delay() в одной из веток, что радикальным образом меняет поведение программы.
Я бы на Вашем месте попытался понять, в чем дело, а не добивался методом тыка поведения, которое Вас на первый взгляд устраивает (может оказаться, что на второй - уже не устроит).
'[[ ghfd/я сделал так
int AUT1 = 2;//этот пин вкл. светодиод
void setup()
{
Serial.begin(9600);
pinMode(AUT1, OUTPUT);
}
void loop()
{
int L = digitalRead(10);// протинул от него резистор 10 кОМ на GND
if(L == false) {digitalWrite(AUT1,LOW);}
if(L == true) { digitalWrite(AUT1,HIGH ); }
delay(1000);
}
Теперь диод то вкл,то выкл,живёт своей жизнью ,но первые 10 сек работает
вроде нашёл проблему резисто не 10 кОм поставил а 20 кОм