如何在 Arduino 中存储数字?
How to store numbers in Arduino?
我已经把这个写给 Arduino。
char incomingbytea;
char incomingbyteb;
char incomingop;
char result;
void setup()
{
Serial.begin(9600);
}
void loop(){
incomingbytea = 0;
incomingbyteb = 0;
incomingop = 0;
result = 0;
bytea:
if (Serial.available() > 0) {
incomingbytea = Serial.read();
Serial.println("1ok");
Serial.println(incomingbytea);
goto byteb;
}
goto bytea;
byteb:
if (Serial.available() > 0) {
incomingbyteb = Serial.read();
Serial.println("2ok");
Serial.println(incomingbyteb);
goto op;
}
goto byteb;
op:
if (Serial.available() > 0) {
incomingop = Serial.read();
Serial.println("opok");
Serial.println(incomingop);
goto oper;
}
goto op;
oper:
result = incomingbytea + incomingbyteb;
Serial.println(result);
Serial.println(incomingbytea);
Serial.println(incomingbyteb);
Serial.println(incomingop);
}
我想做的是:
- 连接到串行(检查)
- 稍后收集 2 个变量到 add/subtract/multiply/divide(检查)
- 收集一个变量来决定如何处理它们 1-add、2-subtract 等(检查)
- 重定向脚本以执行所需的操作(稍后)
- 将结果打印到串行(检查)
问题是,当我输入 1 和 1 和 1(不管怎样,第三个现在不算数)时,结果是 98。有什么帮助吗?也许变量有误?
首先要知道数字的长度,减去48(48是0的ascii表示)再乘以1,10,100,1000,10000,...取决于位置每个数字。
例如:字符串“233”到整数,使用自定义方法
void setup() {
Serial.begin(9600);
}
void loop() {
String Numero1 = "40";
String Numero2 = "50";
double Suma = StringAInt(Numero1)+StringAInt(Numero2);//+ StringAInt(Numero2);
Serial.println(Suma);
}
double StringAInt(String Dato)
{
String Numero = Dato;
char Valores [Numero.length()+1];
Numero.toCharArray(Valores,Numero.length()+1);
double NumeroEnt = 0;
for(int i = 0; i<Numero.length(); i++)
{
int NumValores = Valores[i];
NumValores-=48;
double MultPor = pow(10,Numero.length()-(i+1));
NumeroEnt += (NumValores*MultPor);
//Serial.println(NumValores*MultPor);
}
return NumeroEnt;
}
现在只需要将串口接收到的数据构造成一个字符串,就可以简单地进行数学运算了。
我已经把这个写给 Arduino。
char incomingbytea;
char incomingbyteb;
char incomingop;
char result;
void setup()
{
Serial.begin(9600);
}
void loop(){
incomingbytea = 0;
incomingbyteb = 0;
incomingop = 0;
result = 0;
bytea:
if (Serial.available() > 0) {
incomingbytea = Serial.read();
Serial.println("1ok");
Serial.println(incomingbytea);
goto byteb;
}
goto bytea;
byteb:
if (Serial.available() > 0) {
incomingbyteb = Serial.read();
Serial.println("2ok");
Serial.println(incomingbyteb);
goto op;
}
goto byteb;
op:
if (Serial.available() > 0) {
incomingop = Serial.read();
Serial.println("opok");
Serial.println(incomingop);
goto oper;
}
goto op;
oper:
result = incomingbytea + incomingbyteb;
Serial.println(result);
Serial.println(incomingbytea);
Serial.println(incomingbyteb);
Serial.println(incomingop);
}
我想做的是: - 连接到串行(检查) - 稍后收集 2 个变量到 add/subtract/multiply/divide(检查) - 收集一个变量来决定如何处理它们 1-add、2-subtract 等(检查) - 重定向脚本以执行所需的操作(稍后) - 将结果打印到串行(检查)
问题是,当我输入 1 和 1 和 1(不管怎样,第三个现在不算数)时,结果是 98。有什么帮助吗?也许变量有误?
首先要知道数字的长度,减去48(48是0的ascii表示)再乘以1,10,100,1000,10000,...取决于位置每个数字。
例如:字符串“233”到整数,使用自定义方法
void setup() {
Serial.begin(9600);
}
void loop() {
String Numero1 = "40";
String Numero2 = "50";
double Suma = StringAInt(Numero1)+StringAInt(Numero2);//+ StringAInt(Numero2);
Serial.println(Suma);
}
double StringAInt(String Dato)
{
String Numero = Dato;
char Valores [Numero.length()+1];
Numero.toCharArray(Valores,Numero.length()+1);
double NumeroEnt = 0;
for(int i = 0; i<Numero.length(); i++)
{
int NumValores = Valores[i];
NumValores-=48;
double MultPor = pow(10,Numero.length()-(i+1));
NumeroEnt += (NumValores*MultPor);
//Serial.println(NumValores*MultPor);
}
return NumeroEnt;
}
现在只需要将串口接收到的数据构造成一个字符串,就可以简单地进行数学运算了。