라즈베리파이와 칩셋 연결
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 켜짐
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
2016-04-27_조재찬_업무일지_디지털제어-회로 기초 (0) | 2016.04.27 |
---|---|
20160427_장진웅_업무일지_디지털 제어_기본 논리회로 실험2 (0) | 2016.04.27 |
20160426_장진웅_업무일지_디지털 제어_기본 논리회로 실험1 (0) | 2016.04.27 |
20160425_장진웅_업무일지_디지털 제어_회로 기초 이론 (0) | 2016.04.27 |
2016-04-26_조재찬_업무일지_디지털제어-RPi GPIO 제어 (0) | 2016.04.26 |
20160425_김도관_업무일지_디지털제어_회로 기초 (0) | 2016.04.26 |
2016-04-25_조재찬_업무일지_디지털제어-회로 기초 (0) | 2016.04.25 |
20160421_장진웅_업무일지_공장내Network_일대일통신6_멀티채팅2, 패킷보기 (1) | 2016.04.21 |