niszetの日記

10年目エンジニアが最近勉強したことを忘れないようにメモをする

(R/Rcpp/WiringPi/RasPi3) R on ラズパイで Lチカする。完結編

ようやくこのシリーズも終わり

長い道のりでしたが、ラズパイ上のR/RcppでwiringPiを使用することで、Lチカを確認できました。
前回のwiringPiをRcppから呼び出せた時点でほぼ完了していたわけですが、まぁけじめとしてちゃんとLチカさせないとね…ということで。

本題

さて、cppのソースは以下の通り。

#include <Rcpp.h>
#include <wiringPi.h>

using namespace Rcpp;

// [[Rcpp::export]]
int l_chika(NumericVector v)
{
  wiringPiSetup();
  pinMode(pin, OUTPUT);

  int pin =15;
  int cnt = 0;

  while(cnt < 5){
    digitalWrite(pin, 1);
    delay(500);
    digitalWrite(pin, 0);
    delay(500);
    cnt++;
  }
  return(0);
}

今回、ピンの番号をwiringPiの使用している番号を示すためにwiringPiSetup();を入れています。これがないと他の指定方法になってしまいますので注意。15番は右列の上から4番目、GPIO14でありPIN番号8であり、TXD0であるピンのことを指しています。

回路図がないと意味不明ですが、このIOの出力とGNDとの間にLEDと電流制限用の抵抗を入れています。GNDは右列三番目、PIN番号06を使用しています(20とか14とかでももちろんOKです)

これで500ms毎にLEDが光ったり消えたりをします。while(1)でも良かったのですが抜けられないと怖いのでまた適当にカウンタ回しています。引数のvは例のようにダミーの引数。今回はこれを秒に変えても良かったですね。

ここまで書いて気づきましたが、プログラム側だけではなんだかよくわかりませんね。最低限ハード側の接続や説明がないとなんのことやら…。

動画か、回路図か何かがないといけない…という課題を残しつつも、ひとまずこれにてラズパイ上でRを動かしてハードウェアの制御をおこなう部分については一旦区切りとします~

とはいえ、まだこれは入り口に過ぎないので、少しずつ何かやっていきます。

さて、次は何をしようかな。

Rcppを活用すれば、Rでもラズパイ使っていろいろ出来ることが伝わればいいなと思います。

Enjoy!!