1. Prosedur [kembali]
Langkah-langkah percobaan :
1. Siapkan alat dan bahan yaitu dengan komponen utama Rapsberry Pi Pico, Potensiometer, Buzzer dan Motor Servo.
2. Rangkai sesuai gambar percobaan
3. Rancang kerja rangkaian sesuai flowchat
4. Tekan tombol “Play” untuk menjalankan simulasi
2. Hardware dan Diagram Blok [kembali]
A. Hardware 1. Rapsberyy Pi Pico
2. Potensiometer
3. Motor Servo
4. Buzzer
B. Blok Diagram
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Pada rangkaian terdiri dari rapsberry pi pico, Potensiometer, Buzzer dan Motor servo. Prinsip kerjanya ketika potensiometer digeser maka akan memengaruhi buzzer apakah aktif atau tidak, sesuai kondisi diantara sudut 0 derajat hingga 180 derajat, maka buzzer akan aktif . Sementara pada motor servo akan memengaruhi pergeseran motor berdasarkan tingkat sudut bergesernya potensiometernya, pada kondisi yang digunakan maka servo akan bergeser dan bergerak berlawanan arah jarum jam ketika potensiometer kita gerakan searah jarum jam.
4. Flowchart dan Listing Program [kembali]
A. Flowchart B. Listing Program
from machine import Pin, PWM, ADC
from time import sleep
import utime
# Inisialisasi
pot = ADC(26) # GP26 = ADC0
servo = PWM(Pin(16))
buzzer = PWM(Pin(14))
# Konfigurasi PWM
servo.freq(50) # 50 Hz untuk servo
buzzer.freq(1000) # Set awal frekuensi buzzer
def map_value(value, in_min, in_max, out_min, out_max):
return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
while True:
val = pot.read_u16() # Nilai ADC 16-bit (0 - 65535)
# Membaca nilai potensiometer
pot_value = pot.read_u16()
# Karena kamu mau *berlawanan jarum jam* saat potensiometer membesar,
# maka kita balik mappingnya: besar pot → kecil sudut
angle = map_value(pot_value, 0, 65535, 180, 0)
# Konversi sudut ke duty cycle untuk servo
duty = map_value(angle, 0, 180, 1500, 7500)
servo.duty_u16(duty)
# Print untuk debugging
print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")
# === Buzzer Control ===
if 0 < angle < 180:
freq = int(200 + (val / 65535) * (2000 - 200)) # Mapping frekuensi
buzzer.freq(freq)
buzzer.duty_u16(30000) # Buzzer berbunyi
else:
buzzer.duty_u16(0) # Buzzer mati
sleep(0.05)
5. Kondisi [kembali]
Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperkecil maka servo bergerak berlawanan jarum jam dan jika jika sudut servo <0 ° dan >180 ° buzzer berbunyi.
Tidak ada komentar:
Posting Komentar