Raspberry PiでIoTなシステム開発:オンボードLEDのコントロールはBCMナンバーで、WiringPiのコントロールは独自のナンバーで
当たり前のことではあるのですが、PiでGPIOを指定するときはコアであるBCMの番号が原則です。が、WiringPiは何故かGPIOに対して独自の付番をしているので、対照関係が結構ややこしいです。ヘッダピンの番号がさらにまた別になっています。で、今回オンボードLEDのコントロールのため、以下のコマンドでGPIOに対応させるようにしたのですが、このコマンドはBCMの番号で指定します。
system(""echo gpio | sudo tee /sys/class/leds/led0/trigger""); system(""echo 21 | sudo tee /sys/class/leds/led0/gpio"");一方このGPIOをWiring PiでコントロールするときはWiring PiでコントロールするときはWiring Piの番号でコントロールします。
while(1) { digitalWrite(29, 1); usleep( 50000); digitalWrite(29, 0); usleep(950000); }コード上ではWiring Piの世界とBCMの世界の区別がぱっと見ではわかりにくいので、気をつけた方がいいですね。”””
ピン番号を選ぶ場合
本文の対比は既定のwiringPiSetup()でWiringPi番号を使った例です。wiringPiSetupGpio()ならBCM番号、wiringPiSetupPhys()ならヘッダの物理番号を使うため、WiringPiだから常に独自番号とは限りません。オンボードLEDの接続や制御方法も基板ごとに異なります。