Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
2.6 kB
2
Indexable
Never
#include "xc.h"
#include <libpic30.h>

// ... (definicje makr i funkcji LCD - bez zmian)

unsigned char symbol_wiatr[8] = {
  0b00110,
  0b01010,
  0b10001,
  0b11111,
  0b10001,
  0b01010,
  0b00110,
  0b00000
};

unsigned char symbol_ogien[8] = {
  0b11111,
  0b11011,
  0b10001,
  0b10001,
  0b10001,
  0b11011,
  0b11111,
  0b00000
};

int main(void) {
    // ... (inicjalizacja rejestrów kierunku, inicjalizacja LCD - bez zmian)

    // Zapisanie symboli wiatru i ognia do pamięci CGRAM
    LCD_saveCustChar(0, symbol_wiatr);
    LCD_saveCustChar(1, symbol_ogien);

    char text1[] = "wind";
    char text2[] = "breaker";
    char text3[] = "is born!";
    int text1_index = 0;
    int text2_index = 0;
    int text3_index = 0;

    while (1) {
        // Wyczyszczenie ekranu
        LCD_sendCommand(LCD_CLEAR);

        // Wyświetlanie pierwszej linii tekstu
        LCD_setCursor(1, 0);
        for (int i = 0; i < 4; i++) {
            if (text1[text1_index] == '\0') {
                LCD_sendData(0); // Wyświetlanie symbolu wiatru z pamięci CGRAM
                text1_index = 0; // Reset indeksu tekstu 1
            } else {
                LCD_sendData(text1[text1_index]);
                text1_index++;
            }
        }

        // Wyświetlanie drugiej linii tekstu
        LCD_setCursor(2, 0);
        for (int i = 0; i < 8; i++) {
            if (text2[text2_index] == '\0') {
                LCD_sendData(1); // Wyświetlanie symbolu ognia z pamięci CGRAM
                text2_index = 0; // Reset indeksu tekstu 2
            } else {
                LCD_sendData(text2[text2_index]);
                text2_index++;
            }
        }

        // Wyświetlanie trzeciej linii tekstu
        LCD_setCursor(3, 0);
        for (int i = 0; i < 8; i++) {
            if (text3[text3_index] == '\0') {
                LCD_sendData(0); // Wyświetlanie symbolu wiatru z pamięci CGRAM
                text3_index = 0; // Reset indeksu tekstu 3
            } else {
                LCD_sendData(text3[text3_index]);
                text3_index++;
            }
        }

        __delay_ms(500); // Opóźnienie

        // Animacja zmiany tekstu
        if (text1_index == 4) {
            text1 = "good";
        } else if (text2_index == 8) {
            text2 = "food";
        } else if (text3_index == 8) {
            text3 = "cheap";
        }

        // ... (opcjonalnie: inne animacje, efekty)
    }

    return 0;
}
Leave a Comment