#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/spi.h"
#include "hardware/gpio.h"
// ДЕКЛАРУЄМО НІЖКИ (Тут чітко прописано твою схему з Wokwi)
#define PIN_CLK 2
#define PIN_DIN 3
#define PIN_DC 4
#define PIN_CE 5
#define PIN_RST 6
#define PIN_BL 7
// Вказуємо, який саме апаратний блок SPI ми використовуємо
#define SPI_PORT spi0
int main() {
// 1. Ініціалізуємо стандартне введення/виведення (для майбутнього зв'язку з ПК)
stdio_init_all();
// 2. НАЛАШТУВАННЯ КЕРУЮЧИХ НІЖОК (GPIO)
// Нам треба сказати Pico, що ніжки DC, CE, RST та BL працюватимуть на ВИХІД струму
gpio_init(PIN_DC);
gpio_set_dir(PIN_DC, GPIO_OUT);
gpio_init(PIN_CE);
gpio_set_dir(PIN_CE, GPIO_OUT);
gpio_init(PIN_RST);
gpio_set_dir(PIN_RST, GPIO_OUT);
gpio_init(PIN_BL);
gpio_set_dir(PIN_BL, GPIO_OUT);
// 3. НАЛАШТУВАННЯ АПАРТНОГО ШИФРА SPI
// Ініціалізуємо модуль SPI0 на частоті 4 МГц (цього з головою вистачить для Nokia 5110)
spi_init(SPI_PORT, 4000000);
// Перемикаємо ніжки CLK та DIN в апаратний режим роботи SPI
gpio_set_function(PIN_CLK, GPIO_FUNC_SPI);
gpio_set_function(PIN_DIN, GPIO_FUNC_SPI);
// 4. ТЕСТ СХЕМИ: Вмикаємо підсвітку екрана
// Подаємо логічну "1" (високий рівень напруги) на ніжку BL
gpio_put(PIN_BL, 1);
// Переводимо екран у робочий режим (прибираємо Reset та Chip Enable)
gpio_put(PIN_RST, 1); // 1 означає "не скидати, працюй"
gpio_put(PIN_CE, 1); // 1 означає "поки що відпочивай"
// Головний нескінченний цикл нашої ОС (поки що пустий)
while (true) {
// Тут мікроконтролер просто крутиться по колу, тримаючи підсвітку увімкненою
sleep_ms(1000);
}
return 0;
}