M5STACK ESP32 PSRAM Timer Camera Xのジャンク品を購入しました。ジャンク理由はWiFiに接続できたことが無いとなっていましたが、とりあえずカメラが使えればと購入しました
最初にカメラがちゃんと動作するかをテストします。と言っても液晶は付いていないんので、Groveコネクタ経由でLCD Unitに映像を表示させることにしました。なお、JEPEGモード、320x240で撮影し、それをLCD Unitに表示する簡単な記述になります。
#include <M5TimerCAM.h>
#include <M5GFX.h>
#include <MUnitLCD.h>
// M5UnitLCD display; // default setting
M5UnitLCD display(4, 13, 400000); // SDA, SCL, FREQ
void setup() {
TimerCAM.begin();
display.begin();
// display setting
display.setRotation(0);
display.clear(TFT_BLACK);
if (!TimerCAM.Camera.begin()) {
Serial.println("Camera Init Fail");
return;
}
Serial.println("Camera Init Success");
// Cammera setting
TimerCAM.Camera.sensor->set_pixformat(TimerCAM.Camera.sensor, PIXFORMAT_JPEG); // 画像フォーマット
TimerCAM.Camera.sensor->set_framesize(TimerCAM.Camera.sensor, FRAMESIZE_QVGA); // 画像サイズ:320x240
TimerCAM.Camera.sensor->set_vflip(TimerCAM.Camera.sensor, 1); //上下反転 0無効 1有効
TimerCAM.Camera.sensor->set_hmirror(TimerCAM.Camera.sensor, 0); //左右反転 0無効 1有効
}
void loop() {
while(true) {
if (TimerCAM.Camera.get()) {
TimerCAM.Power.setLed(255); // LED点灯
Serial.printf("pic size: %d\n", TimerCAM.Camera.fb->len);
int32_t data_size = TimerCAM.Camera.fb->len;
uint8_t* sata_buf = TimerCAM.Camera.fb->buf;
if (data_size != 0) {
display.drawJpg(sata_buf, data_size, 0, 0, 320, 240);
data_size = 0;
}
TimerCAM.Camera.free();
TimerCAM.Power.setLed(0);
}
}
TimerCAM.Camera.free();
TimerCAM.Power.setLed(0);
TimerCAM.Power.setLed(0);
}
簡単な記述なので、サクッと動作しました
カメラの詳細設定に関しては、今後いろいろと試したいと思います。
記述してから気が付きましたが、動作チェックが目的であればcameraToolsを使用すれば、もっと簡単にできました。やはり、ドキュメントは見ないといけませんね
0 件のコメント:
コメントを投稿