raspberry piのLチカについてです.
wiringPiをインストールし,C言語でLチカさせようとし,コンパイルして実行したところ,動作しない症状が出ました.
そのため,ファイル操作を用いてLチカを試みたところ,指定したGPIOとは異なる場所から信号が出力されました.具体的には,GPIOで指定したピンではなく,ターミナルで"GPIO readall"を入力したときに出力されるピン表の"BCM"に準拠したピンから出力されます.
なにが原因なのかがわかりません.どうしたらよいのでしょうか.以下にLチカプログラムのソースコードを載せておきます.
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc, char **argv) { int fd = 0; //GPIO25の使用開始を指定する //GPIOの宣言はBCMとかじゃなくて単純にGPIOでいい //やっぱりBCMの番号じゃないとダメ fd = open("/sys/class/gpio/export", O_WRONLY); if (fd < 0) { printf("GPIO export open error.\n"); exit(1); } write(fd,"25",3); close(fd); //0.1秒待つ(次のオープンでエラーになった場合があったため) usleep(100000); //GPIO25を出力に指定する fd = open("/sys/class/gpio/gpio25/direction", O_WRONLY);//O_WRONLYってなに! if (fd < 0) { printf("GPIO direction open error.\n"); exit(1); } write(fd,"out",4); //OK完全に理解した(ポプテピ) close(fd); //GPIO25に1を出力する(LED ON) fd = open("/sys/class/gpio/gpio25/value", O_WRONLY); if (fd < 0) { printf("GPIO value open error.\n"); exit(1); } write(fd,"1",2); //3秒待つ usleep(3 * 1000 * 1000); //GPIO21に0を出力する(LED OFF) write(fd,"0",2); close(fd); //GPIO25の使用終了を指定する fd = open("/sys/class/gpio/unexport", O_WRONLY); if (fd < 0) { printf("GPIO unexport open error.\n"); exit(1); } write(fd,"25",3); close(fd); return 0; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/24 04:40
2019/05/29 03:38