Control Surface  1.1.1
MIDI Control Surface library for Arduino
ShiftRegisterOutBase.hpp
Go to the documentation of this file.
1 /* ✔ */
2 
3 #pragma once
4 
6 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
7 
8 #include "StaticSizeExtendedIOElement.hpp"
10 
12 
24 template <uint8_t N>
26  public:
27 #if defined(__SAM3X8E__) || defined(__SAMD21G18A__)
28  using BitOrder_t = BitOrder;
29 #else
30  using BitOrder_t = uint8_t;
31 #endif
32 
33  protected:
45  ShiftRegisterOutBase(pin_t latchPin, BitOrder_t bitOrder);
46 
47  public:
52  void pinMode(pin_t pin, uint8_t mode) override __attribute__((deprecated)) {
53  (void)pin;
54  (void)mode;
55  }
56 
66  void digitalWrite(pin_t pin, uint8_t val) override;
67 
78  int digitalRead(pin_t pin) override;
79 
90  analog_t analogRead(pin_t pin) override __attribute__((deprecated)) {
91  return 1023 * digitalRead(pin);
92  }
93 
104  void analogWrite(pin_t pin, analog_t val) override
105  __attribute__((deprecated)) {
106  digitalWrite(pin, val >= 0x80);
107  }
108 
115  pin_t red(pin_t id);
116 
120  Array<pin_t, N / 3> redPins();
121 
128  pin_t green(pin_t id);
129 
133  Array<pin_t, N / 3> greenPins();
134 
141  pin_t blue(pin_t id);
142 
146  Array<pin_t, N / 3> bluePins();
147 
148  protected:
151 
153  bool dirty = true;
154 };
155 
157 
158 #include "ShiftRegisterOutBase.ipp"
159 
Warnings.hpp
AH::ExtIO::digitalRead
int digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:60
AH::ShiftRegisterOutBase
A class for serial-in/parallel-out shift registers, like the 74HC595.
Definition: ShiftRegisterOutBase.hpp:25
AH::ShiftRegisterOutBase::analogWrite
void analogWrite(pin_t pin, analog_t val) override __attribute__((deprecated))
The analogWrite function is not deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:104
AH::ShiftRegisterOutBase::analogRead
analog_t analogRead(pin_t pin) override __attribute__((deprecated))
The analogRead function is deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:90
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
BitArray.hpp
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:17
AH::ShiftRegisterOutBase::pinMode
void pinMode(pin_t pin, uint8_t mode) override __attribute__((deprecated))
The pinMode function is not implemented because the mode is OUTPUT by definition.
Definition: ShiftRegisterOutBase.hpp:52
AH::ShiftRegisterOutBase::bitOrder
const BitOrder_t bitOrder
Definition: ShiftRegisterOutBase.hpp:150
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition: Array.hpp:36
ShiftRegisterOutBase.ipp
AH::analog_t
uint16_t analog_t
The type returned from analogRead and similar functions.
Definition: Hardware-Types.hpp:15
AH::StaticSizeExtendedIOElement
A class for ExtendedIOElements with a fixed size.
Definition: StaticSizeExtendedIOElement.hpp:19
AH::ShiftRegisterOutBase::latchPin
const pin_t latchPin
Definition: ShiftRegisterOutBase.hpp:149
AH::ShiftRegisterOutBase::buffer
BitArray< N > buffer
Definition: ShiftRegisterOutBase.hpp:152
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:16
AH::ShiftRegisterOutBase::BitOrder_t
uint8_t BitOrder_t
Definition: ShiftRegisterOutBase.hpp:30
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
AH::ExtIO::digitalWrite
void digitalWrite(pin_t pin, uint8_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:48
AH::BitArray
A class for arrays of bits.
Definition: BitArray.hpp:25