Починил частично свой код, благодаря manu_245. Но есть проблемы.
1. Вводимые переменные могут принимать значение от 0 до 32000
2. Код manu_245, как и моя производная от него, кушает один байт из Serial.read(), а из п.п 1 их может быть до 5 сразу.
3. На int назначается ASCII код символа, а не он сам.
Вот мой скретч:
PHP код:
int a, b, c, set;
void setup(void)
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop(void)
{
if(set==0) //ЕСЛИ SET не равен 1, то считываем переменные
{ Serial.println("Vvedi A");
a=readdata(); // назначаем а значение из функции readdata()
Serial.println("Vvedi B");
b=readdata();
Serial.println("Vvedi C");
c=readdata();
set=1; // Запрещаем более считывать переменные, и начинаем выполнять дальнейший код
}
Serial.print("Prisvoeno A ");
Serial.print(a, DEC);
Serial.println();
Serial.print("Prisvoeno B ");
Serial.print(b, DEC);
Serial.println();
Serial.print("Prisvoeno C ");
Serial.print(c, DEC);
Serial.println();
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000);
}
int readdata()
{
byte x=0;
do
{
if (Serial.available()> 0)
{
delay (100);
x= Serial.read();
}
}while(x==0);
return x;
}
Пробовал через массив char, примерно так,
PHP код:
int readdata()
{
char* a ="{aaaaa}";
int i=0;
do
{
while(Serial.available())
{
a[i] = Serial.read();
i++;
}
}while(a[i] != '\0'); //Выполнять, пока не попадется ENTER
//}while(atoi(a)== 0); //Так тоже пробовал :(
//a[i] = '\0';
Serial.print("Prinyato");
Serial.println(atoi(a),DEC); //переводим char в int и печатаем для теста
return atoi(a); // Возвращаем значение функции, переводим char в int
}
но он ловит один символ, а потом остальные, и вообще не пойми как работает. Хотя у меня на него были большие надежды ))