как отправить 100 цифр в последовательной связи от обработки до Arduino - PullRequest
0 голосов
/ 26 июня 2019

Я конвертирую массив пикселей в строку и отправляю эту строку в arduino.но я думаю, что эта строка не преобразуется должным образом, потому что Serial.write отправить (8 бит или 8 символов) я не знаю.а также хотите отправить 100 символов строки в последовательный.Пожалуйста, пришлите ваше предложение и получите помощь от этой проблемы.за любую ошибку Извините заранее.

  for(int x =0 ; x < img.height; x++)
   {
     for(int y=0; y <img.width; y++)
      {
        int i = x+y*width;
        if(img.pixels[i] == color(0,0,0))
       {
          i=1;
       }
       else
       {
        i=0;
       }

      String s = str(i);
      print(s);
      Serial.write(s);
      delay(2);
 }
}           

, а также скажите мне, как остановить строку после 100 символов, не используя ("\ n" или "\ r")

1 Ответ

2 голосов
/ 26 июня 2019

Кажется, вы ищете код ниже:

for (int x = 0; x < img.height; x++) { // iterate over height
  for (int y = 0; y < img.width; y++) { // iterate over width
    int i = x + y * width;
    if (img.pixels[i] == color(0, 0, 0)) { // determine if zero
      Serial.write('1'); // send non zero char
    } else {
      Serial.write('0'); // send zero char
    }
  }
  Serial.write("\n\r");
}

Если вы хотите сгруппировать выходные данные в единицах размером img.width, вы можете сделать это:

for (int x = 0; x < img.height; x++) { // iterate over height
  String s;
  for (int y = 0; y < img.width; y++) { // iterate over width
    int i = x + y * width;
    if (img.pixels[i] == color(0, 0, 0)) { // determine if zero
      s += '1'; // append a non zero char to string s
    } else {
      s += '0'; // append a zero char to string s
    }
  }
  Serial.println(s);
}

Пожалуйста, помните:

Serial.write выводит необработанные двоичные значения.

Serial.print вывод символов (символов).

Serial.println выводит символ (ы) , а добавляет символ новой строки к выводу.


У меня есть серьезные сомнения относительно этого расчета int i = x+y*width;, поскольку ваши данные, вероятно, структурированы как:

vertical data:      0      1      2
horizontal data:    [row 0][row 1][row 2]

Вместо:

horizontal data:    0         1         2
vertical data:      [column 0][column 1][column 2]
...