Вот прошло несколько часов с момента моего первого знакомства с arduino nano и я снова добрался до этой игрушки.
(Пока реальную пользу не приносит — игрушка. В моё понимании так.)
Второй подход.
Что у меня есть? Да ничего. Ардуинка, ноут и кабель. С таким набором сложно что-то сделать. Ни датчиков, ни сенсоров ничего.
Пока вся важная периферия только подтягивается — самое время пообщаться через порт.
Строим диалог.
Я ардуине циферки в терминал, она мне буковки и подмигивания диодом.
У меня есть официальный сайт arduino.cc и какие-то знания Си синтаксиса.
// За основу взят пример из мануала по Serial.read() // Синтаксиса ардуины не знаю (первые сутки встречи), но си пока подходят. // Увы (и вполне оправдано) не паскаль. int incomingByte = 0; // for incoming serial data void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); } void loop() { // Отправляем обратку только если получали данные: if (Serial.available() > 0) { // read the incoming byte: incomingByte = Serial.read(); // say what you got: Serial.print("Вход: "); Serial.println(incomingByte); if (incomingByte == 49){ // если отправили 1 - включить диод digitalWrite(LED_BUILTIN, HIGH); } if (incomingByte == 48){ // если отправили 0 - выключить диод digitalWrite(LED_BUILTIN, LOW); } if (incomingByte == 50){ // если отправили 2 - мигнуть диодом 3 раза for (int i = 0; i < 3; i++){ digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); } } } }
Поясню мальца:
Ардуина (нано но это не важно) подключена шнурком к ноуту и я веду беседу.
1 Включить диод.
0 Выключить диод.
2 Три раза мигнуть диодом.
Входные данные отображаются в терминале (мониторе)
Надеюсь, может кому и пригодиться. До новых встреч.
Общение в терминале Linux.
Вот тут не очень всё удобно. По старой привычке схватился за minicom, да быстро отбросил.
В ручную установить скорость порта в 9600:
$ stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Я это низа что не запомню. Поэтому и записываю сюда.
Далее я открыл два окошка тарминала.
В одном слушал:
tail -f /dev/ttyUSB0 Вход: 49 Вход: 10 Вход: 48 Вход: 10 Вход: 50 Вход: 10
В другом давал командды:
echo "1">/dev/ttyUSB0 echo "0">/dev/ttyUSB0 echo "2">/dev/ttyUSB0
Ну реакция есть. Диоды моргают как и положено. Ответы есть. Но как-то…
В общем, тут есть над чем подумать.
До новых встреч.
Update 05-03-2019:
Поскольку minicom как и всё коряво-консольное меня порядком задолбал (за десятилетия работы в линуксе), я нашёл графический аналог виндового hyperterminal — cutecom в котором всё что мне нужно есть.

cutecom аналог hyperterminal для linux
И написал себе скетч для тестов команд из терминала в arduino:
// работа по командам. // по команде включить пин и показать диодом. // исключительно для опытов с терминалом. char input = 'a'; // входная команда будет один символ. void setup() { pinMode(13, OUTPUT);// диод на плате. pinMode(5, OUTPUT); //PWM pinMode(6, OUTPUT); //PWM pinMode(9, OUTPUT); //PWM digitalWrite(13,LOW); Serial.begin(9600); // битность порта } void pinOnOff(int pin, int led){ // функция включить указаный пин-секунда-выключить. // диод 13 как индикатор. //Serial.println(" *** функция *** "); // сообщение в терминал при вызове функции. digitalWrite(led,HIGH); // вкл диод digitalWrite(pin,HIGH); // вкл pin delay(1000); // подержали секунду. digitalWrite(pin,LOW); // выкл пин digitalWrite(led,LOW); // выкл диод } void loop(){ // читаем то, что вводят через сериал. if (Serial.available()) { // получена команда-циферка. input = Serial.read(); // прочли Serial.print(input); // показали в терминал полученное. switch(input) { case '5': pinOnOff(5,13); // включаю пятый пин и сигнализирую диодом. break; case '6': pinOnOff(6,13); // аналогично 6 break; case '9': pinOnOff(9,13); // 9й пин break; } } }
Пока это всё что я смог рассказать про консольное общение с ардуино.