基本ライブラリ
デジタルIO
アナログIO
拡張IO
時間
数学
三角関数
乱数
ビットバイト操作
割り込み
シリアル通信
標準ライブラリ
カメラ
サーボモーター
ステッピングモーター
キャラクタ液晶表示
SPI通信
I2C通信(Wire)
SD
SD(File操作)
周期処理(MsTimer2)
時計(RTC)
Mbed Tips
Storage
SD、USBをストレージとして、Mbed OSのファイルクラスを使ったサンプルです。
サンプルプログラム
写真をストレージに保存し、その後保存した写真を読んでUSB0に送信します。
#include <Arduino.h>
#include <Camera.h>
#include <RTC.h>
#include <DisplayApp.h>
#include "SdUsbConnect.h"
#define IMAGE_HW 640
#define IMAGE_VW 480
Camera camera(IMAGE_HW, IMAGE_VW); // CMOS Camera
DisplayApp display_app;
SdUsbConnect storage("storage");
RTC rtc; // for time stamp
void setup() {
Serial.begin(9600);
pinMode(PIN_LED_RED, OUTPUT);
pinMode(PIN_LED_GREEN, OUTPUT);
pinMode(PIN_LED_YELLOW, OUTPUT);
Serial.println("Test starts");
// RTC
rtc.begin();
rtc.setDateTime(2017, 10, 14, 15, 40, 0);
// Camera
camera.begin();
// SD & USB
Serial.print("Finding strage..");
storage.wait_connect();
Serial.println("done");
}
void loop() {
FILE * wp = fopen("/storage/lychee_camera.jpg", "w");
if (wp != NULL) {
digitalWrite(PIN_LED_YELLOW, HIGH);
size_t size = camera.createJpeg();
fwrite(camera.getJpegAdr(), sizeof(char), (int) size, wp);
fclose(wp);
digitalWrite(PIN_LED_YELLOW, LOW);
} else {
Serial.print("Not found jpg");
digitalWrite(PIN_LED_RED, HIGH);
delay(1);
}
FILE * fp = fopen("/storage/lychee_camera.jpg", "r");
if (fp != NULL) {
digitalWrite(PIN_LED_GREEN, HIGH);
fseek(fp, 0, SEEK_END);
uint32_t jpegSize = ftell(fp);
fseek(fp, 0, SEEK_SET);
uint8_t * buffer = (uint8_t*) malloc(jpegSize);
for (uint32_t i = 0; i < jpegSize; i++) {
buffer[i] = (uint8_t) fgetc(fp);
}
display_app.SendJpeg(buffer, jpegSize);
fclose(fp);
digitalWrite(PIN_LED_GREEN, LOW);
} else {
Serial.print("Not found jpg");
digitalWrite(PIN_LED_RED, HIGH);
delay(1);
}
}
}