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 = [262, 294, 330, 349, 392, 440, 494, 523] 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 = 27, 23 led1_pin, led2_pin = 22, 17 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 = [24, 25, 17, 19, 12, 16, 20, 21] for i in range(8): GPIO.setup(FND_DATA_PIN[i], GPIO.OUT) FND_DATA = [0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x27, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x7B, 0x71] 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 = [21, 20, 16, 12] # R1, R2, R3, R4 KEYPAD_ROW_PIN = [22, 23, 17, 18] 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 = [0, 0, 0, 0] 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 = [21, 20, 16, 12] # R1, R2, R3, R4 KEYPAD_ROW_PIN = [22, 23, 17, 18] 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 = [0, 0, 0, 0] 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 = [21, 20, 16, 12] # R1, R2, R3, R4 KEYPAD_ROW_PIN = [22, 23, 17, 18] 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 = [0, 0, 0, 0] 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
'Python' 카테고리의 다른 글
| 스마트팩토리 9주 40일차 라즈베리파이 6일차 (0) | 2021.06.22 |
|---|---|
| 스마트팩토리 9주 39일차 라즈베리파이 5일차 (0) | 2021.06.22 |
| 스마트팩토리 8주 37일차 라즈베리파이 3일차 (0) | 2021.06.17 |
| 210616 프로그래머스 코딩 연습 K번째수 (0) | 2021.06.17 |
| 스마트팩토리 8주 36일차 라즈베리파이 2일차 (0) | 2021.06.16 |




최근댓글