TunahanC
SbX
- Katılım
- 31 Mayıs 2024
- Mesajlar
- 102
Biraz karışık bir soru olacak. Eklerde kullandığım kütüphaneler mevcut elimde 1 adet Arduino Mega için shieldlanmış 3.5 inc TFT ekran (sürücüsü ili9486) var. Kütüphaneleri internetten buldum sağolsun (link(github)) birisi çok güzel ve görece anlaşılır şekilde yazmış. FSMC nedir ne değildir öğrenmek için çıktığım bu yolda bu bağlantıyı 3+ kere yaptığım halde beyaz ekran görmekten öteye geçemedim. Bu shieldda RD pini eksik. Tanım yaparken;
şeklinde bir tanım yapılmış. Sorum şu sadece RD pinim eksik diye aşağıdaki kod çalışmıyor olabilir mi? Fakat bu durumda Arduino Mega için nasıl çalışıyor? Biraz Arduino kütüphanesine baktım orada da gözüme RD pini çarpmadı.
şeklinde olan kodu deniyorum, aşağıda ise ekranın bir fotosu var. Kullandığım stm32 ise Stm32f407 - disc board.
Kod:
FSMC_NEx<-LCD_CS), FSMC_NOE<-LCD_RD, FSMC_NWE<-LCD_WR, FSMC_Ax<-LCD_RS
Deneme Kodu:
void demo_ciz() {
// Düz mavi bir arka plan çiz
ili9486_FillRect(0, 0, ili9486_GetLcdPixelWidth(), ili9486_GetLcdPixelHeight(), 0x001F); // Mavi Renk (RGB565)
// Ekranın ortasına yatay ve dikey çizgi çiz
uint16_t x_center = ili9486_GetLcdPixelWidth() / 2;
uint16_t y_center = ili9486_GetLcdPixelHeight() / 2;
ili9486_DrawHLine(0xF800, 0, y_center, ili9486_GetLcdPixelWidth()); // Kırmızı yatay çizgi
ili9486_DrawVLine(0x07E0, x_center, 0, ili9486_GetLcdPixelHeight()); // Yeşil dikey çizgi
}
void demo_ciz1() {
// Düz beyaz bir arka plan çiz
ili9486_FillRect(0, 0, ili9486_GetLcdPixelWidth(), ili9486_GetLcdPixelHeight(), 0xFFFF); // Beyaz Renk (RGB565)
// Ekranın ortasında bir kırmızı dikdörtgen çiz
uint16_t x_center = ili9486_GetLcdPixelWidth() / 2;
uint16_t y_center = ili9486_GetLcdPixelHeight() / 2;
ili9486_FillRect(x_center - 50, y_center - 30, 100, 60, 0xF800); // Kırmızı dikdörtgen
// Dikdörtgenin üzerine bir yeşil çapraz çizgi ekle
for (uint16_t i = 0; i < 60; i++) {
ili9486_WritePixel(x_center - 50 + i, y_center - 30 + i, 0x07E0); // Yeşil renk (RGB565)
ili9486_WritePixel(x_center + 50 - i, y_center - 30 + i, 0x07E0); // Yeşil renk (RGB565)
}
}
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_FSMC_Init();
/* USER CODE BEGIN 2 */
ili9486_Init(); // LCD ekranı başlat
ili9486_DisplayOn(); // LCD ekranı aç
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
demo_ciz();
HAL_Delay(1000);
demo_ciz1();
HAL_Delay(1000);
}
/* USER CODE END 3 */
}
şeklinde olan kodu deniyorum, aşağıda ise ekranın bir fotosu var. Kullandığım stm32 ise Stm32f407 - disc board.
Son düzenleme: