Ich habe versucht, einen einfachen Druckknopf zu machen und führte mit BBB, und ich habe es geschafft, damit es funktioniert. Aber meine Frage ist, dass die LED ausgeschaltet sein sollte, bevor ich den Knopf drücke, aber damit wird die LED automatisch eingeschaltet, wenn ich den Code starte, und ausgeschaltet, wenn ich den Knopf drücke. Ich versuche, den Pull-Up/Down-Widerstand durch cd /sys/class/gpio/gpio44/ - echo 0 > value
zu setzen, aber es erscheint immer die Warnung "Operation nicht erlaubt". Kann mir jemand helfen? Hier ist mein Code:Set Pull Up/Down Widerstand auf Beaglebone Black
#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;
}
Ich führe es bereits als root, aber immer noch .. es halten mich die Warnung, auch die Datei drin schon rwx – user6318361
OK, gut zu wissen. Wie sieht es mit der GPIO-Richtung aus? Es muss "out" sein oder wird Ihnen nicht erlauben, den Wert zu aktualisieren. – guycole
ich habe bereits festgelegt, dass eingegeben werden soll, aber der Standardwert ist 1 nicht 0 – user6318361