Difficulty sending data from Matlab R2018b to Arduino Uno to Micro SD
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear Fellow Matlab Enthusiasts!
Disclaimer: This is my own personal project and is not related to a school assignment, etc.
I am learning how to use Matlab with various Arduino projects. I am a seasoned Matlab user but I am fairly new to the entire Arduino space. Ironically, I think my issue is with Matlab when it pertains to interfacing Matlab and the Arduino Uno.
My objective is to send some numerical data from Matlab 18b to my Arduino Uno and then have the Arduino write it to my micro SD card. My actual project is more involved but this is where I am stuck.
The micro SD card to Arduino Uno pin configurations are as follows:
- CS <-> pin 10
- MOSI <-> pin 11
- SCK <-> pin 12
- MISO <-> pin 13
In addition, I have installed the Matlab Support Package for Arduino Hardware "Upload Arduino Server":
- I configured it for USB.
- Chose Board: Uno
- Choose Port: COM3
- Libraries included: Adafruit/MotorShieldV2, I2C, RotaryEncoder, SPI, Servo, ShiftRegister
My Matlab code is as follows:
arduinoCom = serial('COM3'); % insert your serial properties here
set(arduinoCom, 'BaudRate', 9600);
set(arduinoCom, 'Parity','none');
set(arduinoCom, 'DataBits',8);
set(arduinoCom, 'StopBit',1);
sendData = 5;
fopen(arduinoCom);
fprintf(arduinoCom,'%i', sendData); %this will send '5' to the arduino
fclose(arduinoCom);
delete(arduinoCom);
My Arduino code is as follows:
#include <SPI.h>
#include <SD.h> // load SD library
int chipSelect = 10; // Chip select pin for the MicroSD Card Adapter
int incomingByte = 0; // for incoming serial data.
File SDF; // Serial data received is saved here.
void setup() {
Serial.begin(9600); // start serial connection to print out debug messages and data
pinMode(chipSelect, OUTPUT); // chip select pin must be set to OUTPUT mode
SD.begin(chipSelect);
if (!SD.begin(chipSelect)) { // Initialize SD card
Serial.println("Could not initialize SD card."); // if return value is false, something went wrong.
}
Serial.println("SD card initialized.");
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Serial Connected");
}
void loop() {
// Open file, Write data, Close file only when you receive data
if (Serial.available() > 0) {
SDF = SD.open("DATA.txt", FILE_WRITE); // open "SerialDataFile.txt" to write data
//Serial.println("Serial Available");
incomingByte = Serial.read();
//incomingByte = incomingByte - 48;
SDF.print(incomingByte, DEC); // write ASCII-encoded decimal number to file
SDF.close(); // close file
Serial.println(incomingByte, DEC); // debug output: show written number in serial monitor
}
}
Several observations:
- The arduino does not seem to get output. It certainly does not not write anything to the micro SD.
- I am able to write data to the microSD from the serial terminal.
I expect that the issue is with my Matlab code with how it communicates with the Arduino Uno microcontroller.
I would appreciate any assistance the community can offer!
1 commentaire
Andrew Borghesani
le 30 Jan 2019
Are you able to write data to the SD card using the serial interface from the arduino IDE?
Please also note that when installing the MATLAB support package for arduino, all code currently on the board was wiped. The support package is not necessary for communicating with the Arduino via serial.
Réponses (0)
Voir également
Catégories
En savoir plus sur MATLAB Support Package for Arduino Hardware dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!