将Matlab Arduino代码

27日视图(30天)
金正日Soltau
金正日Soltau 2019年5月16日
评论道: 沃伦·丹尼斯2020年5月14日
你好,
是否可以将下面的代码从Arduino IDE Matlab ?
readVcc () {
/ /读1.1 v参考针对AVcc
/ /设置参考Vcc和内部1.1 v的测量参考
#如果定义(__AVR_ATmega32U4__) | |定义(__AVR_ATmega1280__) | |定义(__AVR_ATmega2560__)
ADMUX =_BV (REFS0) |_BV (MUX4) |_BV (MUX3) |_BV (MUX2) |_BV (MUX1);
#elif定义(__AVR_ATtiny24__) | |定义(__AVR_ATtiny44__) | |定义(__AVR_ATtiny84__)
ADMUX =_BV (MUX5) |_BV (MUX0);
#其他的
ADMUX =_BV (REFS0) |_BV (MUX3) |_BV (MUX2) |_BV (MUX1);
#endif
延迟(2);/ /等待Vref来解决
ADCSRA| = _BV (ADSC);/ /开始转换
(bit_is_set (ADCSRA ADSC));/ /测量
uint8_t= ADCL;/ /必须阅读ADCL ADCH——它然后锁
uint8_t高= ADCH;/ /打开两个
结果=(高< < 8)|低;
结果= 1125300 l /结果;/ /计算Vcc (mV);1125300 = 1.1 * 1023 * 1000
返回结果;/ / Vcc毫伏
}
或者有可能有这段代码Arduino和给matlab的结果吗?

答案(1)

马克Sherstan
马克Sherstan 2019年5月17日
从Arduino (c++),以MATLAB作为describere有一些挑战 在这里 但这是可以做到的。有些在线转换器将让你开始,但您将需要了解两种语言,以确保代码是“苹果苹果”。
问题是你希望达到的目标是什么?如果你是获取原始值和处理他们Arduino可以直接通过这些原始值MATLAB和过程。下面的例子展示了如何:
MATLAB
%连接到串行端口和设置属性
s =系列(“/ dev / cu.usbmodem14101”,“波特率”,9600);
年代。InputBufferSize = 20;
年代。超时= 4;
fopen (s);
%暂停开始的数据流
暂停(3);
流(建立“连接\ n”)
%开始一个计数器和定时器
数= 0;
抽搐
开始时间= toc;
% 15秒获得数据
(toc <开始时间+ 15)
%执行头检查和让演员字节整数
如果(从文件中读(年代,1)= = 159)
如果(从文件中读(年代,1)= = 110)
x =从文件中读(s, 2);
analogOut =定型(uint8 (x)“uint16”);
结束
结束
%显示数据给用户
流(“% d \ n”analogOut)
%增加计数器
数=计数+ 1;
结束
%显示用户的采样率
endTimer = toc;
流(“采样率是:% 0.2 f赫兹\ n”,数/ (endTimer -开始时间))
%将串行端口连接
文件关闭(年代);
删除(年代)
清晰的年代
Arduino
intanalogValue;
无效设置(){
/ /设置串行港口
Serial.begin (9600);
}
无效循环(){
/ /读取模拟销
analogValue = analogRead (A0);
/ /写字节通过串行
writeBytes (&analogValue);
}
无效writeBytes (int * data1) {
/ /把一个字节指针
字节* byteData1 =(字节*)(data1);
/ /字节数组头的传播
字节x9f buf [4] = {0, 0 x6e byteData1 [0], byteData1 [1]};
/ /写字节
系列。写(buf 4);
}
1评论
沃伦·丹尼斯
沃伦·丹尼斯 2020年5月14日
我想把这段代码Arduino Matlab
/ /定义针
#定义蓝色3
#定义绿色5
#定义红6
无效的设置()
{
pinMode(红、输出);
pinMode(绿色、输出);
pinMode(蓝色、输出);
digitalWrite(红、高);
digitalWrite(绿色、低);
digitalWrite(蓝色、低);
}
/ /定义变量
int redValue;
int greenValue;
int blueValue;
/ /主循环
无效循环()
{
#定义延迟时间10 / /褪色时间之间的颜色
redValue = 255;/ /选择1和255之间的值来改变颜色。
greenValue = 0;
blueValue = 0;
/ /这是不必要的,我们打开红色的设置
/ /或在前面的循环……无论如何,这个变红了
/ / analogWrite(红色,0);
/ /延迟(1000);
for (int i = 0;我< 255;我+ = 1)/ /淡出红色带绿色全当我= 255
{
redValue - = 1;
greenValue + = 1;
/ /以下是逆转,计算错了方向
/ / analogWrite(红色,255 - redValue);
/ / analogWrite(绿色,255 - greenValue);
redValue analogWrite(红色);
greenValue analogWrite(绿色);
延迟(时延);
}
redValue = 0;
greenValue = 255;
blueValue = 0;
for (int i = 0;我< 255;我+ = 1)/ /褪色绿带蓝完全当我= 255
{
greenValue - = 1;
blueValue + = 1;
/ /以下是逆转,计算错了方向
/ / analogWrite(绿色,255 - greenValue);
/ / analogWrite(蓝色,255 - blueValue);
greenValue analogWrite(绿色);
blueValue analogWrite(蓝色);
延迟(时延);
}
redValue = 0;
greenValue = 0;
blueValue = 255;
for (int i = 0;我< 255;我+ = 1)/ /褪色蓝带红全当我= 255
{
/ /下面的代码已经重新安排与其他两个相似的部分
blueValue - = 1;
redValue + = 1;
/ /以下是逆转,计算错了方向
/ / analogWrite(蓝色,255 - blueValue);
/ / analogWrite(红色,255 - redValue);
blueValue analogWrite(蓝色);
redValue analogWrite(红色);
延迟(时延);
}
}

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!