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;
}
私は既にrootとして実行していますが、それでも警告を表示しています。そのファイルもすでにrwx – user6318361
OKです。 GPIOの方向はどうですか?それは "out"でなければならないか、値を更新することを許可しません。 – guycole
私は既にそれを入力するように設定しましたが、デフォルト値は1ではありません0 – user6318361