Zum Hauptinhalt springen

GPIO-Expander

Was dieses Beispiel zeigt​

Lassen Sie eine LED an einem Pin des GPIO-Expanders PCAL6416A blinken. Die 16 Pins des Expanders sind am Header GPIO EXPANDER als P0-0 bis P0-7 und P1-0 bis P1-7 herausgeführt. Im Code sind P0-0 bis P0-7 die Pins 0 bis 7 (IO_PIN_A0 bis IO_PIN_A7) und P1-0 bis P1-7 die Pins 8 bis 15 (IO_PIN_B0 bis IO_PIN_B7).

Verdrahten Sie die Schaltung, bevor Sie hochladen: Verbinden Sie eine Seite eines 330-Ω-Widerstands mit P1-7, die andere Seite mit der Anode der LED und die Kathode der LED mit GND. Dieser Wert stammt aus diesem Sketch; das MicroPython-Beispiel für den GPIO-Expander verlangt stattdessen einen 300-Ω-Widerstand an P1-5.

Beispielcode​

Select Board
Inkplate7SPECTRA_External_IO_Expander.ino
#include "Inkplate.h" //Include Inkplate library to the sketch

// We are going to use pin P1-7 (or GPB7 on older Inkplates).
// Remember! GPA0 = 0, GPA1 = 1, ..., GPA7 = 7, GPB0 = 8, GBP1 = 9, ..., GPB7 = 15.
// And also P0-0 = GPA0, P0-1 = GPA1, ..., P0-7 = GPA7, P1-0 = GPB0, P1-1 = GPB1, ..., P1-7 = GPB7.
#define LED_PIN IO_PIN_B7

Inkplate display; // Create an object on Inkplate library and also set library into 1-bit mode (BW)

void setup()
{
display.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
display.expander1.pinMode(LED_PIN,
OUTPUT); // Set P1-7 to output. On that pin, we sholud connect LED with current limiting resistor
// If we do not specify which IO expander we want to use, by the default external IO
// expander will be used of the one with header named IO Expander 2.
}

void loop()
{
display.expander1.digitalWrite(LED_PIN, LOW); // Set output to low (LED does not light up)
delay(1000); // Wait for one second
display.expander1.digitalWrite(LED_PIN, HIGH); // Set output to high (LED lights up)
delay(1000); // Wait for one second
}

Einige Kommentare in der Datei wurden für andere Inkplate-Boards geschrieben: Inkplate 7SPECTRA hat keinen 1-Bit-Modus, und sein Expander-Header ist mit GPIO EXPANDER beschriftet.

Verwendete Funktionen​

Inkplate()returns None

Erzeugt das Inkplate-Objekt. Inkplate 7SPECTRA hat einen einzigen Sechs-Farben-Modus, daher erwartet der Konstruktor kein Modus-Argument.

ReturnsKonstruktor; kein Rückgabewert.

display.begin()returns void

Initialisiert die Bibliothek und die Peripherie, einschließlich des GPIO-Expanders an der I2C-Adresse 0x20. Rufen Sie die Funktion einmal in setup() auf.

ReturnsNichts.

display.expander1.pinMode(uint8_t _pin, uint8_t _mode, bool _bypassCheck = false)returns void

Legt den Modus eines Expander-Pins fest, wie das Arduino-pinMode().

ReturnsNichts.

Parameter

TypNameBeschreibung
uint8_t_pinExpander-Pin, 0 bis 15, hier IO_PIN_B7 (P1-7).
uint8_t_modeDer Arduino-Pinmodus, hier OUTPUT.
bool_bypassCheckStandardwert ist false.
display.expander1.digitalWrite(uint8_t _pin, uint8_t _state, bool _bypassCheck = false)returns void

Setzt einen Expander-Ausgangspin auf HIGH oder LOW.

ReturnsNichts.

Parameter

TypNameBeschreibung
uint8_t_pinExpander-Pin, 0 bis 15.
uint8_t_stateHIGH oder LOW.
bool_bypassCheckStandardwert ist false.

Was Sie erwarten können​

Die LED an P1-7 blinkt: eine Sekunde aus, eine Sekunde an. Das Display ändert sich nicht, und der Sketch gibt nichts im Serial Monitor aus.

Die Bibliothek verwendet P1-1 für die Batteriemessung und P1-2 für die Versorgung der microSD-Karte. Lassen Sie diese beiden Pins frei; siehe Jumper.

🔗Vollständiges Beispiel öffnen

examples/Inkplate7SPECTRA/Advanced/IO/Inkplate7SPECTRA_External_IO_Expander

→