아틱과 버튼 사용 예제 (C언어 사용)

메이커 2018-09-11 (화) 09:23 6년전 2866  

 

본 튜토리얼의 전체 PDF는 다음의 링크에서 참고하실 수 있습니다. 

 

https://goo.gl/JVMp9q 

 

 

1)    C언어

 

[ ~ ]# nano button.c

 

 

 

“button.c”라는 C코드를 만들고 다음의 프로그램을 복사해 넣습니다.

 

 #include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

#include <unistd.h>

 

#define HIGH 1

#define LOW 0

#define INPUT 1

#define OUTPUT 0

 

int inputPin = 30;

 

bool digitalPinMode(int pin, int dir){

  FILE * fd;

  char fName[128];

  

  // Exporting the pin to be used

  if(( fd = fopen("/sys/class/gpio/export", "w")) == NULL) {

    printf("Error: unable to export pin\n");

    return false;

  }

  fprintf(fd, "%d\n", pin);

  fclose(fd);

 

  // Setting direction of the pin

  sprintf(fName, "/sys/class/gpio/gpio%d/direction", pin);

  if((fd = fopen(fName, "w")) == NULL) {

    printf("Error: can't open pin direction\n");

    return false;

  }

  if(dir == OUTPUT) {

    fprintf(fd, "out\n");

  } else {

    fprintf(fd, "in\n");

  }

  fclose(fd);

 

  return true;

}

 

int digitalRead(int pin) {

  FILE * fd;

  char fName[128];

  char val[2];

 

  // Open pin value file

  sprintf(fName, "/sys/class/gpio/gpio%d/value", pin);

  if((fd = fopen(fName, "r")) == NULL) {

    printf("Error: can't open pin value\n");

    return false;

  }

  fgets(val, 2, fd);

  fclose(fd);

 

  return atoi(val);

}

 

int setup() {

   if (!digitalPinMode(inputPin, INPUT))

     return -1;

 

   return 0;

}

 

int main(void) {

  if (setup() == -1)

  {

    exit(1);

  }

  while(1) {

    int sensorVal;

    sensorVal = digitalRead(inputPin);

    printf("sensorVal is %d\n", sensorVal);

    sleep(1);

  }

 

  return 0;

}


 

저장한 후에, 컴파일하고 실행하기 위해서 다음의 코드를 입력합니다.




[ ~ ]# gcc button.c -o button

[ ~ ]# ./button

 

 

메카리워즈 Image Map


모바일 버전으로 보기