Serial.flush(void) – очищает входной буфер последовательно- го порта. Находящиеся в буфере данные теряются, и дальнейшие вызовы Serial.read() или Serial.available() будут иметь смысл для данных, полученных после вызова Serial.flush().
Serial.flush(); // Очищаем буфер – начинаем прием данных «с
// чистого листа»
Serial.print()
Serial.print() – вывод данных на последовательный порт. Функции print наследуются классом HardwareSerial от класса
Print (\hardware\cores\arduino\ Print.h)
Функция имеет несколько форм вызова в зависимости от ти- па и формата выводимых данных.
int b = 79;
Serial.print(b, DEC); //выдаст в порт строку «79».
|
|
int b = 79;
Serial.print(b, HEX); //выдаст в порт строку «4F»
|
|
int b = 79;
Serial.print(b, OCT); //выдаст в порт строку «117»
|
|
int b = 79;
Serial.print(b, BIN); //выдаст в порт строку «1001111»
|
|
int b = 79;
Serial.print(b, BYTE); //выведет число 79 (один байт). В мониторе
//последовательного порта получим символ «O» – его код равен 79
|
|
char bytes[3] = {79, 80, 81}; //массив из 5 байт со значениями 79,80,81 Serial.print("Here our bytes:"); //выводит строку «Here our bytes:» Serial.print(bytes); //выводит 3 символа с кодами 79,80,81
// – это символы «OPQ»
|
char b = 79;
Serial.print(b); //выдаст в порт символ «O»
|
|
int b = 79;
Serial.print(b); //выдаст в порт строку «79»
|
Для того, чтобы обмен данными происходил корректно, необходимо соблюсти общий протокол и скорость обмена данны- ми. Это происходит при инициализации функции Serial.begin(9600)/
Serial.println()
Функция Serial.println аналогична функции Serial.print, и имеет такие же варианты вызова. Единственное отличие заключа- ется в том, что после данных дополнительно выводятся два симво- ла – символ возврата каретки (ASCII 13, или '\r') и символ новой линии (ASCII 10, или '\n'):
void Print::println(void)
{
print('\r');
print('\n');
}
Например, примеры программного кода 3.2 и 3.3 выведут в порт одно и то же:
Пример программного кода 3.2:
int b = 79
Serial.print(b, DEC); //выдаст в порт строку «79» Serial.print("\r\n"); //выведет символы "\r\n" – перевод строки Serial.print(b, HEX); //выдаст в порт строку «4F» Serial.print("\r\n"); //выведет символы "\r\n" – перевод строки
Пример программного кода 3.3:
int b = 79;
Serial.println(b, DEC); //выдаст в порт строку «79\r\n» Serial.println(b, HEX); //выдаст в порт строку «4F\r\n»
В мониторе последовательного порта получим:
Рис. 3.4. Отображение в мониторе последовательного порта результата приведенного выше программного кода
Serial monitor
Для начала попробуем управлять режимами работы светоди- ода с помощью Serial monitor.
Соберем простенькую схему:
Рис. 3.5 Внешний вид подключения светодиода к плате Arduino
Пример программного кода 3.4:
#define LED 13
void setup() {
Serial.begin(9600); //Установим соединение с компьютером.
//Выведем в Serial два сообщения
//Кстати, на русском сообщение будет отображаться некорректно. Serial.println("Write: on – for turn led on, off – for turn led off, blink – for blink");
Serial.println("Wait for commands");
pinMode(LED, OUTPUT);
}
void loop() {
if(Serial.available() > 0) //Проверяем, пришла ли команда.
{
char cmd = Serial.read(); //Объявим переменную, в которую будем
//запоминать команду.
//Команду можно ввести и капсом.
//Для этого опишем возможные варианты пришедших команд.
if (cmd == 'o' || cmd == 'O') //Если пришла команда ON
{
digitalWrite(LED, HIGH); //Включаем светодиод
}
if (cmd == 'f' || cmd == 'F') //Если пришла команда OFF
{
digitalWrite(LED, LOW); //Выключаем светодиод
}
if( cmd == 'b' || cmd == 'B') //Если пришла команда Blink
{
for( int i = 0; i < 10; i++) //Мигаем светодиодом
{
digitalWrite(LED, HIGH); delay(600); digitalWrite(LED, LOW); delay(600);
}
}
}
}
Достарыңызбен бөлісу: |