電電高専生日記

RaspberryPiでC++をコンパイルして実行

2015/02/14 21:42

RaspberryPiC++をコンパイル・実行などしてみました。
大したことはやってませんが、調べてやったことをメモしておく感じです。

C++プログラム作成

まず適当なところにcppファイルを作成。Raspberry上のエディタとして、vimはモードだのなんだの分かりにくいので、私はnanoを使ってます。

$ sudo nano main.cpp

で、以下のようなテスト的入出力プログラムを書きました。

#include <stdio.h>
int main(){
        int a;
        printf("整数値を入力してください\n");
        scanf("%d", &a);
        printf("入力した数値は%d\n", a);
        return 0;
}

コンパイル

OS RaspbianにはC++のコンパイラg++が標準で搭載されているらしいです。コンパイルにはこれを使いました。
オプションoでコンパイルした出力ファイルの名前をIO_TESTと指定します。

$ g++ main.cpp -oIO_TEST

※追記(2015年2月26日)
コンパイルするファイルがcppではなくcのときにg++コマンドだとうまく行かないことがあったが、 gccコマンドにしたらうまくいった。メモ。

実行

出力されたファイルの頭に./を付けて実行。「./」を付けなければならない意味は理解してませんが、そういうものだという程度に考えておきます。
で、55と入力すると、55と出力されました。

./IO_TEST
整数値を入力してください
55
入力した数値は55

とりあえずこれでC言語のコンパイル&実行は終わりです。

wiringPi.hを使う

GPIOの制御を行うライブラリwiringPiのC言語用ライブラリです。
(調べたところPHP用ライブラリもあった。exec()関数のシェル実行でGPIOコマンド叩いてやってたのが馬鹿らしくなる。)

wiringPi.hをインクルードして、以下のようなプログラムを書きました。GPIO端子21の出力を1秒ごとにH/Lと切り替えるものです。

#include <wiringPi.h>
#include <stdio.h>
int main(){
        // WiringPi初期化
        if (wiringPiSetupGpio() < 0) { 
                printf("GPIO ERROR\n");
                return 0;
        }
        const int pin=21;
        pinMode(pin,OUTPUT); //出力モードに切り替え
        while (1){
                digitalWrite(pin, 1); //Hレベルに出力切り替え
                delay(1000);
                digitalWrite(pin, 0); //Lレベルに出力切り替え
                delay(1000);
        }
        return 0;
}

コンパイル時は、lオプションでwiringPiを指定します。

$ g++ main.cpp -oflash -lwiringPi

で、実行すると、以下のような文が表示されました。
wiringPiSetup: Must be root. (Did you forget sudo?)
wiringPi(の初期化か?)を使うには管理者権限が必要らしいので、sudoをつけます。

$ sudo ./flash

GPIO21番ピンとGNDピン間にLEDを入れると、1秒ごとに点滅しました。
このプログラムは永遠にループとなるので、Ctrl+Zで終了します。

これで今後何するか

シリアル通信型のADコンバータ・DAコンバータICを購入したので、今度はそれらを使う練習をしたいと思います。
電子工作を行うにあたり、AD変換・DA変換は多分に必須の技術だと思いますので…

参考にさせていただいたサイト・本

  • このエントリーをはてなブックマークに追加

最新記事

コメント(0)





プロフィール

名前:elkosendiary

性別:男

生年:1995年


2011年4月 高専入学
2016年3月 高専卒業
2016年4月 大学編入学
2018年3月 大学卒業予定

にほんブログ村 大学生日記ブログ 理系大学生へ
にほんブログ村

カテゴリ
Adsense
月別アーカイブ
ブログ内検索

アクセス

昨日のPV数:
全期間PV数:

おすすめ記事

「高専大学編入ログ」を作成しました

自作ゲーム「Defend PortMoresby!」バージョン3

【改良版】 RaspberryPiで作ったカメラ付き戦車ラジコン