개발자의 생활

2023년 1학기 10주차 실습 과제 본문

과제/라즈베리파이 피코

2023년 1학기 10주차 실습 과제

Developer성현 2023. 5. 21. 17:17

10_1

GPT질문 & 답변

 

입력_1

Raspberry Pi Pico의 내부 온도를 측정하는 코드를 작성해

 

GPT출력_1

Raspberry Pi Pico에는 내부 온도를 측정하는 내장 센서가 없습니다. 따라서 내부 온도를 직접 측정하려면 외부 온도 센서를 사용해야 합니다. 대표적인 외부 온도 센서 중 하나인 DS18B20을 예시로 들어볼게요. DS18B20은 One-Wire 프로토콜을 사용하여 데이터를 전송하므로 Pico의 GPIO 핀을 이용하여 연결하고 제어할 수 있습니다.

 

입력_2

Raspberry Pi Pico 에는 내부에 온도센서가 있어

 

GPT출력_2

저는 앞서 잘못된 정보를 제공한 것을 사과합니다. Raspberry Pi Pico에는 내부 온도를 측정할 수 있는 내장 센서가 있습니다. 내부 온도 센서는 RP2040 칩에 내장되어 있으며, Pico의 온도 측정 기능을 사용하여 내부 온도를 측정할 수 있습니다.

다음은 Raspberry Pi Pico에서 내부 온도를 측정하는 MicroPython 코드입니다.

import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16() * conversion_factor
    temperature = 27 - (reading - 0.706) / 0.001721
    print("Temperature:", temperature, "°C")
    utime.sleep(1)


위 코드는 Pico의 내장 온도 센서를 사용하여 온도를 측정합니다. `machine.ADC(4)`는 내부 센서의 핀 번호를 나타내며, Pico의 핀 26에 해당합니다. 측정된 값을 변환하여 온도로 계산하고 출력합니다. 온도 측정 간격은 1초로 설정되어 있습니다.

위 코드를 실행하면 Pico의 내부 온도가 1초마다 출력됩니다. 종료하려면 키보드에서 Ctrl+C를 누르세요.

정확한 온도 계산을 위해 주의해야 할 점은, 내부 온도 센서의 정확성과 보정에 따라 결과가 다를 수 있다는 것입니다. 따라서, 정확한 보정을 위해서는 해당 칩의 데이터 시트나 제조사의 가이드를 참조하는 것이 좋습니다.

 

10_2

GPT질문 & 답변

 

입력_1

Raspberry Pi Pico GP26번에 연결된 가변저항을 돌려 입력되는 아날로그 데이터를 16비트로 출력하는 코드를 작성해

 

GPT출력_1

아래는 Raspberry Pi Pico에서 GP26에 연결된 가변저항을 이용하여 아날로그 입력을 측정하고, 16비트로 출력하는 MicroPython 코드입니다.

import machine

adc = machine.ADC(26)

while True:
    analog_value = adc.read_u16()
    print("Analog Value:", analog_value)


위 코드에서 `machine.ADC(26)`은 GP26에 연결된 핀 번호를 나타냅니다. `adc.read_u16()` 함수를 사용하여 아날로그 입력 값을 16비트로 읽어옵니다. 이 값을 `analog_value` 변수에 저장하고 출력합니다.

코드를 실행하면 GP26의 아날로그 입력 값을 16비트로 읽어와 출력합니다. 입력 값의 범위는 0에서 65535까지이며, 출력 값인 `analog_value`는 이 범위에 해당합니다.

주의해야 할 점은 가변저항의 변화에 따라 입력 값이 변경되므로 가변저항을 조작하여 측정값을 확인할 수 있습니다. 또한, 입력 값을 다양한 용도로 활용하고 처리하기 위해 필요한 추가 로직을 구현할 수 있습니다.

 

 

10_3

GPT질문 & 답변

 

입력_1

위 코드에서 아날로그 데이터말고 전압값을 출력하는 코드로 수정해

 

GPT출력_1

아래는 Raspberry Pi Pico에서 GP26에 연결된 가변저항을 이용하여 아날로그 입력 전압을 측정하고, 해당 전압 값을 출력하는 MicroPython 코드입니다.

import machine

adc = machine.ADC(26)

while True:
    analog_value = adc.read_u16()
    voltage = (analog_value / 65535) * 3.3
    print("Voltage:", voltage, "V")


위 코드에서 `machine.ADC(26)`은 GP26에 연결된 핀 번호를 나타냅니다. `adc.read_u16()` 함수를 사용하여 아날로그 입력 값을 16비트로 읽어옵니다. 이 값을 `analog_value` 변수에 저장한 후, 해당 값을 전압으로 변환하여 `voltage` 변수에 저장합니다. 여기서 3.3은 Raspberry Pi Pico의 기본 전압(Vref)을 나타냅니다. 측정된 전압 값을 출력합니다.

코드를 실행하면 GP26의 아날로그 입력 전압을 측정하여 출력합니다. 입력 값의 범위는 0에서 65535에 해당하며, 해당 값은 0V에서 3.3V 사이의 전압 값으로 변환됩니다.

주의해야 할 점은 가변저항의 변화에 따라 입력 전압 값이 변경되므로 가변저항을 조작하여 측정값을 확인할 수 있습니다. 또한, 입력 값을 다양한 용도로 활용하고 처리하기 위해 필요한 추가 로직을 구현할 수 있습니다.

 

 

10_4

GPT질문 & 답변

 

입력_1

Raspberry Pi Pico에서 26번 핀에 연결되어 있는 가변저항으로 16번 핀에 연결되어 있는 LED의 밝기를 PWM으로 조정하는 코드를 작성해

 

GPT출력_1

아래는 Raspberry Pi Pico에서 GP26에 연결된 가변저항을 이용하여 16번 핀에 연결된 LED의 밝기를 PWM(Pulse Width Modulation)으로 조정하는 MicroPython 코드입니다.

import machine
import utime

led_pin = machine.Pin(16)
led_pwm = machine.PWM(led_pin)

potentiometer_pin = machine.Pin(26)
potentiometer_adc = machine.ADC(potentiometer_pin)

while True:
    analog_value = potentiometer_adc.read_u16()
    duty_cycle = int((analog_value / 65535) * 65535)
    led_pwm.duty_u16(duty_cycle)
    utime.sleep(0.1)


위 코드에서 `machine.Pin(16)`은 16번 핀에 해당하는 Pin 객체를 생성합니다. `machine.PWM`을 사용하여 LED를 PWM으로 제어하기 위한 PWM 객체 `led_pwm`을 생성합니다. `machine.Pin(26)`은 가변저항이 연결된 GP26에 해당하는 Pin 객체를 생성하고, `machine.ADC`를 사용하여 아날로그 입력을 위한 ADC 객체 `potentiometer_adc`를 생성합니다.

while 루프에서 가변저항의 아날로그 입력 값을 읽어와 `analog_value`에 저장합니다. `analog_value`를 PWM의 듀티 사이클 값으로 변환하여 `led_pwm.duty_u16()`을 사용하여 LED의 밝기를 조정합니다. `utime.sleep(0.1)`을 사용하여 측정과 밝기 조정 간의 딜레이를 주어 LED의 밝기가 부드럽게 변화하도록 합니다.

위 코드를 실행하면 가변저항으로 입력되는 아날로그 값을 LED의 밝기로 변환하여 조정합니다. 가변저항을 돌리면 LED의 밝기가 변화합니다. 코드 실행 중단을 원할 경우 키보드에서 Ctrl+C를 눌러 종료할 수 있습니다.

 

GPT가 작성한 코드가 실행이 안되는 경우들이 있었습니다.

그때는 코드를 수정하여 실행하였습니다.

 

실행 영상

10_1

 

10_2

 

10_3

 

10_4

 

'과제 > 라즈베리파이 피코' 카테고리의 다른 글

2023년 1학기 13주차 과제  (0) 2023.06.03
2023년 1학기 11주차 실습과제  (4) 2023.05.28
2023년 1학기 9주차 실습  (0) 2023.05.07