Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním z nich je rozšíření EXT.IO. Tento modul obsahuje I2C extender PCA9554, který nám přidá 8 digitálních vstupně-výstupních pinů.

M5stack jednotka rozšíření EXT.IO s PCA9554

Pro jeho spojení s M5stack deskou stačí propojit 4 vodiče nebo použít Grove konektor PortA. Propojíme GND s GND, VCC s pinem 5V, SDA s pinem D21 a SCL s pinem D22. Piny pro I2C sběrnici SDA a SCL můžete připojit i na jiné volné GPIO piny, jen je nutné provést změnu taky na začátku programu.

Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu:

// M5 stack a jednotka EXT IO
// Jednotka rozšiřující sběrnicí 8 pinů
// navody.dratek.cz

// připojení potřebných knihoven
#include <M5Stack.h>
#include "PCA9554.h"
// vytvoření objektu z knihovny
PCA9554 extIO(0x20);  // Create an object at this address
// proměnná pro uložení čteného výsledku
byte vysledek;

void setup() {
  // zahájení komunikace s M5 stack
  M5.begin();
  // zahájení komunikace s napájecím čipem
  M5.Power.begin();
  // vypnutí reproduktoru
  dacWrite(25, 0);
  // zahájení komunikace po I2C sběrnici
  Wire.begin();
  // vyčištění obrazovky a vypsání informací
  M5.Lcd.clear(BLACK);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setCursor(70, 0);
  M5.Lcd.print("EXT_IO ukazkan");
  M5.Lcd.setCursor(5, 20);
  M5.Lcd.print("Pripojte jednotku do PortA");
  M5.Lcd.setTextColor(WHITE);
  // nastavení komunikačních I2C pinů
  extIO.twiWrite(21, 22);
  delay(10);
  // nastavení funkce pinů
  //extIO.portMode0(ALLOUTPUT); //Set the port as all output
  extIO.pinMode0(0, OUTPUT);
  extIO.pinMode0(1, INPUT);
}

void loop() {
  // ukázka zápisu na jednotlivé piny
  extIO.digitalWrite0(0, HIGH);
  delay(1000);
  extIO.digitalWrite0(0, LOW);
  delay(1000);

  // ukázka čtení stavu celého portu
  // a výpis v binárním kódu
  extIO.digitalReadPort0(vysledek);
  Serial.print("Vysledek: ");
  Serial.println(vysledek, BIN);
  // vymazání předchozího textu pomocí černého obdélníka
  M5.Lcd.fillRect(160, 25 + 40, 100, 25, BLACK);

  M5.Lcd.setCursor(160, 25 + 40);
  M5.Lcd.print(vysledek, BIN);
}

Sestřih ze streamu:

Celý záznam:

Na eshopu můžete tento M5stack modul zakoupit zde:
https://dratek.cz/arduino/20932-m5stack-i-o-rozsireni.html

FB tw

Další podobné články