HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2023/04/20

Arduino用の GPIO駆動の I2Cライブラリ、SoftWireの一覧表、AceWireが良さげ Arduino用の GPIO駆動の I2Cライブラリ、SoftWireの一覧表、AceWireが良さげ

(GPIO driven I2C library for Arduino、List of SoftWire、AceWire is Great)

Tags: [電子工作]




● ESP32-C3は I2Cが 1chしかないので GPIO駆動の SoftWireが必要になりました

 と言う事で安直に Arduinoのライブラリ検索で SoftWireで検索したら
stevemarple / SoftWire
 SoftWire is a software I2C implementation for Arduino and other Wiring-type environments.

 が出てきたのでそれを採用しました。

 そして、その SoftWireは下記の SSD1306Asciiと言う OLEDのライブラリで使用するつもりだったので下記のプルリク(機能強化の改善案)を出しました。
Add support SoftWire for non AVR #108

 すると、SSD1306Asciiの開発者から「SoftWireのライブラリは沢山あるよ。templateを使って実装するつもり」と言う回答と共に主な SoftWireの一覧表を提示してくれました。

 その中のコメントには「AceWireが great resource」と言っております。

 私も一通り眺めた感じでは AceWireは interfaceを使っており、実装的に一番優れていると思いました。(拡張性や横展開が色々可能、但し導入には若干の作法が必要)

 と言う訳で、先ずは SoftWireの一覧を示します。
AceWire 一番良さげESP32-C3と RP2040で動作確認済み
SoftI2CMaster
SWire
Arduino_Software_I2C
SoftWire SoftWireで検索で出てくる奴ESP32-C3で動作確認済み、RP2040では波形にパルスが有り OLEDが動かなかった
SoftwareWire
HardWire-Arduino-Library
SoftI2CMaster

 私が実際に動かして試したのは、
AceWire
SoftWire
 だけです。

● AceWireと SoftWireの比較

 SSD1306Asciiの OLEDのサンプルを SSD1306AsciiWire.hを templateを使う様に改造して比較しました。

ライブラリの種類AceWireSoftWire
ESP32-C3で動く?動く動く
 ESP32-C3 Sketch uses238618 bytes239622 bytes
 ESP32-C3 Global variables16228 bytes16324 bytes
RP2040で動く?動く動かない
 RP2040 Sketch uses54780 bytes55628 bytes
 RP2040 Global variables9008 bytes9100 bytes
AVRで動く?動く動く
 AVR ATmega Sketch uses4492 bytes5952 bytes
 AVR ATmega Global variables463 bytes549 bytes
Arduino UNO R4で動く?動く動く
 Arduino UNO R4 Sketch uses61000 bytes61840 bytes
 Arduino UNO R4 Global variables5756 bytes5844 bytes
 ※ RP2040で SoftWireの場合、波形にパルスが有り OLEDが動かなかった

● AceWireの補足

 RP2040の場合は "Platforms using ArduinoCore-API not supported"で怒られるので
#undef ARDUINO_API_VERSION
 をしています。
 ※ Arduino UNO R4も同様に怒られますが同じ方法で回避できます。
  #include "SSD1306AsciiWireT.h"

  // Blacklist platforms using https://github.com/arduino/ArduinoCore-api due to
  // incompatibilities.
  // #error Platforms using ArduinoCore-API not supported
  #undef ARDUINO_API_VERSION
  #include <AceWire.h>
  using ace_wire::SimpleWireInterface;

  const uint8_t DELAY_MICROS = 1;
  using WireInterface = SimpleWireInterface;
  WireInterface wireInterface(OLED_SDA, OLED_SCL, DELAY_MICROS);
  #define WireOled wireInterface
  SSD1306AsciiWireT<WireInterface*> oled = SSD1306AsciiWireT<WireInterface*>(&WireOled);

● SoftWireの補足

 32バイトの I2C送信バッファをメモリ上に確保しています。
  #include "SSD1306AsciiWireT.h"
  #include <SoftWire.h>

  SoftWire WireOled = SoftWire(OLED_SDA, OLED_SCL);
  SSD1306AsciiWireT<SoftWire*> oled = SSD1306AsciiWireT<SoftWire*>(&WireOled);

  static uint8_t txBuffer[32];
  WireOled.setTxBuffer(txBuffer, 32);



Tags: [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!
ESP32で東方の Bad Apple!!の動画を 128 x 64 dotの OLED SSD1306で再生する!

  ESP32で東方の Bad Apple!!の動画を再生する!実際にはパラパラ漫画です

2.4インチの大画面 OLED SSD1309で東方の Bad Apple!!の動画を再生する
2.4インチの大画面 OLED SSD1309で東方の Bad Apple!!の動画を再生する

  2.42inch 128x64 OLED LCD Display module SSD1309で Bad Apple!!を再生します

SSD1306 OLEDの描画を高速化する方法
SSD1306 OLEDの描画を高速化する方法

  How to Speed Up OLED Drawing Speed

EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法
EPS32の I2Cの SCLの周波数をクロックアップして SSD1306 OLEDの描画を高速化する方法

  OLED SSD1306で I2Cの SCLK周波数をドーピングで高速化して描画速度を爆速にする方法

【技適付き】Freenoveの ESP32-S3-WROOMの Basic Starter Kitを買ってみた、カメラ、SD-Card付きの学習キット
【技適付き】Freenoveの ESP32-S3-WROOMの Basic Starter Kitを買ってみた、カメラ、SD-Card付きの学習キット

  Freenove Basic Starter Kit for ESP32-S3-WROOM Onboard Camera Wireless Python C FNK0084

【技適付き】Freenoveの ESP32-WROVERの Ultimate Starter Kitを買ってみた、カメラ付きの学習キット
【技適付き】Freenoveの ESP32-WROVERの Ultimate Starter Kitを買ってみた、カメラ付きの学習キット

  Freenove Ultimate Starter Kit for ESP32-WROVER Onboard Camera Wireless Python C FNK0047

LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方
LoRa通信を使用してポストに郵便物が投函されるとスマホの LINE宛に通知する IoTの作り方

  LoRaを使用した IoT郵便受け LoRa IoT Mailbox Sensor with LINE Messaging API

ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法
ESP32で Slackに「勤怠管理」メッセージをワンボタン操作で投稿する方法

  Slackの勤怠チャンネルに毎日毎日毎日毎日 手動で投稿するのが馬鹿らしいので ESP32で作った

ESP32-S3で SPIを使う時に Arduinoでエラーが出た話
ESP32-S3で SPIを使う時に Arduinoでエラーが出た話

  ESP32 S3 SPI error VSPI was not declared in this scope

ESP32の I2Sで MCLKが必須の CS4344 DAC Audioを使用する方法
ESP32の I2Sで MCLKが必須の CS4344 DAC Audioを使用する方法

  ESP32で MCLKが必須の CS4344が問題無く使えます

ESP32で SPI接続の Color LCD ST7735S 160x80px IPSを動かす方法
ESP32で SPI接続の Color LCD ST7735S 160x80px IPSを動かす方法

  ESP32 SPI IPS Color LCD ST7735S tutorial

【ソースコード有】ESP32で I2C接続の OLED SSD1306 128x64pxを動かす方法
【ソースコード有】ESP32で I2C接続の OLED SSD1306 128x64pxを動かす方法

  ESP32 I2C OLED SSD1306 tutorial

ESP32-WROOMを購入したらヘンテコ技適マークもどきの基板が届いた話
ESP32-WROOMを購入したらヘンテコ技適マークもどきの基板が届いた話

  Fake ESP32-WROOM Ignore FCC ID and Strange TELEC mark




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2023 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/arduino_libraryi2c_gpio_soft_wire/