CAN通信の活用方法を考えています。 今回テーマは「接点伝送」です。 CANバスを経由で機器を制御するようなことができると思います。 備忘記なんですが、参考に紹介します。 (更に書き足しました) 送信側(入力側)オリジナルスケッチ"CANWrite.ino"の最後の方に "delay(1000)"(1秒)入っています。 これは、1秒間止まって待っているということですから、もったいないと思います。 かといって、入力が変わらないのに高速に送り続けるのもどうかと思います。 変化したときだけ送るとか、実際に機器に使うときは考えましょう。 (少し書き足しました。) 入出力デバイスはIOエキスパンダを使ってみました。 入力はI2CインターフェースのMCP23017、 出力はSPIインターフェースのMCP23S17です。 なんでインターフェースが違うデバイスを使ったの? ピンリストでI2Cの端子と思われるGPIO21ーWIRE_SCL, GPIO22ーWIRE_SDAが、CAN_TX、CAN_RXが割り当てられていたので、 I2Cは使えないと思い込んで、SPIインターフェースを選択した経緯あり。 ESP32の"IO MUXとGPIOマトリックス"機能があって、GPIOピンに割り当てる 機能を変えられる(合ってる?)、ピンリストに表示されているのは、 デフォルトで接続されるGPIOピンかな? CANトランシーバの接続を、GPIO16,17に変えても動くようなので、 GPIO21ーWIRE_SCL,GPIO22ーWIRE_SDAにI2Cインターフェースの MCP23017を接続してもよいのではないかと思います。 SCL、SDAのGPIOピンを変えることもできると思うが、 CAN_TX、CAN_RXを変えるほうが簡単。 準備 ESP32とArduino UNO R4ボードマネージャ、 "Adafruit MCP23017 Arduino library"をインストールしておく。 動作確認のときはPCが2台あると便利です。 ・CAN受信側(出力)MCP23S17を使用した接続 出力側スケッチ サンプルスケッチTWAIreceive.inoへMCP23x17用を組み合わせただけです。 追加する部分だけ 実際の...