Страница 1 из 3
UART управление Ардуино командой из монитора порта
Добавлено: 28 фев 2020, 21:16
EgorKa
Когда знакомился с Ардуино, через UART подачей 1 с компорта зажигал диод на 13 пине. При подаче "0" выключал диод. Заливал скетч:
[spoiler]
Код: Выделить всё
int val; // освобождаем память в контроллере для переменой
void setup() {
Serial.begin(9600); // подключаем последовательный порт
pinMode(13, OUTPUT); // объявляем пин 13 как выход
}
void loop() {
// проверяем, поступают ли какие-то команды
if (Serial.available()) {
val = Serial.read(); // переменная val равна полученной команде
if (val == '1') {digitalWrite(13, HIGH);} // при 1 включаем светодиод
if (val == '0') {digitalWrite(13, LOW);} // при 0 выключаем светодиод
}
}
[/spoiler]
Сегодня решил поэкспериментировать, нарисовал схему в FLPROG , залил в UNO , и диод не засвечивает.
Или FLPROG не умеет так?
UART прием переменная int.flp
UART управление Ардуино командой из монитора порта
Добавлено: 28 фев 2020, 21:32
Nikan
.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 16:07
EgorKa
Nikan писал(а): 28 фев 2020, 21:32
не тот блок выбран
увы фокус не удался -не зажигает диод.
Добавил в схему блок передачи, для контроля того что отправляю.
Отправляю 1 в мониторе порта отображается 1 , но диод не включается.
И еще одна странность ,если отправляю 11 то в мониторе вижу 1.
Если 22 то вижу 2.
UART прием переменная byte_V2_FLP6.3.1.flp
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 16:18
Sancho
[ref]EgorKa[/ref], Вы сравниваете число, String, и полученный, как-будто, байт, типа 1.
Поменяйте 1 в компараторе "1" = ASCII dec...( смотреть по таблице
49 )
Отправлено спустя 2 минуты 24 секунды:
EgorKa писал(а): 29 фев 2020, 16:07
И еще одна странность ,если отправляю 11 то в мониторе вижу 1.
Если 22 то вижу 2.
Отправьте 12, 21
У Вас же стоит отправка при изменении

UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 16:38
EgorKa
Sancho писал(а): 29 фев 2020, 16:18
Вы сравниваете число, String, и полученный, как-будто, байт, типа 1.
откуда там String, если я выбрал байт значит и должен гонять байт. И странно что в блоке приема UART нет int.
Sancho писал(а): 29 фев 2020, 16:18
Поменяйте 1 в компараторе "1" = ASCII dec...( смотреть по таблице

49 )
вообще не понял юмора.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 17:07
grin-mpx
Так. От 0 до 9.
UART прием переменная string.flp
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 17:22
EgorKa
[ref]grin-mpx[/ref], так пытался повторить в FLProg скеч из первого поста.
Похоже это большая проблема.
Отправлено спустя 4 минуты 10 секунд:
ваша схема не включает диод
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 17:34
Nikan
.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 17:36
grin-mpx
Это из рабочего проекта.
UART прием переменная string-2flp.flp
Если не работает -ищите проблему у себя.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:09
EgorKa
Nikan писал(а): 29 фев 2020, 17:34
проверь что отправляеш в порт
как надо на картинке -
Ну, я то пытаюсь повторить в FLProg этот скетч
[spoiler]
Код: Выделить всё
int val; // освобождаем память в контроллере для переменой
void setup() {
Serial.begin(9600); // подключаем последовательный порт
pinMode(13, OUTPUT); // объявляем пин 13 как выход
}
void loop() {
// проверяем, поступают ли какие-то команды
if (Serial.available()) {
val = Serial.read(); // переменная val равна полученной команде
if (val == '1') {digitalWrite(13, HIGH);} // при 1 включаем светодиод
if (val == '0') {digitalWrite(13, LOW);} // при 0 выключаем светодиод
}
}
[/spoiler]
и использую соответственно монитор порта который в IDE
UART прием переменная byte.PNG
с монитора компорта FLProg как Вы показал диод включается.
Но это не то .
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:27
Nikan
.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:30
EgorKa
Nikan писал(а): 29 фев 2020, 18:27с чего вдруг?
ну, потому что с монитора порта из IDE не включает диод . А когда заливаю скетч из первого моего поста , то все работает.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:34
Sancho
[ref]EgorKa[/ref], Прочтите ЛС
Отправлено спустя 18 секунд:
[ref]EgorKa[/ref],
Sancho писал(а): 29 фев 2020, 16:18
EgorKa, Вы сравниваете число, String, и полученный, как-будто, байт, типа 1.
Поменяйте 1 в компараторе "1" = ASCII dec...( смотреть по таблице 49 )
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:36
EgorKa
grin-mpx писал(а): 29 фев 2020, 17:36
Это из рабочего проекта.
UART прием переменная string-2flp.flp
(83.16 КБ) 3 скачивания
Если не работает -ищите проблему у себя.
Вернуться к началу
разобрался, если отправлять 1 из монитора порта IDE то неработает. А если с монитора компорта FLProg ,то включается диод.
Т.е. работает не так как если я загружаю скетч написанный в IDE.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:41
grin-mpx
EgorKa писал(а): 29 фев 2020, 18:09
Ну, я то пытаюсь повторить в FLProg этот скетч
EgorKa писал(а): 29 фев 2020, 18:09
if (val ==
'1') // при 1 включаем светодиод
if (val ==
'0') // при 0 выключаем светодиод
Может потому, что в примере сравнивается не байт а char?
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:42
EgorKa
[ref=#ff8000]Sancho[/ref], личку глянул там какие то цифры. Но уже разобрался что скетч написанный в IDE
[spoiler]
Код: Выделить всё
int val; // освобождаем память в контроллере для переменой
void setup() {
Serial.begin(9600); // подключаем последовательный порт
pinMode(13, OUTPUT); // объявляем пин 13 как выход
}
void loop() {
// проверяем, поступают ли какие-то команды
if (Serial.available()) {
val = Serial.read(); // переменная val равна полученной команде
if (val == '1') {digitalWrite(13, HIGH);} // при 1 включаем светодиод
if (val == '0') {digitalWrite(13, LOW);} // при 0 выключаем светодиод
}
}
[/spoiler]
не возможно повторить в FLProg. Автор программы сильно много заморочек сделал. Проще ПБ сделать.
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:45
grin-mpx
EgorKa писал(а): 29 фев 2020, 18:42
не возможно повторить в FLProg
Хорошая шутка

Вы повторите так как в скетче. Сравнивали не байт полученный из UART а char?
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:57
EgorKa
grin-mpx писал(а): 29 фев 2020, 18:41
Может потому, что в примере сравнивается не байт а char?
Вернуться к началу
так компаратор не умеет сравнивать char. А кучу конвертаций делать это даааа...
Отправлено спустя 6 минут 34 секунды:
поставил выход char на блоке приема UART сравнивается с int на компараторе -не работает .
Отправлено спустя 2 минуты 44 секунды:
grin-mpx писал(а): 29 фев 2020, 18:45
Хорошая шутка

Вы повторите так как в скетче. Сравнивали не байт полученный из UART а char?
да какая же тут шутка.... вообще то это печальная практика

UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 18:58
grin-mpx
Я вам выше скинул сравнение строк. Тот пример который вы выложили делался в IDE, следовательно по UART гоняли не HEX не DEC и не BIN, а скорее всего символы (строки). Если бы там сравнивались не символы а байты, то выглядело бы это так- if (val == 1)
UART управление Ардуино командой из монитора порта
Добавлено: 29 фев 2020, 19:02
EgorKa
[ref]grin-mpx[/ref], да я и не спорю. Я же всего навсего хотел так же нарисовать в FLProg.
Ну ,все по другому в проге делается и как в IDE повторить не возможно. Это я понял.