아틱과 버튼 사용 예제 (아틱 IDE 사용)

메이커 2018-09-11 (화) 09:23 5년전 2192  

아틱과 디지털 입력 (버튼 사용하기)

1)    회로도

 

1f7c3ee5d7e718d5cf0b1a77c77892dc_1536642
 

 

사용할 핀은

sysfs GPIO 30 for SW403 (next to board edge, alongside Red LED)

sysfs GPIO 32 for SW404 (alongside Blue LED)

 

2)    아틱 IDE 사용시

File – New – C Project로 새로운 프로젝트를 생성합니다.

 

1f7c3ee5d7e718d5cf0b1a77c77892dc_1536642
 

 

1f7c3ee5d7e718d5cf0b1a77c77892dc_1536642
 

새로 생성된 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;

}





1f7c3ee5d7e718d5cf0b1a77c77892dc_1536642
 

위의 망치 모양을 클릭해서 빌드(build)합니다.
 

메카리워즈 Image Map


모바일 버전으로 보기