Arduino KVComm  master
Key-Value pair communication 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 "ExtendedInputOutput.hpp"
11 
13 
25 template <uint8_t N>
27  protected:
39  ShiftRegisterOutBase(pin_t latchPin, BitOrder_t bitOrder);
40 
41  public:
46  void pinMode(pin_t pin, PinMode_t mode) override
47  __attribute__((deprecated)) {
48  (void)pin;
49  (void)mode;
50  }
51 
61  void digitalWrite(pin_t pin, PinStatus_t val) override;
62 
73  int digitalRead(pin_t pin) override;
74 
85  analog_t analogRead(pin_t pin) override __attribute__((deprecated)) {
86  return 1023 * digitalRead(pin);
87  }
88 
99  void analogWrite(pin_t pin, analog_t val) override
100  __attribute__((deprecated)) {
101  digitalWrite(pin, val >= 0x80 ? HIGH : LOW);
102  }
103 
110  pin_t red(pin_t id);
111 
115  Array<pin_t, N / 3> redPins();
116 
123  pin_t green(pin_t id);
124 
128  Array<pin_t, N / 3> greenPins();
129 
136  pin_t blue(pin_t id);
137 
141  Array<pin_t, N / 3> bluePins();
142 
143  protected:
146 
148  bool dirty = true;
149 };
150 
152 
153 #include "ShiftRegisterOutBase.ipp"
154 
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: NamespaceSettings.hpp:9
LOW
const PinStatus_t LOW
Definition: ExtendedInputOutput.hpp:57
Warnings.hpp
AH::ExtIO::digitalRead
int digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:58
AH::ShiftRegisterOutBase
A class for serial-in/parallel-out shift registers, like the 74HC595.
Definition: ShiftRegisterOutBase.hpp:26
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:99
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:85
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::ExtIO::digitalWrite
void digitalWrite(pin_t pin, PinStatus_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:47
HIGH
const PinStatus_t HIGH
Definition: ExtendedInputOutput.hpp:56
AH::ShiftRegisterOutBase::bitOrder
const BitOrder_t bitOrder
Definition: ShiftRegisterOutBase.hpp:145
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition: Array.hpp:36
AH::ShiftRegisterOutBase::pinMode
void pinMode(pin_t pin, PinMode_t mode) override __attribute__((deprecated))
The pinMode function is not implemented because the mode is OUTPUT by definition.
Definition: ShiftRegisterOutBase.hpp:46
ShiftRegisterOutBase.ipp
PinStatus_t
uint8_t PinStatus_t
Definition: ExtendedInputOutput.hpp:48
StaticSizeExtendedIOElement.hpp
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
BitOrder_t
uint8_t BitOrder_t
Definition: ExtendedInputOutput.hpp:53
AH::ShiftRegisterOutBase::latchPin
const pin_t latchPin
Definition: ShiftRegisterOutBase.hpp:144
AH::ShiftRegisterOutBase::buffer
BitArray< N > buffer
Definition: ShiftRegisterOutBase.hpp:147
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:16
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: NamespaceSettings.hpp:10
AH::BitArray
A class for arrays of bits.
Definition: BitArray.hpp:25
PinMode_t
uint8_t PinMode_t
Definition: ExtendedInputOutput.hpp:49