LA2 M2 MIKRO

  Laporan Akhir Modul 2 Percobaan 4




1. 
Rangkaian Simulasi [Kembali]



Rangkaian Simulasi 

2. Prinsip Kerja Rangkaian [Kembali]

Rangkaian berbasis Raspberry Pi Pico ini mengontrol servo motor dan buzzer menggunakan potensiometer sebagai input. Potensiometer terhubung ke pin ADC (GP26), menghasilkan nilai digital (0–65535) yang digunakan untuk dua fungsi. Pertama, nilai ini diubah menjadi sudut 0°–180° untuk menggerakkan servo lewat PWM (1500–7500) pada pin GP16. Kedua, nilai yang sama mengatur frekuensi buzzer (200–2000 Hz) pada pin GP14, dengan duty cycle tetap (30000) untuk menghasilkan nada stabil.

3. Video Simulasi [Kembali]









4. Flowchart dan Listing Program [Kembali]

  • Flowchart


  • 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)  # 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)

# === Servo Motor ===
# Membaca nilai potensiometer (0 - 65535)
pot_value = pot.read_u16()

# Konversi ke sudut servo (0° - 180°)
angle = map_value(pot_value, 0, 65535, 0, 180)

# Konversi sudut ke duty cycle (1500 - 7500) → sesuai servo PWM
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 ===
# Ubah val ke frekuensi (200 Hz - 2000 Hz)
freq = int(200 + (val / 65535) * (2000 - 200))
buzzer.freq(freq)
buzzer.duty_u16(30000)  # Volume/suaranya

sleep(0.05)

5. Link Download [Kembali]
    










Komentar

Postingan populer dari blog ini

Modul 1 Praktikum Mikro

Modul 4

Modul 1