Можно ли функцией Serial.read(); принять массив байт в Ардуину?
Или как правильно принимать массив?
И можно ли Serial.read(); принять строковое значение, а не цифровое?
Вид для печати
Можно ли функцией Serial.read(); принять массив байт в Ардуину?
Или как правильно принимать массив?
И можно ли Serial.read(); принять строковое значение, а не цифровое?
Принимай по байтно , складывай эти значения в массивЦитата:
Можно ли функцией Serial.read(); принять массив байт в Ардуину?
Строка это тоже массив , из строки можно также как из массива вытаскивать по одному элементуPHP код:
char Str[9] = {'c','a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
void setup()
{
Serial.begin(115200);
}
void loop()
{
if (Serial.available() > 8)
{
for (int i=0; i < 9; i++) Str[i] = Serial.read();
}
Serial.println(Str);
delay(1000);
}
Примеры объявления
Цитата:
char Str[9] = {'c','a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str[ ] = "carduino";
char Str[9] = "carduino";
Спасибо!
Вот что у меня получается:
http://s017.radikal.ru/i422/1112/84/91525d9d5676.jpg
Зашиваю скетч (на картинке), открываю сериал монитор, он ничего не отображает но ползунок прокрутки движется, то есть приходят пустые символы.
После того как отправляю в порт девять единиц (111111111 SEND), начинают валиться эти единицы, а в конце какие-то символы.
Я хотел спросить, что это за символы ?
в функции println /r/n идут. следующая строкаЦитата:
приходят пустые символы
напиши char Str[10];Цитата:
что это за символы ?
должно быть место для окончания строки. тогда не будет лишних символов
Спасибо, так лучше!!!!!)))))))))))))
Скажите пожалуйста, а вот так принимать массив в ардуину, будет правильно?
Или лучше как-то по другому?PHP код:
if (Serial.available() > 0) //priem ot kompa
{
inByte = Serial.read();
serialInArray[serialCount] = inByte;
serialCount++;
if (serialCount ==3)
{
watertemp = serialInArray[0]; //senstvaz
// volts = serialInArray[0]; //volts
turbo = serialInArray[1]; //kpa
pboost = serialInArray[2]; //pboost
serialCount = 0;
inByte = 0;
Serial.flush();
}
}
Я бы указал длину принимаемого массива
if (Serial.available() > длинна-1)
Вот так?
..............Всё работает!PHP код:
if (Serial.available() > 7)
{
inByte = Serial.read();
serialInArray[serialCount] = inByte;
serialCount++;
if (serialCount ==8)
Спасибо!!!
У меня такая же задача.
Проблема в том, что данные в массив почему-то записываются не побайтно, а посимвольно, что ли.
Т.е. если отправляю в Serial число 236, прога записывает в три ячейки массива числа 2, 3 и 6.
Что делаю не так? :confused:
Ну это смотря что отправлять
тебе нужно Serial.print(78, BYTE)
PHP код:
Serial.print(78) передается как "78"
Serial.print(78, BYTE) выводит "N"
Serial.print(78, BIN) выводит "1001110"
Serial.print(78, OCT) выводит "116"
Serial.print(78, DEC) выводит "78"
Serial.print(78, HEX) выводит "4E"
Serial.println(1.23456, 0) выводит "1"
Serial.println(1.23456, 2) выводит "1.23"
Serial.println(1.23456, 4) выводит "1.2346"