WiringPi 2.70をRaspberry Pi OS(Bullseye)にインストールとLチカ、Busterにも

## はじめに
　WiringPiは自営ICTコンサルタントのG.Henderson氏によって作成されたRaspberry Pi用のGPIO インタフェースライブラリで、GNU LGPLv3 というフリーソフトウェアライセンスとして公開されています。フリーソフトウェアラインセスとは、無料で使用できますが不具合が発生した場合は（基本的に）ユーザーの自己責任となるのですが、G.Henderson氏への問合せのemailがあまりに多く、本業に支障を来したためWiringPiのバージョン2.52で公開を停止する旨がWiringPiのWebページにポストされました。なお、2023年3月30日時点ではそのポストは削除されています。WiringPi2.52はBullseyeの32bitOSでは動作するのですが、64bitOSではインストール時にエラーが発生して使用できません。
　その後、contributorsによってGitHubにWiringPiのUnofficial Mirror/Forkサイトが立ち上がり、G.Henderson氏のWiringPiの開発を継承する主旨が明記されています。UnofficialとしているのはG.Henderson氏個人に迷惑をかけいない配慮にも思えます。（contributorsの中にG.Henderson氏の名前があります。）また、Discordチャットアプリを使用してWiringPiのコミュニティが形成されて、意見や相談の受け皿になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631966/407f60c6-615b-5aa9-5905-e26195ea5f4a.png)
https://github.com/WiringPi/WiringPi
　今回、WiringPi2.70を64bit版OS Bullseyeにインストールして、取り敢えずLチカで動作確認できたので報告します。32bit版のOSでも同じ手続きで動作確認できました。
## 使用したもの
・Raspberry Pi 4B
・Raspberry Pi OS(Bullseye) 32bitまたは64bit リリース2023-02-21
・microSDカード　容量16～64GB、Class10。
・microSDカードリーダー　
・Lチカ用電子部品一式
ImagerでSDカードにOSをセットアップする方法は下記を参照してください。記事は1年以上が経過していますが操作方法は同じで、メニューからBullseye OSを選択してください。
https://qiita.com/tamamori/items/da96cc3352159be12423
## WiringPiのインストールの方法
　LXTerminal(ターミナル)を起動して、GitHubからダウンロードしてインストールします。あらかじめ、Raspberry Piをインターネットに接続して、リソースをダウンロードできるようにします。
```
//GitHubからダウンロードします。
$ git clone https://github.com/WiringPi/WiringPi.git
//WiringPiのディレクトリが作成されたことを確認します。
$ dir
Bookshelf  MyApp     ダウンロード  ドキュメント  音楽  公開
Desktop    WiringPi  テンプレート  ビデオ	 画像
//作成されたWiringPiのディレクトリに移動。WiringPiのWが小文字のときがありました。
$ cd WiringPi
//ソースコードをビルドします。途中ワーニングが数カ所表示されますが、All Doneになります。
$ ./build
//バージョンを確認します。
$ gpio -v
gpio version: 2.70
```
## アンインストールの方法
WiringPiをアンインストールする場合は次の手順です。
```
$ cd WiringPi
$ ./build uninstall
```
## Lチカの回路図
　ブレッドボード等に下記のLチカの回路を組み立てます[1]。ここではGPIO23を使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631966/88a77de3-0be8-eb01-ddfe-65b68522ff5a.png)
## Lチカのソースコード
ホームディレクトリに適当なディレクトリを作成して移動し、Lチカのソースコードを作成して保存します[1]。
```List4-1_Led01.c
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define LED0 23				
int main (void){
	wiringPiSetupGpio();			
	pinMode(LED0, OUTPUT);		
	for(;;){						
		digitalWrite(LED0,HIGH);	
		delay(500);				
		digitalWrite(LED0, LOW);	
		delay(500);
	}
	return EXIT_SUCCESS;
}
```
## コンパイルと実行
```コンパイルと実行
$ gcc -Wall -o List4-1_Led01 List4-1_Led01.c -lwiringPi -O0
$ ./List4-1_Led01
//実行の終了はctrlとCを同時に押します。
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631966/6885990a-e8e8-57c7-63fe-510785514886.png)
## おわりに
　今回はLチカしか確認していませんが、不明があればWiringPiのDiscordチャンネルをご利用ください。
For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/631966/462b4cc8-db70-8900-7ebb-ded1a28a494f.png)
## 補足：旧OS BusterにWiringPi 2.70をインストールする場合
Bullseyeの一つ前のバージョンであるBusterにも、WiringPi2.70をインストールできます。BusterにはあらかじめWiringPi2.50が含まれていることがあるので、古いWiringPiをアンインストールする必要があります。なお、WiringPiがインストールされているかどうか確認する方法は、ターミナルから「＄ gpio -v」と入力して、WiringPiのバージョンが表示されたらインストールされています。また、gpioコマンドが無効の表示ならインストールされていません。下記の手続きで、古いWiringPiをアンインストールしてから、WiringPi2.70をGitHubからダウンロードしてインストールしてください[2]。
```WiringPi 2.5x アンインストール
//purgeコマンドは、パッケージとそのパッケージの環境設定をすべて削除
$ sudo apt purge wiringpi -y
//ハッシュテーブルに記憶しているパス情報を消去
$ hash -r
```
## Reference
[1]  菊池達也,"[C言語ではじめるRaspberry Pi徹底入門](https://gihyo.jp/book/2020/978-4-297-11299-8)",技術評論社,pp.68-72,(Apr.2020)
[2] Download and Install,http://wiringpi.com/download-and-install/