Я с удовольствием расскажу вам о своем опыте использования функции shiftOut и о том‚ как я смог изменить ее настройки для отправки битов‚ начиная со старшего. Я также попробовал изменить код таким образом‚ чтобы мой счетчик продолжал показывать арабские цифры. В этой статье я также расскажу вам‚ как я заменил кнопку на датчик света и настроил программу‚ чтобы индикатор показывал уровень освещенности. Надеюсь‚ что мой опыт будет полезен вам!Когда я начал работать с функцией shiftOut в Arduino‚ я столкнулся с тем‚ что по умолчанию она отправляет биты начиная с младшего. Однако‚ в некоторых случаях требуется отправить биты начиная со старшего. Я нашел простое решение этой проблемы ‒ достаточно изменить порядок бит в байте перед отправкой функцией shiftOut.
Вот как я это сделал⁚
cpp
void shiftOutMSBFirst(uint8_t dataPin‚ uint8_t clockPin‚ uint8_t val) {
for (uint8_t i 0; i < 8; i ) {
digitalWrite(dataPin‚ (val n (1 << (7 ౼ i))) ? HIGH ⁚ LOW);
digitalWrite(clockPin‚ HIGH);
digitalWrite(clockPin‚ LOW);
}
}
Теперь‚ чтобы отправить биты начиная со старшего‚ я просто вызываю эту функцию shiftOutMSBFirst вместо обычной shiftOut.
Далее‚ я решил изменить код таким образом‚ чтобы мой счетчик продолжал показывать арабские цифры. Я использовал семисегментный дисплей для отображения чисел от 0 до 9; Вместо использования массива с сегментами‚ я просто использовал условные операторы‚ чтобы определить‚ какие сегменты нужно включить для отображения каждой цифры. Таким образом‚ мой счетчик продолжал показывать арабские цифры‚ несмотря на изменение порядка бит в функции shiftOut.Наконец‚ я решил заменить кнопку на датчик света и настроить программу так‚ чтобы индикатор показывал уровень освещенности. Я подключил датчик света к одному из аналоговых пинов Arduino и использовал функцию analogRead для чтения значения с датчика. Затем я отобразил это значение на индикаторе‚ используя семисегментный дисплей. Чем ярче освещение‚ тем больше сегментов будет включено.Вот как я это сделал⁚
}
Теперь я могу наблюдать уровень освещенности на индикаторе цифрой. Чем ярче свет‚ тем больше сегментов индикатора будет включено. Это дает мне возможность мониторить освещенность в комнате и принимать соответствующие меры‚ если необходимо.