2018年11月12日 星期一

DIY - ESP32:ESP32 OV7670 數位靜態相機 DSC 程式(二十九)

DIY - ESP32:ESP32 OV7670 數位靜態相機 DSC 程式(二十九):

完成了 OV7670(圖像傳感器)、 ILI9341(TFT LCD 屏幕)和 XPT2046(電阻式觸摸屏)的程式,便可以將功能合併為一個數位靜態相機(Digital Still Camera,DSC),當然是非常簡單的功能,祇要觸碰觸摸屏,便馬上攝取鏡頭前面的影像,然後在 ILI9341 TFT LCD 屏幕上顯示。

ESP32 OV7670 數位靜態相機 DSC 製作
ESP32 OV7670 數位靜態相機 DSC IO 設定:
// OV7670 IO 設定
#define pinSCL            22  // OV7670 i2c clock
#define pinSDA            21  // OV7670 i2c data
#define pinVSYNC       39  // OV7670 Vsync

#define pinRCK            4 // FIFO read clock
#define pinRRST          5 // FIFO read pointer reset to beginning of frame
#define pinWR            19 // FIFO write enable

#define pinD0              32  // FIFO read data pins D0
#define pinD1              33  // FIFO read data pins D1
#define pinD2              34  // FIFO read data pins D2
#define pinD3              35  // FIFO read data pins D3
#define pinD4              36  // FIFO read data pins D4
#define pinD5                2  // FIFO read data pins D5
#define pinD6              26  // FIFO read data pins D6
#define pinD7              27  // FIFO read data pins D7

// XPT2046 Touch Screen I/O Definition
// XPT2046 CS=Chip Select Pin
#define XPT2046_CS              0
#define XPT2046_CS_0          {GPIO.out_w1tc = (1 << XPT2046_CS);}
#define XPT2046_CS_1          {GPIO.out_w1ts = (1 << XPT2046_CS);}

//Definitions for T_DI pin Input (MCU Output MOSI)
#define XPT2046_MOSI          18
#define XPT2046_MOSI_0      {GPIO.out_w1tc = (1 << XPT2046_MOSI);}
#define XPT2046_MOSI_1      {GPIO.out_w1ts = (1 << XPT2046_MOSI);}

//Definitions for T_DO pin Output (MCU Input MISO)
#define XPT2046_MISO          17
#define XPT2046_MISO_IN     gpio_get_level(GPIO_NUM_17)

//Definitions for T_CLK pin (SCK) Output
#define XPT2046_SCK            23
#define XPT2046_SCK_0        {GPIO.out_w1tc = (1 << XPT2046_SCK);}
#define XPT2046_SCK_1        {GPIO.out_w1ts = (1 << XPT2046_SCK);}

// XPT2046 Interrupt IRQ
#define XPT2046_IRQ             25

ESP32 OV7670 數位靜態相機 DSC 程式:
while(1) {   
            if (shutter == 1){
           
            OV7670_captureFrame();
            vTaskDelay(100 / portTICK_PERIOD_MS);
           
            OV7670_rrst();
            vTaskDelay(100 / portTICK_PERIOD_MS);
           
            OV7670_readLine2();
            vTaskDelay(100 / portTICK_PERIOD_MS);

            ili9341_hspi_Circle(40, 120, 20, ILI9341_BLACK);
           
            sprintf(dsp_buffer,"Timer=%d",timer);
            oled_Print(0, 2, dsp_buffer, 1);
            timer++;
            shutter = 0;
            }
}

操作系統:Windows 7 64-bit 版本
開發環境:AiThinker05 版本
原程碼: ESP32 ESP-IDF V3.0rc1
程式: DIY-ESP32-080-OV7670_06_XTP2046-20181030

Sanwa YX360TRF 盒樣本
ESP32 + OV7670 DSC 拍攝樣本
ESP32 + OV7670 DSC 拍攝樣本在 ILI9341 LCD 屏顯示
相關網址:
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器介紹(十八)
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器原理(十九)
※ DIY - ESP32:OV7670 CMOS VGA 圖像傳感器控制(二十)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片介紹(二十一)
※ DIY - ESP32:AverLogic AL422B FIFO 晶片原理(二十二)
※ DIY - ESP32:OV7670 + AL422B FIFO 圖像傳感器模組介紹(二十三)
※ DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組硬件(二十四)
※ DIY - ESP32:ESP32 + OV7670 + AL422B 攝像頭模組程式(二十五)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組電路(二十六)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 I/O 程式(二十七)
※ DIY - ESP32:ESP32 XPT2046 電阻式觸摸屏模組 INT 程式(二十八)

2018年 11月 12日 天氣報告
氣溫:24.2@ 20:10
相對濕度:百分之 83%
天氣:大致多雲

沒有留言:

張貼留言