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

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

b707 пишет:

Муж_Долговой пишет:

Разве, что принт в if перенести третьей строчкой.

тогда принт будет печататься в среднем в 2 раза реже. Но все равно также бесконечно :) ибо бесконечность, поделенная на 2 - остается бесконечностью

Нет. Только когда нажата кнопка.

b707
Offline
Зарегистрирован: 26.05.2017

Муж_Долговой пишет:

Нет. Только когда нажата кнопка.

 неверно формулируете. Правильно "пока нажата кнопка" - почувствуйте разницу

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

 "неверно формулируете. Правильно "пока нажата кнопка" - почувствуйте разницу"

если нажата кнопка! Так if это и есть если в переводе с итальянского.

SLKH
Offline
Зарегистрирован: 17.08.2015

Муж_Долговой пишет:


// Регистры подключены по классической схеме последовательно
int latchPin = 10;  // Пины UNO
int clockPin = 12;  //  -//-
int dataPin = 11;   //  -//-
int buttonPin1 = 2;  // Подключаем кнопку к пину 2
int buttonPin2 = 3;  // Подключаем кнопку к пину 3/ это если ещё одна кнопка надо
uint8_t number595_1 = (B00000000);    //Регистр первый (самый дальний по схеме от входа) Пока на всех выходах "0"
uint8_t number595_2 = (B00000000);   // Регистр второй (при последовательном соединении) Если илишний закомментить!
uint8_t number595_3 = (B00000000);   // Регистр третий (Вот его пока к кнопке и подключим) Если лишний - закомментить!
uint8_t qa, qb, qc, qd, qe, qf, qg, qh; //Раздвинем ноги регистру
void setup() {
  Serial.begin (9600); // готовим монитор, чтобы потом подсматривать
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(buttonPin1, INPUT_PULLUP); //Уровень высокий. При нажатии кнопки - на выходе "0"
     }
void loop() {
  // Представим переменную uint8_t number595_1 в виде ног регистра
  number595_1 =  qa*1 +  qb*2 +  qc*4 +  qd*8 +  qe*16 +  qf*32 +  qg*64 +  qh*128; //ноги, которыми не хочешь управлять - так и оставь. Типа qe = 1, qh = 0  
    int push = digitalRead (buttonPin1);
    if (push == 0)   {
      qa = 1;    //Нажатием кнопки меняем состояние нужных ног регистра
      qb = 1;}
      else { // При отпускании кнопки на соответсвующих ногах опять "0"
        qa = 0;
        qb = 0;}    
   digitalWrite(latchPin, LOW);    //открываем защёлку
     shiftOut(dataPin, clockPin, MSBFIRST, number595_1);  //Заносим даные в первый регистр
     shiftOut(dataPin, clockPin, MSBFIRST, number595_2);  //Заносим даные во второй регистр. Если лишний - закомментить!
     shiftOut(dataPin, clockPin, MSBFIRST, number595_3);  //Заносим даные в третий регистр. Если лишний - закомментить!
   digitalWrite(latchPin, HIGH);  // закрываем защёлку
 Serial.println (number595_1, BIN); // Смотрим в мониторе порта, что получилось
        delay (500);} //Эта пауза, чтобы монитор не торопился. Потом закомментить
   
     
        

 

Вот ни хрена не понимаю - это троллинг?

в стр. 07 просвоили переменной number595_1 значение B00000000

в стр. 20 в ней остался тот же 0 (или произвольный мусор - в зависимости от результатов стр. 10).

строки 23-27 не изменяют переменную number595_1.

затем она проталкивается в регистр и она же выводится на монитор - независимо от результатов проталкивания и вообще наличия/отсутствия микрохемы и нажатия/отпускания кнопок.

Зачем?

 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

затем она проталкивается в регистр и она же выводится на монитор - независимо от результатов проталкивания и вообще наличия/отсутствия микрохемы и нажатия/отпускания кнопок.

Зачем?

Ещё один диванный теоретик.

Всё меняется как надо. 

Это  же скетч для изменения всего двух ног от кнопки. Остальное записано чтобы ТС понял принцип работы и своё вставил.

sadman41
Offline
Зарегистрирован: 19.10.2016

SLKH пишет:

Вот ни хрена не понимаю - это троллинг?

Нет, он просто не успевает увидеть, что там происходит на первой итерации, потому что на второй всё какбэ нормализуется. Вот и считает, что всё ОК.

SLKH
Offline
Зарегистрирован: 17.08.2015

Муж_Долговой пишет:

затем она проталкивается в регистр и она же выводится на монитор - независимо от результатов проталкивания и вообще наличия/отсутствия микрохемы и нажатия/отпускания кнопок.

Зачем?

Ещё один диванный теоретик.

Всё меняется как надо. 

Это  же скетч для изменения всего двух ног от кнопки. Остальное записано чтобы ТС понял принцип работы и своё вставил.

ну расскажи мне, теоретику, где в скетче изменяются значения выходов регистра от кнопок. Ибо в листинге #34 я этого не вижу.

b707
Offline
Зарегистрирован: 26.05.2017

Муж_Долговой пишет:

Ещё один диванный теоретик.

Дорогой наш - в отличии от тебя все "теоретики", что отписались в теме - в состоянии написать этот скетч четко и без ляпов. А ты все время прикрываегшься тем, что мол специально писал плохо для новичко, а сам можешь лучше. Не надо ля-ля... твой уровень в этом коде.

Хочешь доказать обратное -перепиши . Список недоделок тебе перечислили.

Заодно и новичкам будет полезно.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Муж_Долговой пишет:

 Так он эти регистры никогда не поймёт, и будет считать их за практическое применение чёрной магии. Да и Ардуинку забросит подальше и к девкам пойдёт. А там болезни, наркотики и прочие ужасы.

1. Нас спалили! Ты сам догадался, что это и есть главная задача форумной мафии?

2. Сам-то не думал "забросить и к деффкам"? Хотя что это я... ты "бабий муж"! ;)))) Сорри.

strarbit
Offline
Зарегистрирован: 12.06.2016

продажа библиотека 74НС595, 74HC164. Просто изменение 1 pin регистры или многие pins регистры  в 1 момент. Проба свободно Attiny13 1.2MHz https://www.dropbox.com/s/5slpkain753aisc/Attiny13A_shifty_peep_holes.zi...