LA M3 PRAK UP UC




LA  Modul 3
(Percobaan 4)

1. Prosedur
[Kembali]

  1. Rangkai semua komponen pada breadboard yang terhubung ke 2 buah Raspberry Pi Pico.
  2. Hubungkan Raspberry Pi Pico dengan aplikasi Thony IDE menggunakan kabel  USB.
  3. Build program yang telah dibuat, lalu inputkan program ke dalam mikrokontroler melalui stlink.
  4. Setelah program diinputkan, uji rangkaian yang telah dirangkai sesuai dengan output yang ditentukan.
  5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

a) Raspberry Pi Pico


2. Potensiometer




3. LCD

4. Breadboard
BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia
 

Diagram Blok  :


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]





Prinsip Kerja : 

Sistem ini bekerja dengan memanfaatkan dua mikrokontroler yang saling berkomunikasi secara serial (UART). Satu mikrokontroler bertindak sebagai pengirim (TX) dan yang lainnya sebagai penerima (RX). Di sisi pengirim, posisi potensiometer diukur melalui pin ADC0 (GPIO26) dan diubah menjadi nilai digital. Nilai digital ini kemudian dikirimkan secara berkala (setiap 0,5 detik) ke mikrokontroler penerima melalui jalur UART dengan format teks yang diawali dengan "POT:".

Di sisi penerima, mikrokontroler terus memantau data yang masuk melalui UART. Ketika data diterima, mikrokontroler akan mengolahnya dan mencari pola "POT:". Jika pola tersebut ditemukan, mikrokontroler akan mengambil nilai digital potensiometer dan menampilkannya pada layar LCD 16x2 yang terhubung melalui jalur I2C. Sebaliknya, jika data yang diterima tidak sesuai format atau terjadi masalah dalam prosesnya, layar LCD akan menampilkan pesan "ERROR" dan pesan kesalahan juga akan ditampilkan untuk membantu mencari sumber masalah. Singkatnya, rangkaian ini memungkinkan kita untuk melihat nilai potensiometer secara langsung dalam bentuk angka digital pada layar LCD.


4. Flowchart dan Listing Program [Kembali]

Flowchart :


Listing Program :

import utime

import gc


from lcd_api import LcdApi

from machine import I2C


# PCF8574 pin definitions

MASK_RS = 0x01       # P0

MASK_RW = 0x02       # P1

MASK_E  = 0x04       # P2


SHIFT_BACKLIGHT = 3  # P3

SHIFT_DATA      = 4  # P4-P7


class I2cLcd(LcdApi):

    

    #Implements a HD44780 character LCD connected via PCF8574 on I2C


    def init(self, i2c, i2c_addr, num_lines, num_columns):

        self.i2c = i2c

        self.i2c_addr = i2c_addr

        self.i2c.writeto(self.i2c_addr, bytes([0]))

        utime.sleep_ms(20)   # Allow LCD time to powerup

        # Send reset 3 times

        self.hal_write_init_nibble(self.LCD_FUNCTION_RESET)

        utime.sleep_ms(5)    # Need to delay at least 4.1 msec

        self.hal_write_init_nibble(self.LCD_FUNCTION_RESET)

        utime.sleep_ms(1)

        self.hal_write_init_nibble(self.LCD_FUNCTION_RESET)

        utime.sleep_ms(1)

        # Put LCD into 4-bit mode

        self.hal_write_init_nibble(self.LCD_FUNCTION)

        utime.sleep_ms(1)

        LcdApi.init(self, num_lines, num_columns)

        cmd = self.LCD_FUNCTION

        if num_lines > 1:

            cmd |= self.LCD_FUNCTION_2LINES

        self.hal_write_command(cmd)

        gc.collect()


    def hal_write_init_nibble(self, nibble):

        # Writes an initialization nibble to the LCD.

        # This particular function is only used during initialization.

        byte = ((nibble >> 4) & 0x0f) << SHIFT_DATA

        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))

        self.i2c.writeto(self.i2c_addr, bytes([byte]))

        gc.collect()

        

    def hal_backlight_on(self):

        # Allows the hal layer to turn the backlight on

        self.i2c.writeto(self.i2c_addr, bytes([1 << SHIFT_BACKLIGHT]))

        gc.collect()

        

    def hal_backlight_off(self):

        #Allows the hal layer to turn the backlight off

        self.i2c.writeto(self.i2c_addr, bytes([0]))

        gc.collect()

        

    def hal_write_command(self, cmd):

        # Write a command to the LCD. Data is latched on the falling edge of E.

        byte = ((self.backlight << SHIFT_BACKLIGHT) |

                (((cmd >> 4) & 0x0f) << SHIFT_DATA))

        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))

        self.i2c.writeto(self.i2c_addr, bytes([byte]))

        byte = ((self.backlight << SHIFT_BACKLIGHT) |

                ((cmd & 0x0f) << SHIFT_DATA))

        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))

        self.i2c.writeto(self.i2c_addr, bytes([byte]))

        if cmd <= 3:

            # The home and clear commands require a worst case delay of 4.1 msec

            utime.sleep_ms(5)

        gc.collect()


    def hal_write_data(self, data):

        # Write data to the LCD. Data is latched on the falling edge of E.

        byte = (MASK_RS |

                (self.backlight << SHIFT_BACKLIGHT) |

                (((data >> 4) & 0x0f) << SHIFT_DATA))

        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))

        self.i2c.writeto(self.i2c_addr, bytes([byte]))

        byte = (MASK_RS |

                (self.backlight << SHIFT_BACKLIGHT) |

                ((data & 0x0f) << SHIFT_DATA))      

        self.i2c.writeto(self.i2c_addr, bytes([byte | MASK_E]))

        self.i2c.writeto(self.i2c_addr, bytes([byte]))

        gc.collect()



5. Video Demo [Kembali]




6. Analisa [Kembali]



7. Download File [Kembali]

Download HTML [Download]
Download Video Demo [Download]
Datasheet Raspberry Pi Pico [Download]
Datasheet LCD [Download]
Datasheet Potensiometer [Download]






















Komentar

Postingan populer dari blog ini

LA MODUL 4 UP UC

Transistor Testing

MODUL 1 - DIODA