我有一个代码可以在 arduino 上接收串行数据,但是当我发送单个数据时无法正常工作,例如,如果我发送 4 或 7,我不会得到那个数字,但如果我发送 454 或 44.5或与各种数字的任何其他组合都可以正常工作。
boolean estado = false;
int vect[10];
char val;
int ledpin = 13;
int pos = 90;
float consumo = 0;
double tarifa = 1.5;
double data = 0;
double data_aux = 0;
int i=1;
int count = -1;
boolean temp = false;
void setup() {
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if( Serial.available() >0 ) // daotos disponibles
{
val = Serial.read();
// 'M' => medir
if(val=='M')
{
consumo = analogRead(A0);
Serial.println(consumo);
}
else
{
// 'C' => Conectar
if ( val == 'C')
{
Serial.println(tarifa);
}
else // Cambiar tarifa
{
///prueba
count = count + 1;
vect[count] = val - '0';
tarifa = vect[count];
//fin
while(Serial.available()>0)
{
if (temp == true)
{
val = Serial.read();
}
if ( val == '\n' || val == '\r' || val=='\0')
{
break;
}
count = count + 1;
vect[count] = val - '0';
temp = true;
}
if(count > 0)
{
for(int x = count; x > -1; x--)
{
if(vect[x]==-2)
{
data_aux = data/i;
data = data_aux;
i = 1;
}
else
{
data = data + vect[x]*i;
i = i*10;
}
}
tarifa = data;
}