Сдвиговый регистр

OOM
Offline
Зарегистрирован: 07.01.2017

Подскажите пожалуйста в чем причина и что, я делаю не так.

Подключил сдвиговый регистр к ардуино Уно, запустил бегущий огонь, все работает. 

хочу запустить этот бегущий огонь по нажатию кнопки.

Подключил кнопку и ни чего.

Код прилагаю, что в нем не так?.



int dataPin = 9; //Пин подключен к DS входу 74HC595

int latchPin = 10; //Пин подключен к ST_CP входу 74HC595

int clockPin = 11; //Пин подключен к SH_CP входу 74HC595

int button = 7; // Пин кнопки

int val = 0;



void setup() {

//устанавливаем режим OUTPUT

pinMode(latchPin, OUTPUT);

pinMode(clockPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode( button, INPUT_PULLUP );

}



void loop() {

val = digitalRead( button );

byte byteToSend = 0; //Создаем пустой байт B00000000

if( val == 0 ){

for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита

byteToSend = 0; // Обнуляем байт при каждом проходе

bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д.



digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита

digitalWrite(latchPin, HIGH);

delay(1000);

}

}

}

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
semaawp
semaawp аватар
Offline
Зарегистрирован: 29.05.2017

может вы кнопку не на GND комутируете, а на 5V?

OOM
Offline
Зарегистрирован: 07.01.2017
int dataPin  = 9;   //Пин подключен к DS входу 74HC595
int latchPin = 10;  //Пин подключен к ST_CP входу 74HC595
int clockPin = 11;  //Пин подключен к SH_CP входу 74HC595
int button = 7;     // Пин кнопки
int val = 0; 

void setup() {
  //устанавливаем режим OUTPUT
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode( button, INPUT_PULLUP ); 
}

void loop() {
  val = digitalRead( button ); 
  byte byteToSend = 0; //Создаем пустой байт B00000000
  if( val == 0 ){ 
    for (int bitPos = 0; bitPos < 8; bitPos++) { // В переменной хранится позиция изменяемого бита
    byteToSend = 0; // Обнуляем байт при каждом проходе
    bitWrite(byteToSend, bitPos, HIGH); // При bitPos=0 получим B00000001, при bitPos=1 - B00000010, при bitPos=2 - B00000100 и т.д.

    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, byteToSend); // Инвертируем сигнал при помощи MSBFIRST, грузим с первого бита
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
  }
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Схема подключения?

OOM
Offline
Зарегистрирован: 07.01.2017

Спасибо. Это моя не внимательность. Заработало

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

OOM пишет:

Спасибо. Это моя не внимательность. Заработало

На кнопку забыл нажать?

Я когда прочитал

OOM пишет:
Подключил кнопку и ни чего

То почему-то сразу подумал: "А на кнопку-то нажимал"?

semaawp
semaawp аватар
Offline
Зарегистрирован: 29.05.2017

ЕвгенийП пишет:

OOM пишет:

Спасибо. Это моя не внимательность. Заработало

На кнопку забыл нажать?

Я когда прочитал

OOM пишет:
Подключил кнопку и ни чего

То почему-то сразу подумал: "А на кнопку-то нажимал"?


Нет, он просто на 5Вольт ее цеплял, а не на массу