GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
cameraの画像を配列に入れて、グレー色部分をPCへ送り、PCで表示したい。
maenoh!様の記事にありました内容
cameraの画像取り込みバッファをコピーする方法
このようなプログラム作成しました。
Serial通信で、コマンド「G」:画像取得
Serial通信で、コマンド「S」:データー送信
GR-LYCHEEからの受信が終わり、画像を表示すると、真っ暗になりました。
今回は、白黒にするので、輝度信号の部分を考えておりました。
以下プログラムです。
ご教授お願いします。
#include <Arduino.h>#include <Camera.h>#include "EasyAttach_CameraAndLCD.h"#define PIXEL_WIDTH 480#define PIXEL_HEIGHT 272#define ASPECT_RATIO_16_9 (1) // 0->4:3 1->16:9#define IMAGE_HW 480#define IMAGE_VW (IMAGE_HW*3/4)#define MataMax IMAGE_HW * IMAGE_VW Camera camera(IMAGE_HW, IMAGE_VW);DisplayBase Display;unsigned char incomingByte;unsigned char CameraData[ MataMax ]; //void lcd_begin(int x, int y, int width, int height, int stride, bool aspect) { if(aspect == 0){ EasyAttach_Init(Display); //aspect ratio 4:3 } else { EasyAttach_Init(Display, 640, 360); //aspect ratio 16:9 } DisplayBase::rect_t rect; rect.hs = x; rect.hw = x + width; rect.vs = y; rect.vw = y + height; Display.Graphics_Read_Setting(DisplayBase::GRAPHICS_LAYER_0, (void *) camera.getImageAdr(), stride, GRAPHICS_FORMAT, // YUV422 WR_RD_WRSWA, &rect); Display.Graphics_Start(DisplayBase::GRAPHICS_LAYER_0); Thread::wait(50); EasyAttach_LcdBacklight(true);}void setup() { unsigned long i; for (i = 0; i < MataMax; i++) { CameraData[ i ] = 0; } //通信設定 Serial.begin(115200); incomingByte = 0; //カメラ camera.begin(); lcd_begin(0, 0, IMAGE_HW, IMAGE_HW*9/16, IMAGE_HW * 2, 0); for (i = 0; i < MataMax; i++ ) { CameraData[ i ] = 0; } }//画像Data取得YUV422void Get_CameraDataYUV422(){ unsigned char Data; // unsigned long Pnt; // Pnt = 0; uint8_t* adr = camera.getImageAdr(); for (int i = 0; i < IMAGE_VW; i++) { for (int j = 0; j < IMAGE_HW; j++) { //Y0 Data =*adr; CameraData[ Pnt ] = Data; Pnt++; adr++; //U, Y1, V adr++; adr++; adr++; } }}//画像Data送信YUV422void Send_CameraDataYUV422(){ unsigned long i; unsigned char Data; for (i = 0; i < MataMax; i++) { Data = CameraData[ i ]; Serial.write( Data ); delay(1); // wait for a second }}//命令受信分岐void Get_SerialData(){ // see if there's incoming serial data: if (Serial.available() > 0) { // read the oldest byte in the serial buffer: incomingByte = Serial.read(); if (incomingByte == 'G') { //画像取得 Get_CameraDataYUV422(); //画像Data取得YUV422 } if (incomingByte == 'S') { //画像送信 Send_CameraDataYUV422(); } }} void loop() { Get_SerialData();}