Raspberry Pi のGPIOでLEDを点灯させてみた
久しぶりにRaspberryPiを触ってみました。 Broadcom社のBCM2835というPeripheralチップが搭載されており、その一部の端子がヘッダピンに結線されています。ADC端子が無いのは非常に残念ですが、GPIO、UART、I2Cでハードウェア拡張が可能になっています。 BCM2835のデータシート ヘッダピンの端子アサイン情報 手始めとして、GPIOにLEDを接続してC言語で点滅させてみました。 ●回路(僅かこれだけです・・・) ●プログラム概要 gpio_open() BCM2835のレジスタへアクセスする準備を行います。 システムコールopen システムコールmmap …BCM2835のGPIOレジスタ群のアドレスは0x20200000番地~です。 main() gpio_open() LEDを接続したヘッダP1の26番ピン(GPIO7)を出力モードに設定します。 while(1){ GPIO7にHighレベルを出力します。 sleep() 時間待ち GPIO7にLowレベルを出力します。 sleep() 時間待ち } ●コンパイル $gcc gpio1.c コンパイルが通ると a.out が生成されます。 ●実行 $./a.out と実行すると、システムコールopenでエラーが発生し、「can't open. Permisson denied」と返ってきます。 $sudo ./a.out と管理者権限で実行させます。 実行停止はキーボードからCtrl-cです。 ================================================================================= ソースコード gpio1.c #include <stdio.h> #include <unistd.h> #include <string.h> #include <errno.h