Hi,
i am new to beagle bone black board..
i flashed new Debian Image to BBB and worked on simple LED blinking program
in C. it is working fine(external LED connected in bread board), in Linux
ubuntu
next example i am trying to control that external LED using external switch
:
like this :
system("echo out > /sys/class/gpio/gpio68/direction) for LED.
system ("echo in > /sys/class/gpio/gpio67/direction) for switch.
You don't really need to fork a process like that. You can just do this
direcly in C:
#include <stdio.h>
typedef enum direction {in, out} Direction;
void SetDirection(int GPIO, Direction dir)
{
char filename[36];
FILE *fp;
snprintf(filename,sizeof(filename),"/sys/class/gpio/gpio%d/direction",GPIO);
fp = fopen(filename,"w");
switch (dir) {
case in: fprintf(fp,"in\n"); break;
case out: fprintf(fp,"out\n"); break;
}
close(fp);
}
Then in your code:
#define LED 68
#define SWITCH 67
SetDirection(LED,out);
SetDirection(SWITCH,in);
using these coding lines i am making LED high and Low in C file
system("echo 1 > /sys/class/gpio/gpio68/value)
system("echo 0 > /sys/class/gpio/gpio68/value)
typedef enum value {LOW=0, HIGH=1} Value;
void WriteGPIO(int GPIO, Value v)
{
char filename[32];
FILE *fp;
snprintf(filename,sizeof(filename),"/sys/class/gpio/gpio%d/value",GPIO);
fp = fopen(filename,"w");
fprintf(fp,"%d\n",(int) v);
close(fp);
}
Then in your main program:
WriteGPIO(LED,HIGH); /* Led on */
WriteGPIO(LED,LOW); /* Led off */
based on the switch status i need to make LED ON and LED OFF...
how to read the state of GPIO in beagle bone black in C file???
How about this:
Value ReadGPIO(int GPIO)
{
char filename[32];
FILE *fp;
Value v;
snprintf(filename,sizeof(filename),"/sys/class/gpio/gpio%d/value",GPIO);
fp = fopen(filename,"r");
fscanf(fp,"%d",(int *)&v);
close(fp);
return (v);
}
Then:
if (ReadGPIO(SWITCH) == HIGH) {
/* switch input is high ... */
}