This is an old version of the documentation. View the latest version here.
Control Surface  1.0.0
MIDI Control Surface library for Arduino
2.BitBang-Blink.ino

2.BitBang-Blink

This example demonstrates the use of shift registers as if they were just normal IO pins. This version uses bit-banging to drive the shift register. You should probably be using the SPI version instead.

Boards:
AVR, AVR USB, Teensy 3.x, ESP32

Connections

Connect an LED (and series resistor) between the first output of the shift register and ground.

Remember to connect the enable pin the shift register to ground and the master reset pin to Vcc in order to enable it.

Behavior

This sketch will just blink the LED once a second.

Mapping

None.

Written by PieterP, 2018-09-01 https://github.com/tttapa/Control-Surface

#include <Control_Surface.h> // Include the Control Surface library.
using namespace ExtIO; // Bring the ExtIO pin functions into your sketch
const pin_t latchPin = 10; // Pin connected to ST_CP of 74HC595
const pin_t dataPin = 11; // Pin connected to DS of 74HC595
const pin_t clockPin = 13; // Pin connected to SH_CP of 74HC595
// Instantiate a shift register on the correct pins, most significant bit first,
// and a total of 8 outputs.
ShiftRegisterOut<8> sreg = {dataPin, clockPin, latchPin, MSBFIRST};
const pin_t ledPin = sreg.pin(0); // first pin of the shift register
void setup() {
sreg.begin(); // Initialize the shift registers
pinMode(ledPin, OUTPUT); // You don't even need this line, since
// shift registers are always outputs
}
void loop() {
// Toggle the state of the LED every 1/2 second
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
ShiftRegisterOut
A class for serial-in/parallel-out shift registers, like the 74HC595.
Definition: ShiftRegisterOut.hpp:18
ExtIO::pinMode
void pinMode(pin_t pin, uint8_t mode)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:34
pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Def.hpp:17
HIGH
const uint8_t HIGH
Definition: ExtendedInputOutput.hpp:34
Control_Surface.h
The main header file that includes all Control-Surface header files.
ExtIO::digitalWrite
void digitalWrite(pin_t pin, uint8_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:45
ShiftRegisterOut::begin
void begin() override
Initialize the shift register.
Definition: ShiftRegisterOut.ipp:13
ExtendedIOElement::pin
pin_t pin(pin_t pin) const
Get the extended IO pin number of a given physical pin of this extended IO element.
Definition: ExtendedIOElement.cpp:26
LOW
const uint8_t LOW
Definition: ExtendedInputOutput.hpp:35
ExtIO
A namespace with alternatives to the standard Arduino IO functions that can be used with extended IO ...
Definition: ExtendedInputOutput.cpp:8
OUTPUT
const uint8_t OUTPUT
Definition: ExtendedInputOutput.hpp:38