Tugas Pendahuluan 1
(Percobaan 4 kondisi 8)
1. Prosedur[Kembali]
- 1. Rangkai semua komponen di Wokwi sesuai dengan percobaan pada modul
- 2. Buat program untuk Rspberry pi pico, sesuaikan konfigurasinya dengan rangkaian pada wokwi dan kondisi yang dipakai
- 3. Masukkan Program ke wokwi (micropython)
- Simulasikan rangkaian
2. Hardware dan Diagram Blok[Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian sebelum di running :
Rangkaian sesudah di running :
Prinsip Kerja :
Jadi disini kita menggunakan wokwi untuk membuat rangkaiannya. Komponen yang kita gunakan adalah Servo, Buzzer, Raspberry Pi Pico, dan Potensiometer. Yang menjadi input untuk Raspberry Pi Pico adalah Potensiometer, sedangkan buzzer dan servo akan menjadi outputnya.
4. Flowchart dan Listing Program[Kembali]
Flowchart :
Listing Program :
from machine import Pin, PWM, ADC #Mengimpor modul kontrol hardware: Pin digital, PWM, dan ADC (analog)
from time import sleep #Mengimpor fungsi sleep untuk delay
# Inisialisasi
pot = ADC(26) # Inisialisasi input analog (potensiometer) pada pin GP26 (ADC0)
servo = PWM(Pin(16)) #Inisialisasi output PWM ke servo pada pin GP16
buzzer = PWM(Pin(14)) # Inisialisasi output PWM ke buzzer pada pin GP14
# Konfigurasi PWM
servo.freq(50) # Mengatur frekuensi PWM servo ke 50 Hz (frekuensi standar servo motor)
buzzer.freq(1000) # Mengatur frekuensi buzzer ke 1000 Hz (standar suara buzzer aktif)
python
Salin kode
def map_value(value, in_min, in_max, out_min, out_max): # Fungsi untuk memetakan nilai dari satu rentang ke rentang lain
return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
while True: # Loop utama (berjalan terus menerus)
pot_value = pot.read_u16() # Membaca nilai ADC dari potensiometer (range: 0 - 65535)
# Konversi ke sudut servo (0° - 180°)
angle = map_value(pot_value, 0, 65535, -1, 181) # Konversi nilai potensiometer ke sudut (range: -1 hingga 181)
# Validasi sudut dan kontrol buzzer
if angle < 0 or angle > 180: # Jika sudut di luar batas normal
buzzer.duty_u16(30000) # Aktifkan buzzer (nilai PWM menengah)
else:
buzzer.duty_u16(0) # Jika sudut valid, matikan buzzer
# Konversi sudut ke duty cycle servo
duty = map_value(angle, 0, 180, 1500, 7500) # Mengubah sudut menjadi nilai duty cycle untuk servo
servo.duty_u16(duty)
# Debug output
print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}") # Menampilkan nilai potensiometer, sudut, dan PWM di terminal
sleep(0.05) # Delay 50ms agar tidak terlalu cepat berubah
5. Kondisi[Kembali]
Percobaan 4 kondisi 8 :
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
6. Video Simulasi[Kembali]
7. Download File[Kembali]
Download File Rangkaian [download]
Download Video Simulasi [download]
Datasheet Raspberry Pi Pico [download]
0 komentar:
Posting Komentar