본문 바로가기
Electronics/Raspberry Pi

[Raspberry Pi] 빛 센서의 값에 따라 일정 값 이상이면 정방향, 이하이면 역방향으로 모터 회전 시키기

by 겨울 빛 2020. 12. 17.

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)

 

 

댓글