삼성 아틱과 버저 연결 예제 (파이썬)

메이커 2018-09-11 (화) 09:23 4년전 1542  

버저는 전기적 신호를 소리로 바꾸는 모듈입니다. 

 

본 튜토리얼의 전체 PDF는 다음의 링크에서 참고하실 수 있습니다. 

 

https://goo.gl/JVMp9q 

 

아틱의 GPIO는 기본적으로 3.3V로 세팅이 되어 있기 때문에, 다음과 같이 5V로 변경을 합니다. 


18f2d84b4efba7e9a9075d8254b2341d_1536630

1f7c3ee5d7e718d5cf0b1a77c77892dc_1536642


 터미널에서 파이썬 코드를 다음과 같이 작성합니다.


import time

 

OUTPUT = 'out'

INPUT = 'in'

HIGH = 1

LOW = 0

 

def reg(pin):

    try:

        exp = open('/sys/class/gpio/export','wb',0)

        exp.write(str(pin))

        print('Registion Successful: pin%d' %pin)

        #exp.close()

    except IOError as e:

        #print('Registion Error: pin%d' %pin)

        print('Error: %d - %s' %(e.errno,e.strerror))

 

def unreg(pin):

    try:

        uexp = open('/sys/class/gpio/unexport','wb',0)

        uexp.write(str(pin))

        print('Unregistion Successful: pin%d' %pin)

        uexp.close()

    except IOError as e:

        #print('Unregistion Error: pin%d' %pin)

        print('Error: %d - %s' %(e.errno,e.strerror))

 

def pinMode(pin, mode):

    try:

        direction = open('/sys/class/gpio/gpio%d/direction' %pin,'wb',0)

        direction.write('out' if mode == OUTPUT else 'in')

        #print('pin%d setted at %s' %(pin,'out' if mode == OUTPUT else 'in'))

        direction.close()

    except IOError as e:

        #print('CANNOT SET PIN MODE: pin%d' %pin)

        print('Error: %d - %s' %(e.errno,e.strerror))

 

def digitalWrite(pin,value):

    try:

        val = open('/sys/class/gpio/gpio%d/value' %pin,'wb',0)

        val.write(str(value))

        val.close()

    except IOError as e:

        #print('WRITE ERROR: pin%d' %pin)

        print('Error: %d - %s' %(e.errno,e.strerror))

 

def digitalRead(pin):

    try:

        file = open('/sys/class/gpio/gpio%d/value' %pin,'rb',0)

        value = file.read()

        file.close()

        return int(value)

    except IOError as e:

        #print('READ ERROR')

        print('Error: %d - %s' %(e.errno,e.strerror))

        return 0

 

def analogRead(pin):

    filePath = '/sys/devices/platform/c0000000.soc/c0053000.adc/iio:device0/in_voltage%d_raw' %pin

    print(filePath)

    try:

        file = open(filePath,"rb",0)

        value = file.read()

        file.close()

        return int(value)

    except IOError as e:

        print('Error: %d - %s' %(e.errno, e.strerror))

        return 0

 

def mapValue(val, oldMin, oldMax, newMin, newMax):      #Similar to map function in Arduino IDE

           return ( ( (val - oldMin) * (newMax - newMin) ) / (oldMax - oldMin) ) + newMin

 

 

###Buzzer

buzzerPin = 128    #buzzer module signal pin on GPIO0

reg(buzzerPin)

pinMode(buzzerPin, OUTPUT)

 

try:

    while True:

        digitalWrite(buzzerPin, HIGH)

        time.sleep(1)

        digitalWrite(buzzerPin, LOW)

time.sleep(1)

except KeyboardInterrupt:

    unreg(buzzerPin)

    print('Interrupted')

메카리워즈 Image Map


모바일 버전으로 보기