아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

학문

전기·전자

거대한거위176
거대한거위176

mcu 마이크로 파이썬 프로그래밍 질문드립니다.

안녕하세요.

제가 rp2040 tiny 모델로 주파수 발생장치를 만들려고 하는데 thonny로 입력했더니 led 불이 들어오지 않는 문제때문에 질문 드립니다.

### 하드웨어 핀 연결

- PWM: 4번 핀

- LED1: 5번 핀

- LED2: 6번 핀

- LED3: 7번 핀

- 버튼1: 8번 핀

- 버튼2: 9번 핀

- 버튼3: 10번 핀

### 소프트웨어 구성 (MicroPython 코드)

```python

from machine import Pin, PWM, Timer

import utime

# 핀 설정

pwm_pin = PWM(Pin(4))

led1 = Pin(5, Pin.OUT)

led2 = Pin(6, Pin.OUT)

led3 = Pin(7, Pin.OUT)

button1 = Pin(8, Pin.IN, Pin.PULL_DOWN)

button2 = Pin(9, Pin.IN, Pin.PULL_DOWN)

button3 = Pin(10, Pin.IN, Pin.PULL_DOWN)

# 초기 상태

power_on = False

timer_button2 = Timer()

timer_blink = Timer()

led2.value(0)

led1.value(0)

led3.value(0)

# 함수 정의

def start_pwm(frequency, duty):

pwm_pin.freq(frequency)

pwm_pin.duty_u16(duty)

def stop_pwm():

pwm_pin.duty_u16(0)

def led_blink(timer):

led2.toggle()

def led_blink1(timer):

led1.toggle()

def led_blink3(timer):

led3.toggle()

def button1_handler(pin):

global power_on

if power_on:

led2.value(0)

led1.value(1)

start_pwm(10, 3277) # 3277은 1mA에 해당하는 듀티 사이클

timer_blink.init(period=2000, mode=Timer.PERIODIC, callback=led_blink1)

utime.sleep(600) # 10분 (600초)

stop_pwm()

timer_blink.deinit()

led1.value(0)

led2.value(1)

def button3_handler(pin):

global power_on

if power_on:

led2.value(0)

led3.value(1)

start_pwm(1, 3277) # 3277은 1mA에 해당하는 듀티 사이클

timer_blink.init(period=2000, mode=Timer.PERIODIC, callback=led_blink3)

utime.sleep(600) # 10분 (600초)

stop_pwm()

timer_blink.deinit()

led3.value(0)

led2.value(1)

def button2_long_press(pin):

global power_on

if not power_on:

power_on = True

led2.value(1)

timer_blink.init(period=2000, mode=Timer.PERIODIC, callback=led_blink)

else:

power_on = False

led2.value(0)

timer_blink.deinit()

stop_pwm()

led1.value(0)

led3.value(0)

def button2_press_check(timer):

if button2.value() == 1:

utime.sleep(2) # 2초간 대기

if button2.value() == 1:

button2_long_press(button2)

# 인터럽트 핸들러 설정

button1.irq(trigger=Pin.IRQ_RISING, handler=button1_handler)

button3.irq(trigger=Pin.IRQ_RISING, handler=button3_handler)

# 버튼 2 체크를 위한 타이머 설정

timer_button2.init(period=100, mode=Timer.PERIODIC, callback=button2_press_check)

# 메인 루프

while True:

utime.sleep(0.1)

```

이렇게 짰는데 버튼 2를 누르면led 불이 들어오지 않습니다. 납땜에 문제가 있었던건지 프로그래밍에 문제가 있는건지 잘 모르겠어서 질문 올려봅니다.

55글자 더 채워주세요.
1개의 답변이 있어요!
  • 안녕하세요. 박준희 전문가입니다.

    프로그래밍을 보니 문제는 없어보이는데요.

    납땜이 제대로 되지않아 접촉불량으로 불이 안켜진듯 합니다.

    감사합니다.