もよいめも

不定期更新ものづくりブログ


【Raspberry Pi Pico】 Arduino IDEでI2cを動かしたい!

割と前に登場していたRaspberry Pi Picoですが、ついに私の手元にもやってきましたので色々試してみました。
開発環境はもちろんArduino IDE!(Arduino IDE 2.0.0 beta8)。割とそのまま使えるという噂を聞いていまいたので、使い慣れた環境で開発してました。

噂通り、大体のプログラムも、ライブラリーもそのままで動きましたが、意外と引っかかったのがまさかのI2c...

まだ出て間もないせいか、調べても「これだ!」という結果はなかなか見つかりませんでした。

ということで、Arduino IDEでのRaspberry Pi Pico開発の繁栄を願ってこの記事を書いております。

開発環境の構築

github.com
こちらのページにボードの追加方法等が書いてあります。(英語)
もちろん「Raspberry Pi Pico Arduino IDE」で調べれば日本語の記事も出てきますのでアメリカ語がわからない人はそちらを確認してください。

マイコン本体に初めてプログラムを書き込む場合は色々やらなくちゃいけません。
Uploading Sketchesの項目に詳細が書いてありました。
ちなみに、パソコンの具合によって書き込めたり書き込めなかったりする謎仕様です。(コレガワカラナイ)

I2cを使うぞ!!

さて本題。Raspberry Pi PicoのI2cをArduino IDEで動かします。
プログラムはこちらから引用。部品も同じものを使用します。
【Arduino】LCDにi2cでカタカナを簡単に表示させる方法 - 高専ガチ勢のメモ書き
素晴らしいことに、まんまで動きます。

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);//左から(アドレス,LCDの列の長さ,LCDの行の長さ)となっています。
                                 //アドレスは「0x27」と「0x3F」の場合があります

void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print("Hello,world!");
  lcd.setCursor(3,1);
  lcd.print("\xba\xdd\xc6\xc1\xca\xa4\xbe\xb6\xb2!");//コンニチハ、セカイ!
}


void loop()
{
  
}

接続方法は非常にかんたん

f:id:moyoi:20210720210130p:plain
接続方法

黒がGND、赤がVCCです。

VCC--->VSYS
GND--->GND
SDA--->GP4
SCL--->GP5

余談

とりあえずのメモ書きなのでテキトーなのは勘弁してください。
データシートを見るI2c対応ピンはめちゃめちゃあるようですが、標準だとGP4とGP5が割り当てられています。

Wire.setSDA(8);
  Wire.setSDA(9);

こいつをWire.begin();の前に書くことでI2cのピンを変えられるらしいですが、自分の環境だと通信できないし、Raspberry Pi Picoがパソコンに認識されなくなるというおまけ付きです。うーんこの
(そういうときはBOOTモードで起動させてシリアル通信系の処理を入れたバイナリファイルを突っ込めば治りますが)

とりあえず、まだRaspberry Pi Picoは私に心を開いてくれないので、気長に付き合っていこうかと思います。とほほ...