TP 2 M2 MIKRO
Tugas Pendahuluan 2 Modul 2
(Percobaan 5 Kondisi 1)
1. Membuat rangkaian sesuai gambar di wokwi.
2. Tulis program untuk Raspberry Pi Pico.
3. Jalankan sistem.
4. Selesai.
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Flowchart :
Listing Program :
from machine import Pin, ADC, PWM
import time
import dht
# Inisialisasi potensiometer pada GPIO 26
pot = ADC(26)
# Inisialisasi servo pada GPIO 15
servo = PWM(Pin(15))
servo.freq(50)
# Inisialisasi buzzer pada GPIO 14
buzzer = PWM(Pin(14))
buzzer.duty_u16(0)
# Inisialisasi sensor DHT22 pada GPIO 16
dht_sensor = dht.DHT22(Pin(16))
# Fungsi mapping nilai
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)
# Fungsi memainkan nada buzzer
def play_buzzer_note(freq, duration_ms):
buzzer.freq(freq)
buzzer.duty_u16(32768) # Volume sedang
time.sleep_ms(duration_ms)
buzzer.duty_u16(0)
time.sleep_ms(50)
# Melodi jika suhu < 35°C
def melody_low_temp():
play_buzzer_note(523, 200) # C5
play_buzzer_note(587, 200) # D5
play_buzzer_note(659, 200) # E5
# Melodi jika kelembapan > 50%
def melody_high_humidity():
play_buzzer_note(784, 200) # G5
play_buzzer_note(880, 200) # A5
play_buzzer_note(988, 200) # B5
# Melodi kombinasi (suhu < 35 dan kelembapan > 50)
def melody_combined():
play_buzzer_note(1047, 200) # C6
play_buzzer_note(1175, 200) # D6
play_buzzer_note(1319, 200) # E6
# Loop utama
while True:
# Baca nilai potensiometer dan gerakkan servo
pot_value = pot.read_u16()
servo_angle = map_value(pot_value, 0, 65535, 0, 180)
servo_duty = map_value(servo_angle, 0, 180, 1638, 8192)
servo.duty_u16(servo_duty)
# Baca suhu dan kelembapan dari DHT22
try:
dht_sensor.measure()
temperature = dht_sensor.temperature()
humidity = dht_sensor.humidity()
print(f"Suhu: {temperature}°C | Kelembapan: {humidity:.1f}% | sudut {servo_angle}")
# Cek kondisi dan mainkan melodi yang sesuai
if temperature < 35 and humidity > 50:
print("🌡️ Suhu rendah & 💧 Kelembapan tinggi — Combined melody")
melody_combined()
elif temperature < 35:
print("🌡️ Suhu rendah — Low temp melody")
melody_low_temp()
elif humidity > 50:
print("💧 Kelembapan tinggi — High humidity melody")
melody_high_humidity()
else:
buzzer.duty_u16(0) # Matikan buzzer
except OSError:
print("⚠️ Gagal membaca sensor DHT22.")
time.sleep(0.5)
5. Kondisi
[Kembali]
Percobaan 5 Kondisi 1
Buatlah rangkaian seperti gambar pada percobaan 5. Jika potensiometer diputar searah jarum jam, servo bergerak searah jarum jam. Jika suhu < 35°C buzzer berbunyi, jika kelembapan >50% buzzer berbunyi, jika kedua kondisi tadi memnuhi buzzer jugaberbunyi. Dimana masing masing keadaan tadi memiliki bunyi yang berbeda
6. Video Simulasi
[Kembali]
7. Download File
[Kembali]
Datasheet LED RGB Download
Datasheet Resistor Download
Datasheet Buzzer Download
Komentar
Posting Komentar