import RPi.GPIO as GPIO
import time
import CK_SPI_ADC as spi_adc
import CK_SPI_DEV as spi_dev
import spidev
GPIO.setmode(GPIO.BCM)
ADC_SPI_SS = 8
ADC_CH_LIGHT=0xDF
sensor_chID= ADC_CH_LIGHT
GPIO.setup(ADC_SPI_SS, GPIO.OUT)
GPIO.output(ADC_SPI_SS,1)
spi=spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz = 5000000
#FND 위치별 핀번호 정의
FND_A = 2
FND_B = 3
FND_C = 4
FND_D = 5
FND_E = 16
FND_F = 12
FND_G = 18
FND_DP = 19
#라즈베리파이의 각각의 숫자 자리 핀번호
FND_SEL_1 = 14
FND_SEL_2 = 21
FND_SEL_3 = 22
#위에서 정의한 각각의 값을 리스트 로 묶기
FND_SEG = [FND_A, FND_B, FND_C, FND_D, FND_E, FND_F, FND_G, FND_DP]
FND_SEL = [FND_SEL_1, FND_SEL_2, FND_SEL_3]
#세그먼트를 출력으로 정의
for fndSeg in FND_SEG :
GPIO.setup(fndSeg, GPIO.OUT)
#각 자리 숫자를 출력으로 정의
for fndSel in FND_SEL :
GPIO.setup(fndSel, GPIO.OUT)
#켜지는 fnd 정의
def fndOn():
for fndSeg in FND_SEG:
GPIO.output(fndSeg, FND_SEG_ON)
for fndSel in FND_SEL:
GPIO.output(fndSel,FND_SEL_ON)
#꺼지는 fnd 정의
def fndOff():
for fndSeg in FND_SEG:
GPIO.output(fndSeg, not(FND_SEG_ON))
for fndSel in FND_SEL:
GPIO.output(fndSel,not(FND_SEL_ON))
#세그먼트와 각 자리의 숫자가 0일때 켜지는 값이다.
FND_SEG_ON = 0
FND_SEL_ON = 0
#DELAY 주기
DELAY=0.001
#숫자 0부터 9까지 정의
#0이 켜짐, 1이 꺼짐
fnd_num=[[0,0,0,0,0,0,1,1],
[1,0,0,1,1,1,1,1],
[0,0,1,0,0,1,0,1],
[0,0,0,0,1,1,0,1],
[1,0,0,1,1,0,0,1],
[0,1,0,0,1,0,0,1],
[0,1,0,0,1,0,0,1],
[0,0,0,1,1,1,1,1],
[0,0,0,0,0,0,0,1],
[0,0,0,0,1,0,0,1]]
try :
while(1) :
#센서 값을 adc로 받아올 것이며, 받아온 값은 bright 라고 정의
bright=spi_adc.ck_adcRd(spi_adc.ADC_CH_LIGHT)
#밝기가 150보다 클 때
if(bright>150) :
#SEL1은 숫자 8 출력
#이전 숫자를 지우기 위해 fndOff를 사용한다.
fndOff()
for i in range(8):
GPIO.output(FND_SEL_1,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[8][i])
time.sleep(DELAY)
#SEL2는 숫자 5 출력
#이전 숫자를 지우기 위해 fndOff를 사용한다.
fndOff()
for i in range(8):
GPIO.output(FND_SEL_2,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[5][i])
time.sleep(DELAY)
#SEL3은 숫자 4 출력
#이전 숫자를 지우기 위해 fndOff를 사용한다.
fndOff()
for i in range(8):
GPIO.output(FND_SEL_3,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[4][i])
time.sleep(DELAY)
#그렇지 않다면 (조도가 150아래라면),
else :
#fnd 1,2,3 모두 0이라는 숫자 출력
#이전 숫자를 지우기 위해 fndOff를 사용한다.
fndOff()
for i in range(8):
GPIO.output(FND_SEL_1,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[0][i])
time.sleep(DELAY)
fndOff()
for i in range(8):
GPIO.output(FND_SEL_2,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[0][i])
time.sleep(DELAY)
fndOff()
for i in range(8):
GPIO.output(FND_SEL_3,FND_SEL_ON)
GPIO.output(FND_SEG[i], fnd_num[0][i])
time.sleep(DELAY)
except KeyboardInterrupt:
GPIO.cleanup()
'Electronics > Raspberry Pi' 카테고리의 다른 글
[Raspberry Pi] 가변저항 VR1 으로 서보모터 각도(0~180도) 컨트롤하기 (0) | 2020.12.30 |
---|---|
[Raspberry Pi] 빛 센서의 값에 따라 일정 값 이상이면 정방향, 이하이면 역방향으로 모터 회전 시키기 (0) | 2020.12.17 |
[Raspberry Pi] 버튼을 이용하여 DC모터의 방향 바꾸기 (0) | 2020.12.17 |
[Raspberry Pi] 코딩키트 구성 (0) | 2020.12.17 |
댓글