import time
import CK_SPI_ADC as spi_adc
import CK_SPI_DEV as spi_dev
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
import spidev
ADC_SPI_SS = 8
ADC_CH_LIGHT = 0xDF # ADC Channel ID - Light
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
DCMOT_EN = 17
GPIO.setup(DCMOT_EN, GPIO.OUT)
GPIO.output(DCMOT_EN, 1)
DCMOT_DIR_SW_FWD = 0
DCMOT_DIR_SW_BWD = 1
spi_dev.ck_spiWr(spi_dev.SPI_CMD_CLEAR, 0)
def ck_map(x, in_min, in_max, out_min, out_max) :
out_val = (((x - in_min) * (out_max - out_min)) / (in_max - in_min)) + out_min
return out_val
while (1) :
for i in range(30) :
#밝기 함수 정의 spi_adc.ck 로 밝기 센서의 값을 읽어 들여온다. (1번에서는 가변저항의 값을 불러들여왔다.)
bright = spi_adc.ck_adcRd(spi_adc.ADC_CH_LIGHT)
#밝기가 150보다 클때
if (bright > 150) :
#시계방향으로 회전
spi_dev.ck_pwmDCMot_fwd(1000, 50)
spi_dev.ck_pwmDCMot_bwd(1000, 0)
else:
#반시계방향으로 회전
spi_dev.ck_pwmDCMot_fwd(1000, 0)
spi_dev.ck_pwmDCMot_bwd(1000, 50)
#입력되는 밝기값을 직접 보기 위해 print 함수를 이용하여 값을 읽어들였다.
print bright
time.sleep(0.5)
#key 값 받기 -> y 받아들이면 루프를 끝내고, n을 받아들이면 계속 반복한다.
key = raw_input('Quit?? (y/n) : ')
if (key == 'y') :
break;
# Off
spi_dev.ck_spiWr(spi_dev.SPI_CMD_CLEAR, 0)
'Electronics > Raspberry Pi' 카테고리의 다른 글
[Raspberry Pi] 일정 밝기 이상의 빛이 감지되면 세그먼트에 숫자 출력하기 (2) | 2020.12.30 |
---|---|
[Raspberry Pi] 가변저항 VR1 으로 서보모터 각도(0~180도) 컨트롤하기 (0) | 2020.12.30 |
[Raspberry Pi] 버튼을 이용하여 DC모터의 방향 바꾸기 (0) | 2020.12.17 |
[Raspberry Pi] 코딩키트 구성 (0) | 2020.12.17 |
댓글