Raspberry Pi Pico ile I2C 2x16LCD Kullanımı

Merhaba Arkadaşlar, bu yazımda sizlere piyasada sık kullanılan I2C li 2x16LCD ekrana nasıl yazı yazdıracağız anlatacağım. Örnek olarak işlemci sıcaklığını ekranda göstereceğiz. I2C LCD ekran piyasada çok rahat bulabilirsiniz.

Pico da port olarak i2c0 ı kullandım ve pin bağlantıları aşağıdaki gibidir.

// I2C defines
#define I2C_PORT i2c0
#define I2C_SDA 4
#define I2C_SCL 5

LED, I2C ve adc init işlemlerini yaptıktan sonra, ekranı silip açılış yazısı yazdırdım ve while içinde adc okuyup ekrana yazdırdım.

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include "pico/stdlib.h"
#include "hardware/i2c.h"
#include "hardware/adc.h"
#include "hardware/gpio.h"

#include "2x16lcd.h"

#define BoardLED PICO_DEFAULT_LED_PIN
bool ledst = false;
char strtxt[50];
float cpu_temp;

int main()
{
    stdio_init_all();

    //led init
    gpio_init(BoardLED);
    gpio_set_dir(BoardLED, GPIO_OUT);
    gpio_put(BoardLED, true);

    // I2C init
    i2c_init(I2C_PORT, 400 * 1000);
    gpio_set_function(I2C_SDA, GPIO_FUNC_I2C);
    gpio_set_function(I2C_SCL, GPIO_FUNC_I2C);
    gpio_pull_up(I2C_SDA);
    gpio_pull_up(I2C_SCL);

    //Adc init
    adc_init();
    adc_select_input(4);
    adc_set_temp_sensor_enabled(true);

    //lcd init
    lcd_init();

    //acilis yazı
    lcd_clear();
    lcd_set_cursor(0, 0);
    lcd_string("Raspberry PiPICO");
    lcd_set_cursor(1, 0);
    lcd_string("2X16LCD UYG U.K.");
    sleep_ms(2000);

    lcd_clear();
    lcd_set_cursor(0, 0);
    lcd_string("Pico CPU Temp:");

    while (1)
    {
        //ADC Oku
        const float conversion_factor = 3.3F / (1 << 12);
        uint16_t result = adc_read();
        float r = result * conversion_factor;
        cpu_temp = 27 - (r - 0.706) / 0.001721;

        lcd_set_cursor(1, 0);
        sprintf((char *)strtxt, "CPU: %4.2f *C", cpu_temp);
        lcd_string(strtxt);

        //led toggle
        ledst = !ledst;
        gpio_put(BoardLED, ledst);
        sleep_ms(500);
    }

    return 0;
}

Projenin VSC dosyası için tıklayın. I2C_2x16LCD

Bir sonraki projede görüşmek üzere, Kolay gelsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.