2017-04-06 12 views
0

私は簡単なプッシュボタンを作ってBBBを使って誘導しようとしていました。しかし、私の質問は、私はボタンを押す前にオフになっているはずだが、これを使ってコードを実行するとLEDが自動的にオンになり、ボタンを押すとオフになる。プルアップ/ダウン抵抗をcd /sys/class/gpio/gpio44/ - echo 0 > valueで設定しようとしていますが、その "動作が許可されていません"という警告が常に表示されます。誰か助けてくれますか?ここに私のコードです:ビーグルボーンブラックのプルアップ/ダウン抵抗を設定

#include <stdio.h> 
#include <stdlib.h> 
#include <signal.h> 
#include <unistd.h> 
#include <time.h> 

void sig_handler(int signo) 
{ 
    if (signo == SIGINT) 
    printf("\nRecieved SIGINT\n"); 
    exit(1); 
} 

void GPIOREAD(char *url, char* val) 
{ 
    FILE *path = fopen(url,"r"); 
    fread(val, 2, 1, path); 
    fclose(path); 
} 

int main(void) 
{ 

    int status; 
    unsigned int cnt=0; 

    status = access("/sys/class/gpio/gpio44/value", F_OK); 
    if (status == -1) 
     { 
      //file doesnt exist 
      printf("GPIO_44 file doesnt exist dude\n"); 
      exit(1); 
     } 

    status = access("/sys/class/gpio/gpio45/value", F_OK); 
    if (status == -1) 
     { 
      //file doesnt exist 
      printf("GPIO_45 file doesnt exist dude\n"); 
      exit(1); 
     } 


    //set GPIO 45 as output 
    system("echo in > /sys/class/gpio/gpio44/direction"); 
    system("echo out > /sys/class/gpio/gpio45/direction"); 
    sleep(1); 

    char val[10]; 

    while(1) 
     { 
      GPIOREAD("/sys/class/gpio/gpio44/value", val); 
      printf("BUTTON STAT %s\n", val); 

      if(!strcmp(val,"1\n")) 
      { 
       printf("%u) AAA LED --- ON\n", cnt); 
       system("echo 1 > /sys/class/gpio/gpio45/value"); 
      } 
      else 
      { 
       printf("%u) AAA LED --- OFF\n", cnt); 
       system("echo 0 > /sys/class/gpio/gpio45/value"); 
      } 
     } 

    return 0; 
} 

答えて

0

あなたはrootとして実行していますか?通常、/ sys/class/gpioのファイルはrootによって所有されているため、単にアクセス権の問題がある可能性があります。あなたのコードの中で、ファイル操作とシステム(3)の混在は珍しいことです。ファイル操作だけに焦点を当ててもっと幸せになるかもしれません(ただし、それでもrootとして実行する必要があります)。がんばろう。

+0

私は既にrootとして実行していますが、それでも警告を表示しています。そのファイルもすでにrwx – user6318361

+0

OKです。 GPIOの方向はどうですか?それは "out"でなければならないか、値を更新することを許可しません。 – guycole

+0

私は既にそれを入力するように設定しましたが、デフォルト値は1ではありません0 – user6318361

関連する問題