Rassberry PiでC++とpigpioを使ってLチカをする
ラズパイでC++とpigpioを使ってLチカを行います。調べてもあまり情報が出てこなかったので、自分で書いて備忘録みたいな感じで残そうかなと思って書きました。使ったラズパイは3ModelB+です。ラズパイでのC++実行環境構築とpigpioのインストールは済んでることが前提です。
まず、pigpioのライブラリを見ます。
いろいろな関数が載っていますがLチカするときに使う関数は以下の通りです。
・gpioInitialise():初めに実行する関数
・gpioSetMode( gpiopin, mode ):ピンの設定を行う
・gpioWrite( gpiopin, 0 or 1 ):ピンに信号を送る
各関数の細かい使い方は公式のライブラリを見て下さい。とりあえずgpioが動作するのかをチェックします。
// init.cpp // コンパイル: g++ -Wall -pthread init.cpp -lpigpio -lrt -o init // 実行: sudo ./init #include <iostream> #include <pigpio.h> using namespace std; int main(){ if( gpioInitialise() < 0 ) cout << "pigpio initialise failed\n"; else cout << "pigpio initialise ok\n"; return 0; }
コンパイル方法と実行方法はソースコードに記載している通りです。実行するときにsudoコマンドをつけるのを忘れないように。もし、"pigpio initialise failed"となる場合は、
sudo killall pigpiod
を実行してみてください。これでもダメならわかりません。
正常に動作出来たら次はLチカをします。配線などは割愛。自分は14番ピンにLEDをつなぎました。
#include <iostream> #include <pigpio.h> #include <chrono> #include <thread> #include <stdlib.h> using namespace std; // つないだピン番号を設定 #define PIN 14 int main(){ int i; // 1) 最初にgpioInitialise()を実行する if( gpioInitialise() < 0 ){ cout << "ERROR: gpio initialise failed\n"; exit(1); } // 2) ピンの設定をする。出力したい場合は PI_OUTPUT gpioSetMode( PIN, PI_OUTPUT ); // 3) Lチカする。 for( i=0; i<5; i++ ){ // LEDを光らせる gpioWrite( PIN, 1 ); // 1秒待機 std::this_thread::sleep_for( std::chrono::seconds(1) ); // LEDを暗くする gpioWrite( PIN, 0 ); std::this_thread::sleep_for( std::chrono::seconds(1) ); } return 0; }
上記のソースコードをコピペすれば動くはずです。コンパイル方法と実行方法は最初のプログラムと同じです。プログラムは実行できるのにLEDが点滅しないときは配線が間違っている可能性が高いです。