Вопрос по shiftOut и PinMode(input, pin_number)
- Войдите на сайт для отправки комментариев
Помогите разобраться: если в коде функции прописаны три подряд функции shiftOut, то что происходит: на dataPin ( который в данном случае именуется segdata ) ПСОЛЕДОВАТЕЛЬНО ??
подаются числа ( в байтовом виде , побитно) из …. допустим просто явно указанные числа. Или, как в данном случае, числа хранящиеся в переменных lastchar, midchar, first char : ??
void segdisplay(int lastchar, int midchar, int firstchar)
{
digitalWrite(seglatch, LOW);
shiftOut(segdata, segclock, MSBFIRST, lastchar);
shiftOut(segdata, segclock, MSBFIRST, midchar);
shiftOut(segdata, segclock, MSBFIRST, firstchar);
digitalWrite(seglatch, HIGH);
}
В результате на ПИН чипа поступают ПСОЛЕДОВАТЕЛЬНО три числа ? Что же будет появляться на выходных ножках сдвигового чипа? Хаос с тактовой частотой ?
Дальше еще хуже:
Вызываем функцию в цикле for. В цикле for в эти три переменные попадают по нарастающей 15 раз разные числа которые есть элементы каких- то там массивов.
for (int q = 0; q<15; q++)
{
segdisplay(greeting1[q+2],greeting1[q+1],greeting1[q]);
delay(scrolldelay);
}
Т.о физически на входную ножку сдвигового чипа что поступает: сначала три раза подряд три разных числа ( пусть берем их из из массива), потом еще раз три числа .. и так пока не закончится цикл.
Где то я туплю Подскажите плз.
Второй вопрос: Я так понимаю , что это трюк от дребезга при нажатии кнопки :
void waitforpress(int inputpin)
// function to stop and wait for user to press button on input
// pin number 'inputpin'. Ensure this is set to input using
// pinMode(input, pin number)
{
while (digitalRead(inputpin)==0)
{
delay(10); //
}
delay(1000);; // debounce
}
Так вообще бывает : pinMode(input, pin number)? Ведь д.б. наоборот: pinMode(pin number, input).
Заранее благодарю за отклик.