Tugas Pendahuluan 1
Tugas Pendahuluan 1 Modul 2
(Percobaan 4 Kondisi 3)
1. Akses Wokwi melalui browser untuk mulai membuat rangkaian.
2. Buat program di wokwi sesuai dengan kondisi percobaan.
3. Compile dan jalankan program.
4. Amati hasil simulasi Wokwi dan pastikan berfungsi sesuai dengan kondisi.
5. Selesai.
.
2. Hardware dan Diagram Blok[Kembali]
Hardware:
1. Raspberry Pi Pico
2. Motor Servo
3. Buzzer
4. Potensiometer
Diagram Blok:3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Simulasi sebelum dirunning:
Rangkaian Simulasi setelah dirunning:
Prinsip Kerja:
Prinsip kerja rangkaian ini adalah menggunakan potensiometer sebagai input untuk mengatur arah dan sudut putaran motor servo melalui mikrokontroler Raspberry Pi Pico. Ketika nilai potensiometer diperkecil, Raspberry Pi Pico membaca perubahan nilai tersebut melalui pin ADC, lalu memprosesnya untuk menggerakkan motor servo searah jarum jam. Servo akan bergerak sesuai pemetaan nilai ADC ke rentang sudut 0° hingga 180°. Selain itu, sistem ini dilengkapi dengan buzzer sebagai indikator batas gerak. Jika sudut servo bergerak kurang dari 0° atau lebih dari 180°, buzzer akan aktif berbunyi untuk memberikan peringatan bahwa servo telah melebihi batas aman. Dengan demikian, rangkaian ini memungkinkan kontrol manual sudut servo dengan potensiometer serta memberikan umpan balik suara saat terjadi pelanggaran batas sudut.
4. Flowchart dan Listing Program[Kembali]
Flowchart:
Listing Program:
from machine import Pin, PWM, ADC
from time import sleep
# 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) # Frekuensi buzzer
# Fungsi mapping
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)
# Loop utama
while True:
# Baca nilai potensiometer
pot_value = pot.read_u16()
# Konversi nilai potensiometer ke sudut servo
(0-180 derajat)
angle = map_value(pot_value, 0, 65535, 180, 0)
# Konversi sudut ke duty cycle (rentang 1638 -
8192)
duty = map_value(angle, 0, 180, 1638, 8192)
servo.duty_u16(duty)
# Debugging
print(f"Pot Value: {pot_value}, Angle:
{angle}, Duty: {duty}")
# === Buzzer ===
if angle <= 0 or angle >= 180:
# Jika sudut keluar batas,
buzzer berbunyi
buzzer.duty_u16(30000) #
Suara ON
else:
buzzer.duty_u16(0) # Suara
OFF
# Delay untuk pembaruan
sleep(0.05)
Percobaan 4 Kondisi 3:
Buatlah rangkaian seperti gambar pada percobaan 4, jika nilai pada potensiometer diperkecil maka servo bergerak searah jarum jam dan jika jika sudut servo <0 ° dan >180 ° buzzer berbunyi.
Komentar
Posting Komentar