Страница 1 из 1

Замена shiftOut

Добавлено: 01 май 2018, 20:58
seri0shka
Как заменить конструкцию типа
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 );
}
Нужно, чтобы ужать код на несколько байт. Приведённая замена не работает. Что я делаю не так?
И второе: целую неделю не мог попасть на сайт. Только у меня проблемы? С телефона и сейчас не заходит.

Замена shiftOut

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

Замена shiftOut

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

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

Замена shiftOut

Добавлено: 01 май 2018, 21:15
Anydy
Проверил с телефона, все работает.
Кэш браузера желательно периодически чистить, особенно если что то не работает)))

Замена shiftOut

Добавлено: 01 май 2018, 21:52
seri0shka
Оказывается, правильно так:
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 );
}