Arduino からSPI経由SDcard を使ってloggerを作りたい

1 次查看(过去 30 天)
裕利 中尾
裕利 中尾 2023-1-17
SDmodule を使いたいです。
SPI WritRead block の help にSDcardへの store の記載がありますが、data form が分かりません。
Arduino IDE の #include <SC.h> のライブラリを使えればいいのだと思いますが、
Simulink のモデル中にどのように取り込めばいいのか教えていただけるとありがたいです。

回答(1 个)

Toshinobu Shintai
Toshinobu Shintai 2023-1-31
编辑:Toshinobu Shintai 2023-1-31
一般的には、以下で説明されている MATLAB System ブロックを使ったワークフローを推奨しています。
  4 个评论
裕利 中尾
裕利 中尾 2023-2-10
ありがとうございます。
エラーマークが消えました。
続けてみます。
裕利 中尾
裕利 中尾 2023-2-15
根本的に skill 不足で解決できないエラーだらけです。
***
Recommended Skills
To develop a device driver block for Arduino hardware boards, familiarity with the following skills is recommended:
***
↑他に s-function を使う方法が公開されていて試していますが、
ビルド時、以下のログが出ました。
・・・正常に作成されたが結局 failed の原因がわかりません。
Arduino IDE のサンプルスケッチ(.ino)をそのまま書き込む方法があると助かるのですが・・・
### 'SD_logger.c' は正常に作成されました
### 'SD_logger_wrapper.c' は正常に作成されました
### 'SD_logger.tlc' は正常に作成されました
Compile of 'SD_logger.c' failed.
<SD_logger_wrapper.c>
/*
* Include Files
*
*/
#if defined(MATLAB_MEX_FILE)
#include "tmwtypes.h"
#include "simstruc_types.h"
#else
#include "rtwtypes.h"
#endif
/* %%%-SFUNWIZ_wrapper_includes_Changes_BEGIN --- EDIT HERE TO _END */
#include <math.h>
#include <SPI.h>
#include <SD.h>
/* %%%-SFUNWIZ_wrapper_includes_Changes_END --- EDIT HERE TO _BEGIN */
#define u_width 1
/*
* Create external references here.
*
*/
/* %%%-SFUNWIZ_wrapper_externs_Changes_BEGIN --- EDIT HERE TO _END */
/* extern double func(double a); */
const int chipSelect =53;
/* %%%-SFUNWIZ_wrapper_externs_Changes_END --- EDIT HERE TO _BEGIN */
/*
* Start function
*
*/
void SD_logger_Start_wrapper(real_T *xD)
{
/* %%%-SFUNWIZ_wrapper_Start_Changes_BEGIN --- EDIT HERE TO _END */
/*
* カスタム開始コードをここに配置します。
// void setup(){
// Open serial communications and wait for port to open:
Serial.begin(31250);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Initializing SD card...");
//see if the dcard is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed,or not present");
//don't do anythingmore:
while(1);
}
Serial.println("card initialized.");
*/
/* %%%-SFUNWIZ_wrapper_Start_Changes_END --- EDIT HERE TO _BEGIN */
}
/*
* Output function
*
*/
void SD_logger_Outputs_wrapper(const uint16_T *Time,
const real_T *xD)
{
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_BEGIN --- EDIT HERE TO _END */
/* このサンプルは、出力を入力と等しく設定します
//make a stringf for assembling the data to log:
String dataString = "";
// read inputs:
for (uint16 Time){
}
// open the file. note that only one file can be open at a time,
// lso you have to vlose this one file can be opening another.
File dataFile = SD.open("datalog.txt,FILE_WRITE);
// if the file is available, wtrite to it:
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
// print to the serial port too:
Serial.println(dataString);
}
// if the file is'nt open, pop up an error;
else{
Serial.println("error opening datalog.txt")
}
*/
/* %%%-SFUNWIZ_wrapper_Outputs_Changes_END --- EDIT HERE TO _BEGIN */
}
/*
* Updates function
*
*/
void SD_logger_Update_wrapper(const uint16_T *Time,
real_T *xD)
{
/* %%%-SFUNWIZ_wrapper_Update_Changes_BEGIN --- EDIT HERE TO _END */
/* %%%-SFUNWIZ_wrapper_Update_Changes_END --- EDIT HERE TO _BEGIN */
}

请先登录,再进行评论。

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!