728x90

라즈베리 피에조 부저


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
piezo_pin = 18
 
GPIO.setup(piezo_pin, GPIO.OUT) # pinMode
 
piezo_pwm = GPIO.PWM(piezo_pin, 1)
piezo_pwm.start(50.0)
 
try:
    while(True):
        piezo_pwm.ChangeFrequency(262)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(294)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(330)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(349)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(392)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(440)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(494)
        time.sleep(0.5)
        piezo_pwm.ChangeFrequency(523)
        time.sleep(0.5)
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
 
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
piezo_pin = 18
 
GPIO.setup(piezo_pin, GPIO.OUT) # pinMode
 
piezo_pwm = GPIO.PWM(piezo_pin, 1)
piezo_pwm.start(50.0)
 
#global var
melody = [262294330349392440494523]
 
try:
    while(True):
        for i in range(len(melody)):
            piezo_pwm.ChangeFrequency(melody[i])
            time.sleep(0.5)
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
 
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
servo_pin = 18
 
GPIO.setup(servo_pin, GPIO.OUT) # pinMode
 
servo_pwm = GPIO.PWM(servo_pin, 50)
servo_pwm.start(2.5# 0도 설정
 
#global var
 
try:
    while(True):
        servo_pwm.ChangeDutyCycle(2.5)
        time.sleep(1)
        servo_pwm.ChangeDutyCycle(7.5)
        time.sleep(1)
        servo_pwm.ChangeDutyCycle(12.5)
        time.sleep(1)
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
servo_pin = 18
 
GPIO.setup(servo_pin, GPIO.OUT) # pinMode
 
servo_pwm = GPIO.PWM(servo_pin, 50)
servo_pwm.start(2.5# 0도 설정
 
# global var
 
# user function
def servo_angle(servo, degree):
    # servo_pwm.ChangeDutyCycle(map(degree, 0, 180, 2.5, 12.5)) #아두이노식
    # 0도 2.5 90도 7.5 5 180도 12.5 10
    if degree==0:
        servo_pwm.ChangeDutyCycle(2.5)
        return
    servo_pwm.ChangeDutyCycle(2.5 + degree/180 *10)
    return
try:
    while(True):
        servo_angle(servo_pwm, 0)
        time.sleep(1)
        servo_angle(servo_pwm, 90)
        time.sleep(1)
        servo_angle(servo_pwm, 180)
        time.sleep(1)
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
 
cs


STEP MOTOR (GPIO)

부저(PWM) - 주파수 변경

서보모터(PWM) - 듀티비 변경


서보모터

0도일 때 0.5ms

90도일 때 1.5ms

180도 일 때 2.5ms


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
servo_pin = 18
 
GPIO.setup(servo_pin, GPIO.OUT) # pinMode
 
servo_pwm = GPIO.PWM(servo_pin, 50)
servo_pwm.start(2.5# 0도 설정
 
# global var
degree_0 = 2.5
degree_180 = 12.5
 
# user function
def servo_angle(servo, degree):
    dutyrate = ((degree_180-degree_0)/180)*degree) + degree_0
    print(dutyrate)
    servo.ChangeDutyCycle(dutyrate) # 0도 = 2.5%
    return
try:
    while(True):
        for i in range(181):
            servo_angle(servo_pwm, i)
            time.sleep(0.1)
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
button_pin = 27
led_pin = 22
 
GPIO.setup(servo_pin, GPIO.IN) # pinMode
GPIO.setup(led_pin, GPIO.OUT)
 
# global var
buttonInputPrev = 0
flag_led = 0 # 0:0FF, 1:ON
 
try:
    while(True):
        buttonInput = GPIO.input(button_pin)
        if not buttonInputPrev and buttonInput:
            print("rising edge")
            if flag_led == 0:
                GPIO.output(led_pin, True)
                flag_led = 1
            else:
                GPIO.output(led_pin, False)
                flag_led = 
        elif buttonInputPrev and not buttonInput:
            print("falling edge")
 
        buttonInputPrev = buttonInput
        
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
cs


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
import RPi.GPIO as GPIO
import time
 
# user function
def buttonPressed(channel):
    global flag_led1
    global flag_led2
    print(channel)
    if channel == 27:
        print("rising edge")
        if flag_led1 == 0:
            GPIO.output(led1_pin, True)
            flag_led1 = 1
        else:
            GPIO.output(led1_pin, False)
            flag_led1 = 0
    if channel == 23:
        print("rising edge")
        if flag_led2 == 0:
            GPIO.output(led2_pin, True)
            flag_led2 = 1
        else:
            GPIO.output(led2_pin, False)
            flag_led2 = 0
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
button1_pin, button2_pin = 2723
led1_pin, led2_pin = 2217
 
GPIO.setup(button1_pin, GPIO.IN) # pinMode
GPIO.setup(button2_pin, GPIO.IN)
GPIO.setup(led1_pin, GPIO.OUT)
GPIO.setup(led2_pin, GPIO.OUT)
 
GPIO.add_event_detect(button1_pin, GPIO.RISING) # 엣지설정
GPIO.add_event_callback(button1_pin, buttonPressed) # ISR
GPIO.add_event_detect(button2_pin, GPIO.RISING) # 엣지설정
GPIO.add_event_callback(button2_pin, buttonPressed) # ISR
 
# global var
buttonInputPrev = 0
flag_led1 = 0 # 0:0FF, 1:ON
flag_led2 = 0
 
try:
    while(True):
        pass
        
finally:
    GPIO.cleanup()
    print("GPIO cleanup")
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config     a, b, c, d, e, f, g, dp
FND_DATA_PIN = [2425171912162021]
 
for i in range(8):
    GPIO.setup(FND_DATA_PIN[i], GPIO.OUT)
 
FND_DATA = [0x3F0x060x5B0x4F0x660x6D0x7D0x270x7F0x6F0x770x7C0x390x5E0x7B0x71]
 
def FND_OUTPUT(num):
    for i in range(8):
        GPIO.output(FND_DATA_PIN[i], FND_DATA[num]&(0x01<<i))
 
try:
    cnt = 0
    while True:
        FND_OUTPUT(cnt)
        time.sleep(1)
 
        if cnt == 15:
            cnt = 0
        else:
            cnt += 1
finally:
    GPIO.cleanup()
 
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
                # C1, C2, C3, C4
KEYPAD_COL_PIN = [21201612]
                # R1, R2, R3, R4
KEYPAD_ROW_PIN = [22231718]
 
for i in range(len(KEYPAD_COL_PIN)):
    GPIO.setup(KEYPAD_COL_PIN[i], GPIO.OUT, initial=False)
for i in range(len(KEYPAD_ROW_PIN)):
    GPIO.setup(KEYPAD_ROW_PIN[i], GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
 
row_val = [0000]
 
try:
    GPIO.output(KEYPAD_COL_PIN[0], True)
    while True:
        for i in range(len(KEYPAD_ROW_PIN)):
            row_val[i] = GPIO.input(KEYPAD_ROW_PIN[i])
            print("%d번 = %d" %(KEYPAD_ROW_PIN[i], row_val[i]))
        time.sleep(0.3)
        
finally:
    GPIO.cleanup()
    print("GPIO cleanup...!!")
 
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
                # C1, C2, C3, C4
KEYPAD_COL_PIN = [21201612]
                # R1, R2, R3, R4
KEYPAD_ROW_PIN = [22231718]
 
for i in range(len(KEYPAD_ROW_PIN)):
    GPIO.setup(KEYPAD_ROW_PIN[i], GPIO.OUT, initial=False)
for i in range(len(KEYPAD_COL_PIN)):
    GPIO.setup(KEYPAD_COL_PIN[i], GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
 
row_val = [0000]
 
try:
    GPIO.output(KEYPAD_ROW_PIN[0], True)
    while True:
        for i in range(len(KEYPAD_ROW_PIN)):
            row_val[i] = GPIO.input(KEYPAD_COL_PIN[i])
            print("%d번 = %d" %(KEYPAD_COL_PIN[i], row_val[i]))
        print("="*10)
        time.sleep(0.3)
        
finally:
    GPIO.cleanup()
    print("GPIO cleanup...!!")
cs


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
import RPi.GPIO as GPIO
import time
 
# setup
GPIO.setmode(GPIO.BCM)
 
# pin config
                # C1, C2, C3, C4
KEYPAD_COL_PIN = [21201612]
                # R1, R2, R3, R4
KEYPAD_ROW_PIN = [22231718]
 
for i in range(len(KEYPAD_ROW_PIN)):
    GPIO.setup(KEYPAD_ROW_PIN[i], GPIO.OUT, initial=False)
for i in range(len(KEYPAD_COL_PIN)):
    GPIO.setup(KEYPAD_COL_PIN[i], GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
 
row_val = [0000]
 
try:
    GPIO.output(KEYPAD_ROW_PIN[0], True)
    while True:
        for j in range(len(KEYPAD_ROW_PIN)):
            GPIO.output(KEYPAD_ROW_PIN[j], True)
            for i in range(len(KEYPAD_COL_PIN)):
                btn_val = GPIO.input(KEYPAD_COL_PIN[i])
            # print("%d번 = %d" %(KEYPAD_COL_PIN[i], row_val[i]))
                if btn_val == 1:
                    print("S%d 버튼이 눌렸습니다." %((i+1)+(j*4)))
            GPIO.output(KEYPAD_ROW_PIN[j], False)
            # print("="*10)
            time.sleep(0.05)
        
finally:
    GPIO.cleanup()
    print("GPIO cleanup...!!")
cs


728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기