Arduino:Справочник языка Arduino/Библиотеки/Serial/print()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция print[1]

Пересылает через последовательный порт данные в виде ASCII-текста. Эта функция может принимать разные формы. Для отображения цифр используются ASCII-символы, соответствующие этим цифрам. Для отображения чисел с плавающей точкой тоже используются ASCII-символы, соответствующие этим числам (по умолчанию — с двумя знаками после запятой). Байты отсылаются в виде отдельных символов. Символы и строки отсылаются как есть. Например:

Serial.print(78) дает «78»
Serial.print(1.23456) дает «1.23»
Serial.print('N') дает «N»
Serial.print("Hello World.") дает «Hello World.»

У этой функции есть и еще один (опциональный) параметр, который указывает формат пересылаемых данных. Допустимые значения — BIN (двоичный формат; или основание 2), OCT (восьмеричный формат; или основание 8), DEC (десятичный формат; или основание 10) и HEX (шестнадцатеричный; или основание 16). Для чисел с плавающей точкой в этом параметре указывается количество знаков после запятой. Например:

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»

Кроме того, при помощи этой функции можно выводить строки, сохраненные во flash-памяти, для чего нужно воспользоваться макросом F(). Например:

Serial.print(F("Hello World"))

Если вам нужно отправить один байт, используйте Serial.write().

Синтаксис

Serial.print(val)
Serial.print(val, format)

Параметры

val  значение, которое нужно вывести (данные любого типа)
format  значение для указания формата (для целых чисел) или для знаков после запятой (для чисел с плавающей точкой)

Что возвращает

Количество записанных байтов (считывание этого значения — опционально). Тип данных — long.

Пример

/*
Пример использования цикла for() для вывода чисел в различных форматах.
*/
int x = 0;    // переменная

void setup() {
  Serial.begin(9600);      // открывает последовательный порт на скорости 9600 бит/сек:    
}

void loop() {  
  // Выводим метки: 
  Serial.print("NO FORMAT");       // Выводим надпись
  Serial.print("\t");              // Выводим «Tab»

  Serial.print("DEC");  
  Serial.print("\t");      

  Serial.print("HEX"); 
  Serial.print("\t");   

  Serial.print("OCT");
  Serial.print("\t");

  Serial.print("BIN");
  Serial.print("\t"); 


  for(x=0; x< 64; x++){    // Выводим немного ASCII-символов; если требуется, эту строчку можно поменять

    // Начинаем выводить числа в разных форматах:
    Serial.print(x);       // выводим «x» как десятичное число (это то же самое, что и формат DEC)
    Serial.print("\t");    // Выводим «Tab»

    Serial.print(x, DEC);  // выводим «x» как десятичное число
    Serial.print("\t");    // Выводим «Tab»

    Serial.print(x, HEX);  // выводим «х» как шестнадцатеричное число
    Serial.print("\t");    // Выводим «Tab»

    Serial.print(x, OCT);  // выводим «х» как восьмеричное число
    Serial.print("\t");    // Выводим «Tab»

    Serial.println(x, BIN);  // выводим «х» как двоичное число
                             // затем при помощи println() добавляем символ разрыва строки
    delay(200);            // задержка в 200 миллисекунд
  }
  Serial.println("");      // добавляем еще один символ разрыва строки
}

Совет

В версии Arduino 1.0 (и выше) последовательная передача данных выполняется асинхронно, вследствие чего Serial.print() будет возвращать результат еще до отправки данных.

См.также

  1. begin()
  2. end()
  3. available()
  4. read()
  5. peek()
  6. flush()
  7. print()
  8. println()
  9. write()
  10. SerialEvent()
  11. Memory

Внешние ссылки