Мигание по нажатию кнопки

morgusha
Offline
Зарегистрирован: 15.09.2017

Подскажите пожалуйста. Подключил кнопку по схеме с подтягивающим резистором...резюк был ток 20кОм...но вроде все работает, но вот написал код и не пойму почему кнопка при подаче 5В постоянно горит , а при размыкании мигает постоянно светодиод ? 

int ledPin = 13;
int buttonPin = 2;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

}
  
void loop() {

  int buttonState = digitalRead(buttonPin); // считываем состояние кнопки
  if (buttonState == HIGH){
     miganie();
     digitalWrite(ledPin, HIGH); // зажигаем светодиод при нажатии кнопки
    }

}

void miganie(){
  for (int a =0; a <3; a++){
       digitalWrite(ledPin, HIGH);
       delay(100);
       digitalWrite(ledPin, LOW);
       delay(100);
  }
  }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

morgusha пишет:

почему кнопка при подаче 5В постоянно горит

Может резюк не в тот гнездюк засунул? Вот кнопзюк и загорелся.

 

morgusha
Offline
Зарегистрирован: 15.09.2017

вот код немного переделал :

int ledPin = 13;
int buttonPin = 2;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

}
void loop() {

  int buttonState = digitalRead(buttonPin); // считываем состояние кнопки
  if (buttonState == HIGH){
     miganie();
     digitalWrite(ledPin, HIGH); // зажигаем светодиод при нажатии кнопки
    }
    else if (buttonState == LOW){
      digitalWrite(ledPin, LOW);
      }

}

void miganie(){
  for (int a =0; a <3; a++){
       digitalWrite(ledPin, HIGH);
       delay(100);
       digitalWrite(ledPin, LOW);
       delay(100);
  }
  }

сейчас, когда между контактами 2 и GND нету 5В резистор не горит при нажатии на кнопку и замыкании цепи с +5В между контактами 2 и GND появляется 5В и резистор начинает безперерыва мигать...что ни так сделано ? 

По идеи должен мигнуть быстро 3 раза и установиться в режим ГОРЕТЬ ВСЕГДА ! 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

 

morgusha пишет:
резистор не горит

А должен?

morgusha пишет:
резистор начинает безперерыва мигать

Ужас! 

То у Вас кнопка горела, теперь резистор размигался. Вы это, не привыкали бы к дряни, которую сейчас курите.

 

morgusha
Offline
Зарегистрирован: 15.09.2017

Ахахха...да просто в задумках писал ) Понятно, что не горит светодиод ! 

 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014
#define ledPin 13
#define buttonPin 2
bool f_miganie = 0;


void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

}
void loop() {

  int buttonState = digitalRead(buttonPin); // считываем состояние кнопки
  if (buttonState == HIGH && f_miganie == 0) {
    miganie();
    digitalWrite(ledPin, HIGH); // зажигаем светодиод при нажатии кнопки
    f_miganie = 1;
  }
  else if (buttonState == LOW) {
    digitalWrite(ledPin, LOW);
    f_miganie = 0;
  }

}

void miganie() {
  for (int a = 0; a < 3; a++) {
    digitalWrite(ledPin, HIGH);
    delay(100);
    digitalWrite(ledPin, LOW);
    delay(100);
  }
}

 

morgusha
Offline
Зарегистрирован: 15.09.2017

а ведь работает, спасибо. интересный момент с f_miganie )

а вот ещё вопрос...почему при включении в digitalPin3 тоже работает ?) по идеи ток при включении в digitalPin2 должно ведь ?