Google Chat: zj734465502@gmail.com
+86-0755-88291180
sales@spotpear.com
dragon_manager@163.com
tech-support@spotpear.com
zhoujie@spotpear.com
WhatsApp:13246739196
PICO-CAM-A is a high-performance microcontroller camera development board designed by Waveshare. With an HM01B0 grayscale camera and a 1.14-inch IPS display screen, it also has onboard 13 GPIO pin headers and a Debug interface, making it easy for users to develop with better integration into applications.
| LCD Specifications | |||
| Controller | ST7789V | Resolution | 135(H)RGB x 240(V) |
| Communication Interface | SPI | Display Dimensions | 14.864(H)x 24.912(V)mm |
| Display Panel | IPS | Pixel Size | 0.1101(H)x 0.1035(V)mm |


Demo Explanation
This example primarily involves capturing images through the camera and displaying them on a 1.14-inch LCD. The demo utilizes multi-core processing, with Core 1 responsible for acquiring image data and image processing, while Core 0 handles the image display.
Core 1 Demo Explanation
multicore_fifo_push_blocking(FLAG_VALUE);
uint32_t ack = multicore_fifo_pop_blocking();
DEV_Module_Init();
LCD_1IN14_V2_Init(HORIZONTAL);
LCD_1IN14_V2_Clear(BLACK);
UDOUBLE Imagesize = LCD_1IN14_V2_HEIGHT * LCD_1IN14_V2_WIDTH * 2;
UWORD *BlackImage;
if ((BlackImage = (UWORD *)malloc(Imagesize)) == NULL)
{
printf("Failed to apply for black memory...\r\n");
exit(0);
}
Paint_NewImage((UBYTE *)BlackImage, LCD_1IN14_V2.WIDTH, LCD_1IN14_V2.HEIGHT, 0, WHITE); Paint_SetScale(65); Paint_SetRotate(ROTATE_0); Paint_DrawImage(gImage_waveshare, 0, 0, 240, 135); LCD_1IN14_V2_Display(BlackImage); DEV_Delay_ms(500);
struct cam_config config; cam_config_struct(&config); cam_init(&config);
while (true) {
cam_capture_frame(&config);
uint16_t index = 0;
for (int y = 134; y > 0; y--) {
for (int x = 0; x < 240; x++) {
uint16_t c = image_buf[(y)*324+(x)];
uint16_t imageRGB = (((c & 0xF8) << 8) | ((c & 0xFC) << 3) | ((c & 0xF8) >> 3));
displayBuf[index++] = (uint16_t)(imageRGB >> 8) & 0xFF;
displayBuf[index++] = (uint16_t)(imageRGB) & 0xFF;
}
}
imageReady = 1;
}
Core 0 Demo Explanation
multicore_launch_core1(core1_entry);
uint32_t ack = multicore_fifo_pop_blocking();
if (ack != FLAG_VALUE)
printf("Error: Core 0 failed to receive acknowledgment from core 1!\n");
else {
multicore_fifo_push_blocking(FLAG_VALUE);
printf("Success: Core 0 Received acknowledgment from core 1!\n");
}
while (1) {
if (imageReady == 1) {
LCD_1IN14_V2_Display((uint16_t*)displayBuf);
// Reset the imageReady flag after displaying the image
imageReady = 0;
}
DEV_Delay_ms(1);
}
