Raspberry Pi 3 B+でLチカ 2018.7.17

秋月でRaspberry Pi3 B+は販売されていたので、思わず買ってみました。
ついでに16GのSDカードも入手しました。あわせて6500円程度です。
これでLINUXが動くと思わば安いものです。


RasPi3B+を入手しました。

さて、今回の購入目的はRaspberry PIでIO制御をしてみようと思っています。
というのもパソコンにIOがあると、色々とプログラムを組んで遊ぶことができます。
もちろんPICを使えばいいのですが、ファイルを扱ったり、大量のデータを取り込んだりするのには
すこし適用が難しいところがあります。
 昔ですがPC9801をつかっていたころは、簡単にIOボードを差し込むことができましたが、
WINDOSマシンになってからは、なかなか同じようなことができません。それにWINDOWSだと
プログラムがかなり面倒になりそうです。
 そこでIO端子が直接でているRasPiに目をつけたわけです。

Lチカ用のハードを準備

Lチカ用としては1個のLEDをつければいいだけなので、ブレッドボードにとりつければいいのですが、
折角なので複数のLEDをつけてみました。基板端子の片端から合計14個のLEDをとりつけました。


LEDをとりつけたボードです。

ライブラリを準備

C言語でRasPiのIOを制御するためにのソフトとしてwiringPiがあって便利につかえそうです。
インストールや使い方は検索すれば色々とでてくるので、ここでは割愛しますが、
備忘録代わりにインストール方法は下記の通りです。

sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

問題なく動きました

動画でないとよくわからないのですがLEDが左右に流れるプログラムを組み込んで動作させてみました。

動画でないとわかりませんが、LEDが流れる状態です。


動かしたプログラムはこんな感じ

#include <wiringPi.h>
#include <stdio.h>

// gpio readall

#define GPIO2  (8)
#define GPIO3  (9)
#define GPIO4  (7)

#define GPIO17 (0)
#define GPIO27 (2)
#define GPIO22 (3)

#define GPIO10 (12)
#define GPIO9  (13)
#define GPIO11 (14)

#define GPIO5  (21)
#define GPIO6  (22)
#define GPIO13 (23)
#define GPIO19 (24)
#define GPIO26 (25)

#define GPIO14 (15)
#define GPIO15 (16)
#define GPIO18 (1)

#define GPIO23 (4)
#define GPIO24 (5)

#define GPIO25 (6)
#define GPIO8 (10)
#define GPIO7 (11)

#define GPIO12 (26)

#define GPIO16 (27)
#define GPIO20 (28)
#define GPIO21 (29)

int u_sleep(int n)
{
while(n--){};
}

#define DELAY_TIME (6000000)

void const_delay()
{
u_sleep(DELAY_TIME);
}

int main (void)
{
int pin[30],i,j;

   pin[0] = GPIO2;
   pin[1] = GPIO3;
   pin[2] = GPIO4;
   pin[3] = GPIO17;
   pin[4] = GPIO27;
   pin[5] = GPIO22;
   pin[6] = GPIO10;
   pin[7] = GPIO9;
   pin[8] = GPIO11;
   pin[9] = GPIO5;
   pin[10] = GPIO6;
   pin[11] = GPIO13;
   pin[12] = GPIO19;
   pin[13] = GPIO26;

    if (wiringPiSetup() == -1)
        return 1;
    printf("setupOK\n");

for(i=0;i<14;i++) pinMode(pin[i], OUTPUT);

    i=10;
    while (i)
    {
   for(j=0;j<14;j++) {digitalWrite(pin[j], 1); const_delay();}
   for(j=0;j<14;j++) {digitalWrite(pin[j], 0); const_delay();}
    for(j=13;j>=0;j--) {digitalWrite(pin[j], 1); const_delay();}
   for(j=13;j>=0;j--) {digitalWrite(pin[j], 0); const_delay();}
   i--;
    }

    return 0;
}

コンパイル方法は
gcc -o test test..c -lwiringPi
です。ポイントは -lwiringPiで必要なライブラリをリンクしておきます。

さてさて

まずはRasPiのIOをC言語で制御できることがわかりました。
最終的に何がしたいかというと、簡単なNCフライスをつくろうかと妄想しています。
というのもケースを加工するときに、穴をあけるならドリルやボール盤で済みますが、
LCDや電源インレットのような四角の穴を開けるのフライスがあると便利です。
まあ、完成はいつになるかわかりませんがまずはIOが直接制御できるコンピュータが
準備できるということまでは確認できました。

(まずは、おしまい)