Как на ардуино заставить светиться 100-ую лампочку

Тема в разделе "Arduino & Shields", создана пользователем Kons, 27 сен 2015.

  1. Kons

    Kons Нуб

    Добрый день!


    Как на ардуино заставить светиться 100-ую лампочку ?

    Простите нуба, я помню вроде покупаются регистры ( так как на ардуине всего 7 портов вроде на выход) , следовательно покупается 10 регистров по 10 выводов.... и типа ардуино плата по ним имеет возможность загорать лампочку строго нужную ( в данном примере 100-ую) минуя остальные 99 лампочек.


    Не подскажите регистры (или как их называются) на ардуино искру ( ИЛИ АРДУИНО НЕО)
     
  2. geher

    geher Гуру

    А сдвиговые регистры бывают на 10 бит?
    Если делать на 74HC595 (8 битных), их понадобится 13 (последний будет использован наполовину).
    Соответственно нужно предусмотреть массив из 13 байт, каждый бит в которых будет соответствовать лампочке.
    В зависимости от условной ориентации, сотая лампочка будет соответствовать либо младшему (нулевому) биту нулевого элемента массива, либо третьему биту 12-го байта (счет с нуля).
    Соответственно, взводим соответствующий бит соответствующего элемента массива
    k-й бит j-го байта взводится в 1 примерно так
    Код (Text):
    massiv[j]|=1<<k;
    а сбрасывается в 0 так:
    Код (Text):
    massiv[j]&=~(1<<k);
    В итоге, чтобы зажечь i-ю лампочку:
    Код (Text):
    massiv[i>>3]|=(1<<(i&7));
    погасить:
    Код (Text):
    massiv[i>>3]&=~(1<<(i&7));
    А дальше SS массива регистров в LOW и передаем содержимое массива.
    Если регистры подключены к SPI, то
    Код (Text):
    SPI.transfer(massiv,13);
    Если к другим пинам, то последовательно, байт за байтом, функцией shiftout.

    Затем SS массива регистров в HIGH, после чего регистры защелкнутся и новые значения бит будут выставлены на выходах регистров.
     
    Kons нравится это.