Замена shiftOut

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Замена shiftOut

#1

Сообщение seri0shka » 01.05.2018{, 20:58}

Как заменить конструкцию типа
shiftOut(dataPin, clockPin, MSBFIRST, RazrDisplay);
на
for (byte c = 0; c < 8; c++) {
digitalWrite( dataPin , !!(RazrDisplay & (1 << c)));
delayMicroseconds( 1 );
digitalWrite( clockPin , HIGH);
delayMicroseconds( 1 );
digitalWrite( clockPin , LOW);
delayMicroseconds( 1 );
}
Нужно, чтобы ужать код на несколько байт. Приведённая замена не работает. Что я делаю не так?
И второе: целую неделю не мог попасть на сайт. Только у меня проблемы? С телефона и сейчас не заходит.

Anydy

Замена shiftOut

#2

Сообщение Anydy » 01.05.2018{, 21:04}

seri0shka писал(а):
01.05.2018{, 20:58}
И второе: целую неделю не мог попасть на сайт. Только у меня проблемы? С телефона и сейчас не заходит.
Не работал около суток ....с неделю назад.....посмотрите по сообщениям пользователей...с телефона сейчас проверю..)))

aidar_i
Полковник
Сообщения: 3126
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

Замена shiftOut

#3

Сообщение aidar_i » 01.05.2018{, 21:07}

Я тоже не мог попасть, стёр кеш браузера и вроде нормально. Несколько раз было, чтобы попасть в форум нужно было сперва зайти на сайт. Напрямую не мог.

Отправлено спустя 24 секунды:
Сейчас пишу с телефона.

Anydy

Замена shiftOut

#4

Сообщение Anydy » 01.05.2018{, 21:15}

Проверил с телефона, все работает.
Кэш браузера желательно периодически чистить, особенно если что то не работает)))

seri0shka
Лейтенант
Сообщения: 391
Зарегистрирован: 09.04.2016{, 12:17}
Репутация: 22
Откуда: Кременчуг
Имя: Сергей

Замена shiftOut

#5

Сообщение seri0shka » 01.05.2018{, 21:52}

Оказывается, правильно так:
for (byte c = 0; c < 8; c++) {
// digitalWrite( dataPin , !!(RazrDisplay & (1 << c))); // это для LSBFIRST
digitalWrite(dataPin, !!(RazrDisplay & (1 << (7 - с)))); // это правильный вариант для MSBFIRST
delayMicroseconds( 1 );
digitalWrite( clockPin , HIGH);
delayMicroseconds( 1 );
digitalWrite( clockPin , LOW);
delayMicroseconds( 1 );
}

Ответить

Вернуться в «Спросить у знатоков»