본문 바로가기
코스웨어/16년 스마트컨트롤러

20160426_김도관_업무일지_디지털제어_RPi GPIO 제어

by 알 수 없는 사용자 2016. 4. 27.
728x90
반응형

라즈베리파이와 칩셋 연결


1. VCC및 GND는 필수연결


2. ouput(+)에 저항연결 -> LED 연결 -> (-)연결



wiringPi 라이브러리 설치후 확인



74HC32AN 

(OR연산)






데이터시트

전체 연결모습







미니케이블로 직접 연결시


A2 ,B2 가 Low 일때 Low이므로 LED 켜지지 않음



A2 가 High ,B2 가 Low 일때 High이므로 LED 켜짐



A2 ,B2 모두 High 일때 High이므로 LED 켜짐




A2 가 Low ,B2 가 High 일때 High이므로 LED 켜짐




프로그램으로 작동시


1번째 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <wiringPi.h>
#include <stdio.h>
 
#define         A       28
#define         B       29
 
int main(void)
{
    wiringPiSetup();
 
    pinMode(A,OUTPUT);
    pinMode(B,OUTPUT);
 
    while(1)
    {
        printf("A = Lo, B = Lo: Out = ?\n");
        digitalWrite(A,LOW);
        digitalWrite(B,LOW);
        delay(1000);
 
        printf("A = Lo, B = Hi: Out = ?\n");
        digitalWrite(A,LOW);
        digitalWrite(B,HIGH);
        delay(1000);
 
        printf("A = Hi, B = Lo: Out = ?\n");
        digitalWrite(A,HIGH);
        digitalWrite(B,LOW);
        delay(1000);
 
        printf("A = Hi, B = Hi: Out = ?\n");
        digitalWrite(A,HIGH);
        digitalWrite(B,HIGH);
        delay(1000);
    }
    return 0;
}
 
 
cs


4번   : A에 28을 할당 (실제 핀번호 20)    -   상단 gpio readall 출력화면 참고

5번   : B에 29을 할당 (실제 핀번호 21)

9번   : wiringPiSetup 함수 - wiringPi 라이브러리를 초기화 하고 GPIO핀을 할당하기 위해 선언함

11번 : pinMode 함수로 A 즉, 실제 20번 핀에 출력(OUTPUT)을 지정함

12번 : pinMode 함수로 B 즉, 실제 21번 핀에 출력(OUTPUT)을 지정함


17번 : digitalWrite 함수로 A에 LOW를 넣음 0V  

18번 : digitalWrite 함수로 B에 LOW를 넣음 0V

19번 : delay 함수로 1000milisecond = 1초 동안 시간을 지연시킴 (이전동작을 약 1초간 유지함) LED꺼짐


22번 : digitalWrite 함수로 A에 LOW를 넣음 0V

23번 : digitalWrite 함수로 B에 HIGH를 넣음 5V 출력

24번 : delay 1초 LED켜짐


22번 : digitalWrite 함수로 A에 HIGH를 넣음 5V 출력

23번 : digitalWrite 함수로 B에  LOW를 넣음 0V 

24번 : delay 1초 LED켜짐


22번 : digitalWrite 함수로 A에 HIGH를 넣음 5V 출력

23번 : digitalWrite 함수로 B에 HIGH를 넣음 5V 

24번 : delay 1초 LED켜짐



출력화면 



2번째 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
#include <wiringPi.h>
#include <stdio.h>
 
#define    IN  27
#define    A   28
#define    B   29
 
int main(void)
{
    wiringPiSetup();
 
    pinMode(IN,INPUT);
    pinMode(A,OUTPUT);
    pinMode(B,OUTPUT);
 
    while(1)
    {
        printf("A = Lo, B = Lo: Out = ");
        digitalWrite(A,LOW);
        digitalWrite(B,LOW);
        if(1 == digitalRead(IN)) //    if(digitalRead(IN)) 동일함
        {
            printf("Hi\n");
        }
        else
        {
            printf("Lo\n");
        }
        delay(1000);
 
        printf("A = Lo, B = Hi: Out = ");
        digitalWrite(A,LOW);
        digitalWrite(B,HIGH);
        if(1 == digitalRead(IN))
        {
            printf("Hi\n");
        }
        else
        {
            printf("Lo\n");
        }
        delay(1000);
 
        printf("A = Hi, B = Lo: Out = ");
        digitalWrite(A,HIGH);
        digitalWrite(B,LOW);
        if(digitalRead(IN))
        {
            printf("Hi\n");
        }
        else
        {
            printf("Lo\n");
        }
        delay(1000);
 
        printf("A = Hi, B = Hi: Out = ");
        digitalWrite(A,HIGH);
        digitalWrite(B,HIGH);
        if(digitalRead(IN))
        {
            printf("Hi\n");
        }
        else
        {
            printf("Lo\n");
        }
        delay(1000);
    }
    return 0;
}
 
cs


5번   : IN에 27을 할당 (실제 핀번호 16)

6번   : A에 28을 할당 (실제 핀번호 20) -상단 gpio readall 출력화면 참고

7번   : B에 29을 할당 (실제 핀번호 21)

11번  : wiringPiSetup 함수 - wiringPi 라이브러리를 초기화 하고 GPIO핀을 할당하기 위해 선언함

13번 : pinMode 함수로 IN 즉, 실제 16번 핀에 출력(OUTPUT)을 지정함

14번 : pinMode 함수로 B 즉, 실제 21번 핀에 출력(OUTPUT)을 지정함

15번 : pinMode 함수로 B 즉, 실제 21번 핀에 출력(OUTPUT)을 지정함


20번 : digitalWrite 함수로 A에 LOW를 넣음 0V  

21번 : digitalWrite 함수로 B에 LOW를 넣음 0V

22번 : digitalRead 함수로 IN이 1일때 즉,High 상태일때 

24번 : Hi를 출력

28번 : 아닐때 Lo 출력

30번 : delay 1초


33번 : digitalWrite 함수로 A에 LOW를 넣음 0V  

34번 : digitalWrite 함수로 B에 HIGH를 넣음 5V


46번 : digitalWrite 함수로 A에 HIGH를 넣음 5V  

47번 : digitalWrite 함수로 B에 LOW를 넣음 0V


59번 : digitalWrite 함수로 A에 HIGH를 넣음 5V  

60번 : digitalWrite 함수로 B에 HIGH를 넣음 5V



출력화면






74HC04N 

(NOT 연산)


데이터시트



Input이 Low일때 LED꺼짐 



Input이 High일때 LED 켜짐 





728x90