Аналоговый сигнал оцифровывается на Arduino Leonardo и передаётся по блютузу (HC-05) на ноутбук в матлаб. Выполнение должно было длиться около 3 секунд, а длилось минут 5! Понятное дело, на графике, вместо кардиограммы, сплошные ломанные линии. Думаю что сильно тормозит матлаб. Можно ли как-то по другому организовать передачу данных? Может какой-то другой прогой записывать данные в текстовый файл, а потом в матлабе обрабатывать? Хотя изначально хотелось просматривать график в реальном времени... И от матлаба отказываться не хочется, где ещё есть такие возможности для анализа?
Дополнен 7 лет назад
bt=Bluetooth('chip',1) %создаём объект блютуз pause(5) fopen(bt) %открываем его для чтения pause(5) arrayTime=[]; %массив для записи значений времени arrayU=[]; %массив для записи значений напряжения t=0; iteration=3000; for 0:1:iteration fwrite(bt,1); %отправляем ардуине 1 while bt.BytesAvailable == 0 %ждём пока придёт от неё байт end bt1=fscanf(bt); %считываем байт как текст bt2=str2double(bt1); %переводим текст в число arrayU=[arrayU,bt2]; %записываем число в массив pause(0.001); %задержка чтобы хоть как то отсчитывать время t=t+0.001; arrayTime=[arrayTime,t]; %записываем шаг времени в массив end dlmwrite('MyTime2.dat',arrayTime) %по завершении 3000 циклов сохраняем данные в файлы dlmwrite('MyU2.dat',arrayU) pause(5) fclose(bt) pause(5) clear
Дополнен 7 лет назад
Это был код матлаба, а этот - ардуино #include int rxPin = 8; int txPin = 9; int xx = 0; //переменная для того чтобы просто убрать бит из буфера SoftwareSerial BTport (rxPin, txPin);
void loop() { if (BTport.available()){ //Если от матлаба пришёл символ xx = BTport.read(); //Считываем его BTport.println(analogRead(A0)); //Передаём считанную из аналогового порта цифру } }
Дополнен 7 лет назад
Может посоветуете ещё какую нибудь программу для просмотра и анализа данных, кроме матлаба? В идеале хочу смотреть графики и анализ спектра на смартфоне под android
Как по мне, у тебя слишком огромные задержки, только и всего. Блютуз позволяет гнать аудио в реальном времени, чтобы ты понимал его скорость. Иначе говоря, ориентируйся на задержку 50 или 100мс, этого с головой.
И почему ты выбрал скорость 38400? Возьми 115200 - будет норм. Попробуй, возможно и 921600 поддерживается (чаще всего да).