まずはLチカから
![](https://www.cloverfield.co.jp/wp/wp-content/uploads/2019/04/ra-150x150.jpg)
前回、半田付けで大苦戦し、ラズパイとブレッドボードとの接続キットを2つも破壊してしまった私でしたが、3つ目にしてやっと使えるものが完成しました(最後は高木の手を借りることとなりましたが)。これで、ようやく回路の作成やプログラミングに取り掛かれます。
最終的には、距離センサなどを使ったものを作ろうと計画していますが、今回が初めての電子工作プログラミングということで、まずは基礎から。いわゆるLチカから始めます。
ラズパイで使うプログラミング言語は、Pythonが最もメジャーな感じですが、今回、私はC言語を使いたいと思います(後々、C++も使うかも)。C言語は、私が最初に触れたプログラミング言語でありますが、現在はC#を使うことが圧倒的に多く、仕事においても扱うのも、個人的にちょっとしたツールを自作するのに使うのもC#といった感じです。あと、時々C++を触ったり、たまにJavaScriptを触ったりもします。C言語はというと、かなりご無沙汰。家でWindows上で動作するプログラムを書こうとする場合、どうしてもC言語が選択肢としてあがりにくいんですよね。というわけで、C言語に長く触れていない間に忘れてしまっていることも多くあるかもしれません。色々と思い出しながら、作業を進めていくことになるかもしれないです。
今回作成してみたプログラムを紹介します。出力だけでなく入力もしてみようとLチカに少し味付け。トグルスイッチをON/OFFすることでLEDの点滅、非点滅が切り替わるものにしました。回路としては、ラズパイの4ピンをLEDに接続して出力に使い、3ピンをトグルスイッチに接続して入力に使うといった感じです。
ラズパイのGPIOをC言語で制御するためのライブラリであるWiringPiをインストールした上で、下記のコードをtest.cとして作成し、下記のMakefileでコンパイルします。
test.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <wiringPi.h> int main(void){ if(wiringPiSetupGpio() == -1) // 初期化処理 return 1; pinMode(4, OUTPUT); // 4ピンを出力に設定 pinMode(3, INPUT); // 3ピンを入力に設定 while(1){ if(digitalRead(3)) // 3ピンの入力が0でなかったらdigitalWrite(4, 0)以下の処理を行わない continue; digitalWrite(4, 0); // 4ピンに0を書き込み delay(200); // 200ミリ秒待機 digitalWrite(4, 1); // 4ピンに1を書き込み delay(200); // 200ミリ秒待機 } digitalWrite(4, 0); return 0; } |
Makefile
1 2 | all: gcc -I /usr/local/include test.c -L/usr/local/lib -lwiringPi |
これを動かした時の動画がこれです。
これで、最も基礎的な部分であるGPIOの入出力のやり方はわかりました。あとはこれを応用していくこととなります。半田付けに比べたら大分すんなりできました。