ESP32-CAM获取的图像显示在OLED上面 た 入场券 2021-10-29 21:54 1994阅读 0赞 [ESP32CAM图像显示在1.3寸240\*240的彩屏上面][ESP32CAM_1.3_240_240] [ESP32CAM使用串口将图像传到上位机里面显示][ESP32CAM] 把ESP32-cam获取的数据显示在0.96inch的OLED上面如下图: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4ODc3MTI1_size_16_color_FFFFFF_t_70]![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4ODc3MTI1_size_16_color_FFFFFF_t_70 1] IIC - SSD1306 ESP32-cam IIC 引脚: SCL:PIN14 SDA:PIN15 #include "esp_camera.h" #include "SSD1306.h" // clk:14; sda:15 SSD1306 display(0x3c, 15, 14); #define SCREEN_WIDTH 128 // OLED显示宽度,以像素为单位 #define SCREEN_HEIGHT 64 #define PWDN_GPIO_NUM 32 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 0 #define SIOD_GPIO_NUM 26 #define SIOC_GPIO_NUM 27 #define Y9_GPIO_NUM 35 #define Y8_GPIO_NUM 34 #define Y7_GPIO_NUM 39 #define Y6_GPIO_NUM 36 #define Y5_GPIO_NUM 21 #define Y4_GPIO_NUM 19 #define Y3_GPIO_NUM 18 #define Y2_GPIO_NUM 5 #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22 static camera_config_t camera_config = { .pin_pwdn = PWDN_GPIO_NUM, .pin_reset = RESET_GPIO_NUM, .pin_xclk = XCLK_GPIO_NUM, .pin_sscb_sda = SIOD_GPIO_NUM, .pin_sscb_scl = SIOC_GPIO_NUM, .pin_d7 = Y9_GPIO_NUM, .pin_d6 = Y8_GPIO_NUM, .pin_d5 = Y7_GPIO_NUM, .pin_d4 = Y6_GPIO_NUM, .pin_d3 = Y5_GPIO_NUM, .pin_d2 = Y4_GPIO_NUM, .pin_d1 = Y3_GPIO_NUM, .pin_d0 = Y2_GPIO_NUM, .pin_vsync = VSYNC_GPIO_NUM, .pin_href = HREF_GPIO_NUM, .pin_pclk = PCLK_GPIO_NUM, .xclk_freq_hz = 20000000, .ledc_timer = LEDC_TIMER_0, .ledc_channel = LEDC_CHANNEL_0, .pixel_format = PIXFORMAT_GRAYSCALE, .frame_size = FRAMESIZE_QQVGA2, .jpeg_quality = 12, .fb_count = 1, }; byte x,y; uint8_t oldpixel, newpixel; int quanterror; esp_err_t camera_init() { //initialize the camera esp_err_t err = esp_camera_init(&camera_config); if (err != ESP_OK) { Serial.print("Camera Init Failed"); return err; } sensor_t * s = esp_camera_sensor_get(); //initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV2640_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_contrast(s, 1); } Serial.print("Camera Init OK"); return ESP_OK; } void my_camera_show(void) { camera_fb_t *fb = esp_camera_fb_get(); int i = 0; for(y = 0; y < SCREEN_HEIGHT; y++) { for(x = 0;x < SCREEN_WIDTH; x++) { oldpixel = fb->buf[i]; //保持原始的灰度值 newpixel = (255*(oldpixel >> 7)); //门槛值128 fb->buf[i] = newpixel; //缓冲区现在是单通道,0或255 // floyd-steignburg抖动算法 quanterror = oldpixel - newpixel; //像素之间的误差 //将此错误分发给相邻像素: //右 if(x < SCREEN_WIDTH-1)//边界检查... { fb->buf[(x + 1)+(y * SCREEN_WIDTH)] += ((quanterror * 7)>> 4); } // 左下 if((x > 1) && (y < SCREEN_HEIGHT-1))//边界检查... { fb->buf [(x-1)+((y + 1)* SCREEN_WIDTH)] == ((quanterror * 3)>> 4); } //下 if(y < 63)//边界检查... { fb->buf [(x)+((y + 1)* SCREEN_WIDTH)] == ((quanterror * 5)>> 4); } // 右下 if((x < SCREEN_WIDTH-1) && (y < SCREEN_HEIGHT-1))//边界检查... { fb->buf [(x + 1) + ((y + 1)* SCREEN_WIDTH)] == (quanterror >> 4); } // 画这个像素 switch(fb->buf[i]%2) { case 0: display.setColor(BLACK); break; case 1: display.setColor(WHITE); break; case 2: display.setColor(INVERSE); break; } display.setPixel(x, y); i++; } } display.display(); esp_camera_fb_return(fb); } void setup() { Serial.begin(115200); display.init(); camera_init(); Serial.setDebugOutput(true); Serial.println(); Serial.print("sys is 1..."); Serial.print("sys is running!"); } void loop() { my_camera_show(); } [ESP32CAM_1.3_240_240]: https://liefyuan.blog.csdn.net/article/details/107179464 [ESP32CAM]: https://liefyuan.blog.csdn.net/article/details/103500870 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4ODc3MTI1_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20190817021119533.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4ODc3MTI1,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4ODc3MTI1_size_16_color_FFFFFF_t_70 1]: /images/20211029/a038ac45b68f417fb97c6c1a7898e928.png
相关 ESP32-Cam--通过Http协议来显示一张图片 include <esp_wifi.h> include <esp_event_loop.h> include <esp_log.h> incl 谁借莪1个温暖的怀抱¢/ 2023年06月20日 06:18/ 0 赞/ 37 阅读
相关 ESP32-Cam--获取图像定时写入SD卡 include <esp_event_loop.h> include <esp_log.h> include <esp_system.h> in ﹏ヽ暗。殇╰゛Y/ 2023年06月20日 06:18/ 0 赞/ 32 阅读
相关 esp32cam通过无线局域网进行图像传输 前言 5月份逛淘宝的时候心血来潮入手了一块esp32cam,想借机玩玩esp32系列,没曾想到5、6月份都被比赛和期末考的事情排满了,昨天刚考完试放假,所以今天赶紧掏出来 叁歲伎倆/ 2022年10月13日 12:52/ 0 赞/ 695 阅读
相关 ESP32-CAM--使用(三) 为了玩,从接触技术到现在就是为了搭建一个小车,可以使用手机控制,小车上装有摄像头,可以把图像传输到手机上面,总结来说就是: 1、价格低廉 2、支持摄像头视频流传输 ╰+攻爆jí腚メ/ 2021年11月02日 12:26/ 0 赞/ 331 阅读
相关 ESP32-CAM 使用 (二) 拿到这个板子之后,第一件事就是好奇这个板子还有几个引脚可以让我来使用? ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_sh 柔光的暖阳◎/ 2021年11月01日 11:06/ 0 赞/ 532 阅读
相关 ESP32-CAM 使用(一) 文章目录 其他文章 可能会出现的问题 其他文章 [ESP32-CAM获取的图像显示在OLED上面][ESP32-CAM_OLED] [ESP32C 柔情只为你懂/ 2021年11月01日 11:04/ 0 赞/ 1373 阅读
相关 ESP32-CAM获取的图像显示在OLED上面 [ESP32CAM图像显示在1.3寸240\240的彩屏上面][ESP32CAM_1.3_240_240] [ESP32CAM使用串口将图像传到上位机里面显示][ESP32 た 入场券/ 2021年10月29日 21:54/ 0 赞/ 1995 阅读
相关 ESP32-CAM+OLED OLED引脚使用IIC协议: SCL:PIN14 SDA:PIN15 include <WiFi.h> include "esp_http_se 超、凢脫俗/ 2021年10月29日 17:52/ 0 赞/ 459 阅读
相关 ESP32--Arduino--使用oled 安装库 [https://github.com/ThingPulse/esp8266-oled-ssd1306][https_github.com_ThingPulse_esp Myth丶恋晨/ 2021年10月29日 17:40/ 0 赞/ 766 阅读
相关 ESP32-CAM--使用(四) include "SSD1306.h" include "esp_camera.h" SSD1306 display(0x3c, 15, 14 深藏阁楼爱情的钟/ 2021年10月29日 11:34/ 0 赞/ 538 阅读