Presentation is loading. Please wait.

Presentation is loading. Please wait.

GPIO RaspberryPi Sejin Oh.

Similar presentations


Presentation on theme: "GPIO RaspberryPi Sejin Oh."— Presentation transcript:

1 GPIO RaspberryPi Sejin Oh

2 GPIO

3 GPIO GPIO GPIO (General Purpose Input Output)
마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력 포트 입력과 출력을 마음대로 선택할 수 있고, 0과 1의 출력 신호를 임의로 만들어줄 수 있는 구조를 가진다. GPIO 라이브러리 라즈베리 파이의 GPIO를 제어할 수 있는 언어 C, C++, C#, Python Perl, Ruby, Java등 매우 다양함 각 언어에 따라 사용자들이 GPIO 라이브러리를 제작하여 공유하고 있다. wiringPi : 공개된 라이브러리 중 GPIO 제어 속도가 빠름

4 GPIO GPIO Raspberry Pi b+ GPIO 핀 배치

5 GPIO GPIO Library 설치 라즈베리 파이의 업데이트 및 업그레이드 실시 소스 관리 툴인 git을 다운로드
Git을 이용하여 “Wiring Pi” 라이브러리를 다운로드 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi

6 GPIO GPIO Library 설치 빌드 및 설치 진행 설치 확인 $ cd wiringPi $ ./build
$ gpio -v 설치 확인 (예시) Gpio version: 2.08 Copyright © Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY For details type: gpio –warranty This Raspberry Pi is a reversion 2 board

7 GPIO GPIO 출력 테스트 GPIO의 출력을 이용하여 LED on/off 제어 테스트
LED 회로를 구성하여 GPIO에 High 값을 출력해주면 LED는 켜짐 GPIO에 Low 값을 출력하게 되면 LED는 꺼짐 LED 2개, 저항 220Ω 2개, GPIO 23번 핀 이용

8 GPIO GPIO 출력 테스트 작업 폴더 생성 및 이동 프로그램 작성 $ mkdir led $ cd led
$ sudo nano led.c

9 GPIO GPIO 출력 테스트 #include <stdio.h> #include <wiringPi.h>
#define LED 23 int main(void) {   if(wiringPiSetupGpio()==-1)     return 1;   pinMode(LED, OUTPUT);   while(1)   {     digitalWrite(LED, 1);     delay(500); // ms     digitalWrite(LED, 0);     delay(500);   }   return 0; }

10 GPIO GPIO 출력 테스트 프로그램 빌드 프로그램 실행 $ sudo gcc –o led led.c -lwiringPi
$ sudo ./led

11 GPIO GPIO 출력 테스트 GPIO의 출력을 이용하여 LED on/off 제어 테스트
LED 회로를 구성하여 GPIO에 High 값을 출력해주면 LED는 켜짐 GPIO에 Low 값을 출력하게 되면 LED는 꺼짐 LED 2개, 저항 220Ω 2개, GPIO 23번 핀, 24번 핀 이용

12 GPIO GPIO 출력 테스트 작업 폴더 생성 및 이동 프로그램 작성 $ mkdir led2 $ cd led2
$ sudo nano led2.c

13 GPIO GPIO 출력 테스트 #include <stdio.h> #include <wiringPi.h>
#define LED1 23 #define LED2 24 int main(void) {   if(wiringPiSetupGpio()==-1)     return 1;   pinMode(LED1, OUTPUT);   pinMode(LED2, OUTPUT);   while(1)   {     digitalWrite(LED1, 1);     digitalWrite(LED2, 1);     delay(500); // ms     digitalWrite(LED1, 0);     digitalWrite(LED2, 0);     delay(500);   }   return 0; }

14 GPIO GPIO 출력 테스트 프로그램 빌드 프로그램 실행 $ sudo gcc –o led2 led2.c -lwiringPi
$ sudo ./led2

15 GPIO Five LED Lighting

16 GPIO Five LED Lighting 결과확인

17 GPIO 응용 – Five LED Lighting 5개의 LED 순차적으로 ON/OFF

18 응용 – Five LED Lighting – (1)
GPIO 응용 – Five LED Lighting – (1) #include <stdio.h> #include <wiringPi.h> #define LED1 17 #define LED2 27 #define LED3 13 #define LED4 19 #define LED5 26 int main(void){ int i=1; if (wiringPiSetupGpio() == -1) return 1; pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); printf("progress LED START\n”);

19 응용 – Five LED Lighting – (2)
GPIO 응용 – Five LED Lighting – (2) for (;;i++){ switch (i){ case 1: digitalWrite(LED1, 1); delay(500); //i++; break; case 2: digitalWrite(LED2, 1); ///i++; case 3: digitalWrite(LED3, 1); case 4: digitalWrite(LED4, 1);

20 응용 – Five LED Lighting – (3)
GPIO 응용 – Five LED Lighting – (3) case 5: digitalWrite(LED5, 1); delay(500); //i++; break; case 6: digitalWrite(LED1, 0); digitalWrite(LED2, 0); digitalWrite(LED3, 0); digitalWrite(LED4, 0); digitalWrite(LED5, 0); digitalWrite(LED1, 1); digitalWrite(LED2, 1); digitalWrite(LED3, 1); digitalWrite(LED4, 1);

21 응용 – Five LED Lighting – (4)
GPIO 응용 – Five LED Lighting – (4) digitalWrite(LED1, 0); digitalWrite(LED2, 0); digitalWrite(LED3, 0); digitalWrite(LED4, 0); digitalWrite(LED5, 0); delay(500); i = 0; break; } return 0;

22 GPIO GPIO 출력 테스트 python을 이용한 LED on/off 테스트 $ sudo python
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(24, GPIO.OUT) while (True): GPIO.output(23, True) GPIO.output(24, True) time.sleep(0.5) GPIO.output(23, False) GPIO.output(24, False)

23 GPIO GPIO 입력 테스트 스위치 회로 스위치의 on/off 신호에 따라 LED가 켜지고 꺼지는 실습
스위치에 10KΩ 연결

24 GPIO GPIO 입력 테스트 LED : 220Ω Button : 10KΩ 스위치 회로 - 회로도

25 GPIO GPIO 입력 테스트 프로그램 작성 작업 폴더로 이동 $ sudo cd ~/gpio
$ sudo nano input.c pinMode(SW, INPUT); while(1) { digitalWrite(LED1, 0); digitalWrite(LED2, 0); if(digitalRead(SW) == 1) digitalWrite(LED1, 1); digitalWrite(LED2, 1); delay(1000); } return 0; #include <stdio.h> #include <wiringPi.h> #define LED1 23 //gpio 23 #define LED2 24 //gpio 24 #define SW 25 //gpio 25 int main(void) { if(wiringPiSetupGpio() == -1) return 1; pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT);

26 GPIO GPIO 입력 테스트 프로그램 작성 프로그램 빌드 프로그램 실행
$ sudo –o input input.c -lwiringPi 프로그램 실행 $ sudo ./input

27 GPIO 안전 종료를 위한 매크로 버튼 종료 버튼
실습에서는 GPIO 입력으로 23, 16번을 사용, 스위치에 10KΩ 연결

28 안전 종료를 위한 매크로 버튼 – buttonforhalt.c
GPIO 안전 종료를 위한 매크로 버튼 – buttonforhalt.c #include <stdio.h> #include <wiringPi.h> #define BT1 23 #define BT2 16 int main(void){ if (wiringPiSetupGpio() == -1){ return 1; } pinMode(BT1, INPUT); pinMode(BT2, INPUT); while (1){ if (digitalRead(BT1) == 1){ printf("POWER OFF\n"); system("sudo poweroff"); delay(1000); } if (digitalRead(BT2) == 1){ printf("System Restart\n"); system("sudo reboot");


Download ppt "GPIO RaspberryPi Sejin Oh."

Similar presentations


Ads by Google