TP M2 P6 K1



Percobaan 5 kondisi 1
Buzzer & Push Button


1. Prosedur[Kembali]

    1. Rangkai rangkaian di website wokwi sesuai dengan kondisi percobaan.
    2. Buat program di website wokwi.
    4. Setelah program selesai, jalankan simulasi rangkaian pada website wokwi sesuai kondisi.
    5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • Raspberry pi pico
  • LED
  • Resistor



  • Motor Servo


  • Potensio






3. Rangkaian Simulasi[Kembali]

  • Rangkaian setelah di running



  • Prinsip Kerja 
               Rangkaian ini terdiri dari Raspberry Pi Pico, LED, Potensiometer, Motor Servo, dimana inputan dari rangkaian ini iyalah dari Potensiometer yang dimana mengatur keadaan dari sistem dengan sinyal analog yang akan di coding ke Raspbery Pi Pico dimana dan akan di konversikan menjadi bit yang akan di kkirim ke motor servo sebagai acuan sudah pada kondisi sudut berpa dan lampu LED yang menandakan hasil keluaran berupa cahaya yang kita set di codingan kita untuk mengetahui lampu apa yanng hdiup pada keadaaan sudut tertentu.

4. Flowchart dan Listing Program[Kembali]

  • Flowchart




  • Listing Program

from machine import Pin, PWM, ADC
import utime

# Definisi pin
servo = PWM(Pin(16))             # Servo pada GP16
pot = ADC(Pin(28))               # Potensiometer pada GP28
led_red = Pin(0, Pin.OUT)        # LED Merah pada GP1
led_green = Pin(2, Pin.OUT)      # LED Hijau pada GP2
led_blue = Pin(3, Pin.OUT)       # LED Biru pada GP3

# Konfigurasi servo (frekuensi 50Hz)
servo.freq(50)

# Fungsi map seperti di Arduino
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)

# Variabel untuk kontrol kedipan LED
last_blink = utime.ticks_ms()
led_state = True  # Mulai dalam keadaan menyala

# Loop utama
while True:
    now = utime.ticks_ms()

    # 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 servo (1500 - 7500)
    duty = map_value(angle, 0, 180, 1500, 7500)
    servo.duty_u16(duty)

    # Debug output
    print(f"Pot Value: {pot_value}, Angle: {angle}, Duty: {duty}")

    # Toggle LED state setiap 2 detik (2000 ms)
    if utime.ticks_diff(now, last_blink) >= 2000:
        led_state = not led_state
        last_blink = now

    # Kontrol LED berdasarkan sudut servo
    if 0 <= angle <= 60:
        led_red.value(led_state)
        led_green.value(0)
        led_blue.value(led_state)
    elif 60 < angle <= 90:
        led_red.value(led_state)
        led_green.value(0)
        led_blue.value(0)
    elif 90 < angle <= 120:
        led_red.value(0)
        led_green.value(0)
        led_blue.value(0)
    else:  # 120 - 180
        led_red.value(0)
        led_green.value(0)
        led_blue.value(led_state)

    utime.sleep_ms(50)  # Delay pendek agar pembacaan stabil


5. Kondisi[Kembali]

Percobaan 6 Kondisi 1

Buatlah rangkaian seperti gambar pada percobaan 6, Buatlah ketika servo 0° - 60° (Merah & Biru menyala, Hijau mati), 60° - 90° (Merah menyala, Hijau & Biru mati), 90° - 120° (Semua LED mati), dan 120° - 180° (Biru menyala, Merah & Hijau mati). Masing-masing LED berkedip 2 Detik

6. Video Simulasi[Kembali]

     



7. Download File[Kembali]

HTML [Download]
Rangkaian [Download] 
Listing Program [Download]
Video Simulasi [Download]  
  










 

Comments

Popular posts from this blog