A class for serial-in/parallel-out shift registers, like the 74HC595 that are connected to the SPI bus. More...
#include <AH/Hardware/ExtendedInputOutput/SPIShiftRegisterOut.hpp>
Public Types | |
using | BitOrder_t = typename ShiftRegisterOutBase< N >::BitOrder_t |
Public Member Functions | |
SPIShiftRegisterOut (pin_t latchPin=SS, BitOrder_t bitOrder=MSBFIRST) | |
Create a new SPIShiftRegisterOut object with a given bit order, and a given number of outputs. More... | |
void | begin () override |
Initialize the shift register. More... | |
void | update () override |
Write the state buffer to the physical outputs. More... | |
void | pinMode (pin_t pin, uint8_t mode) override __attribute__((deprecated)) |
The pinMode function is not implemented because the mode is OUTPUT by definition. More... | |
void | digitalWrite (pin_t pin, uint8_t val) override |
Set the state of a given output pin. More... | |
int | digitalRead (pin_t pin) override |
Get the current state of a given output pin. More... | |
analog_t | analogRead (pin_t pin) override __attribute__((deprecated)) |
The analogRead function is deprecated because a shift is always digital. More... | |
void | analogWrite (pin_t pin, analog_t val) override __attribute__((deprecated)) |
The analogWrite function is not deprecated because a shift is always digital. More... | |
pin_t | red (pin_t id) |
Get the red output pin of the given LED. More... | |
Array< pin_t, N/3 > | redPins () |
Get an array containing all pins with red LEDs. More... | |
pin_t | green (pin_t id) |
Get the green output pin of the given LED. More... | |
Array< pin_t, N/3 > | greenPins () |
Get an array containing all pins with green LEDs. More... | |
pin_t | blue (pin_t id) |
Get the blue output pin of the given LED. More... | |
Array< pin_t, N/3 > | bluePins () |
Get an array containing all pins with blue LEDs. More... | |
Array< pin_t, N > | pins () const |
Get an array containing all pins of the element. More... | |
pin_t | pin (pin_t pin) const |
Get the extended IO pin number of a given physical pin of this extended IO element. More... | |
pin_t | operator[] (pin_t pin) const |
Get the extended IO pin number of a given physical pin of this extended IO element. More... | |
pin_t | getLength () const |
Get the number of pins this IO element has. More... | |
pin_t | getEnd () const |
Get the largest global extended IO pin number that belongs to this extended IO element. More... | |
pin_t | getStart () const |
Get the smallest global extended IO pin number that belongs to this extended IO element. More... | |
Static Public Member Functions | |
static constexpr uint16_t | length () |
static void | beginAll () |
Initialize all extended IO elements. More... | |
static DoublyLinkedList< ExtendedIOElement > & | getAll () |
Get the list of all Extended IO elements. More... | |
Protected Attributes | |
const pin_t | latchPin |
const BitOrder_t | bitOrder |
BitArray< N > | buffer |
bool | dirty = true |
ExtendedIOElement * | next |
ExtendedIOElement * | previous |
Private Attributes | |
const pin_t | start |
const pin_t | end |
Static Private Attributes | |
static pin_t | offset = NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS |
static DoublyLinkedList< ExtendedIOElement > | elements |
A class for serial-in/parallel-out shift registers, like the 74HC595 that are connected to the SPI bus.
N | The number of bits in total. Usually, shift registers (e.g. the 74HC595) have eight bits per chip, so length = 8 * k where k is the number of cascaded chips. |
Definition at line 29 of file SPIShiftRegisterOut.hpp.
using BitOrder_t = typename ShiftRegisterOutBase<N>::BitOrder_t |
Definition at line 31 of file SPIShiftRegisterOut.hpp.
SPIShiftRegisterOut | ( | pin_t | latchPin = SS , |
BitOrder_t | bitOrder = MSBFIRST |
||
) |
Create a new SPIShiftRegisterOut object with a given bit order, and a given number of outputs.
Multiple shift registers can be cascaded by connecting the serial output of the first one to the input of the second one:
latchPin | The digital output pin connected to the latch pin (ST_CP or RCLK) of the shift register. |
bitOrder | Either MSBFIRST (most significant bit first) or LSBFIRST (least significant bit first). |
Definition at line 13 of file SPIShiftRegisterOut.ipp.
|
overridevirtual |
Initialize the shift register.
Setup the SPI interface, set the CS pin to output mode, and set all shift register outputs to LOW
.
Implements ExtendedIOElement.
Definition at line 17 of file SPIShiftRegisterOut.ipp.
|
overridevirtual |
Write the state buffer to the physical outputs.
Implements ExtendedIOElement.
Definition at line 24 of file SPIShiftRegisterOut.ipp.
|
inlineoverridevirtualinherited |
The pinMode function is not implemented because the mode is OUTPUT
by definition.
Implements ExtendedIOElement.
Definition at line 52 of file ShiftRegisterOutBase.hpp.
|
overridevirtualinherited |
Set the state of a given output pin.
pin | The shift register pin to set. |
val | The value to set the pin to. (Either HIGH (1) or LOW (0)) |
Implements ExtendedIOElement.
Definition at line 13 of file ShiftRegisterOutBase.ipp.
|
overridevirtualinherited |
Get the current state of a given output pin.
pin | The shift register pin to read from. |
0 | The state of the pin is LOW . |
1 | The state of the pin is HIGH . |
Implements ExtendedIOElement.
Definition at line 20 of file ShiftRegisterOutBase.ipp.
The analogRead function is deprecated because a shift is always digital.
pin | The shift register pin to read from. |
0 | The state of the pin is LOW . |
1023 | The state of the pin is HIGH . |
Implements ExtendedIOElement.
Definition at line 90 of file ShiftRegisterOutBase.hpp.
The analogWrite function is not deprecated because a shift is always digital.
pin | The shift register pin to set. |
val | The value to set the pin to. A value greater or equal to 0x80 will set the pin to a HIGH state, a value less than 0x80 will set the pin to a LOW state. |
Implements ExtendedIOElement.
Definition at line 104 of file ShiftRegisterOutBase.hpp.
Get the red output pin of the given LED.
id | The zero-based LED number. |
Definition at line 36 of file ShiftRegisterOutBase.ipp.
Get an array containing all pins with red LEDs.
Definition at line 41 of file ShiftRegisterOutBase.ipp.
Get the green output pin of the given LED.
id | The zero-based LED number. |
Definition at line 25 of file ShiftRegisterOutBase.ipp.
Get an array containing all pins with green LEDs.
Definition at line 30 of file ShiftRegisterOutBase.ipp.
Get the blue output pin of the given LED.
id | The zero-based LED number. |
Definition at line 47 of file ShiftRegisterOutBase.ipp.
Get an array containing all pins with blue LEDs.
Definition at line 52 of file ShiftRegisterOutBase.ipp.
Get an array containing all pins of the element.
Definition at line 27 of file StaticSizeExtendedIOElement.hpp.
|
inlinestaticconstexprinherited |
Definition at line 31 of file StaticSizeExtendedIOElement.hpp.
|
staticinherited |
Initialize all extended IO elements.
Definition at line 23 of file ExtendedIOElement.cpp.
Get the extended IO pin number of a given physical pin of this extended IO element.
pin | The zero-based physical pin number of this IO element. |
Definition at line 28 of file ExtendedIOElement.cpp.
Get the extended IO pin number of a given physical pin of this extended IO element.
It is alias for ExtendedIOElement::pin
.
pin | The zero-based physical pin number of this IO element. |
Definition at line 43 of file ExtendedIOElement.cpp.
|
inherited |
Get the number of pins this IO element has.
Definition at line 45 of file ExtendedIOElement.cpp.
|
inherited |
Get the largest global extended IO pin number that belongs to this extended IO element.
Definition at line 47 of file ExtendedIOElement.cpp.
|
inherited |
Get the smallest global extended IO pin number that belongs to this extended IO element.
Definition at line 49 of file ExtendedIOElement.cpp.
|
staticinherited |
Get the list of all Extended IO elements.
Definition at line 51 of file ExtendedIOElement.cpp.
|
protectedinherited |
Definition at line 149 of file ShiftRegisterOutBase.hpp.
|
protectedinherited |
Definition at line 150 of file ShiftRegisterOutBase.hpp.
|
protectedinherited |
Definition at line 152 of file ShiftRegisterOutBase.hpp.
|
protectedinherited |
Definition at line 153 of file ShiftRegisterOutBase.hpp.
|
privateinherited |
Definition at line 193 of file ExtendedIOElement.hpp.
|
privateinherited |
Definition at line 194 of file ExtendedIOElement.hpp.
|
staticprivateinherited |
Definition at line 195 of file ExtendedIOElement.hpp.
|
staticprivateinherited |
Definition at line 197 of file ExtendedIOElement.hpp.
|
protectedinherited |
Definition at line 305 of file LinkedList.hpp.
|
protectedinherited |
Definition at line 306 of file LinkedList.hpp.