Передать с аппаратного ком порта байт - считать и сравнить с массивом
- Войдите на сайт для отправки комментариев
Втр, 26/01/2021 - 22:50
Передать с аппаратного ком порта байт - считать и сравнить с массивом и согласно номеру в массиве зажечь светодиод на определенном пине.
Продолжайте, мы пристально следим за развитием событий.
Интересная тема, слежу с удовольствием.
Еще можно Не передавать байт и Не сравнивать его ни с чем и Тоже зажечь светодиод.
Подскажите как с аппаратного ком порта можно послать байт в виде 0b00000001 затем его считать и сравнить с массивом байтов и согласно номеру в массиве зажечь светодиод. И как вывести его назад в ком порт.
Пока навоял только это:
Попкорн. И пиво. В студию!
Давайте на пальцах:
1) Что послать (пример числа)?
2) С каким массивом и по каким правилам сравнить?
Подскажите как с аппаратного ком порта можно послать байт в виде 0b00000001 затем его считать и сравнить с массивом байтов и согласно номеру в массиве зажечь светодиод. И как вывести его назад в ком порт.
Да просто - с каждым элементом массива сделать "И", потом сложить и в той строке, где будет больше одного - включить.
послать 0b00000001;
сравнить byte Floor[10]=
и вывести в ком порт в таком же виде 0b00000001;
Светодиод зажечь согласно byte Floor[10];
Как отправить вот это 0b00001011 - правильно считать и для начала хотя-бы вывести в ком порт в таком же виде.
B00000001 - это 1, см. "двоичная форма записи числа"
Сравнить через if, пробежавши циклом по всем элементам массива.
Вывести в порт пробежавши по всем битам числа, проверяя их через, например, bitRead()
Какой светодиод соответствует элементу массива Floor[10]; неясно.
номер светодиода соответствует номеру массива.
А как отправить с порта - B00000001 так не работает
выдает
Как отправить вот это 0b00001011 - правильно считать и для начала хотя-бы вывести в ком порт в таком же виде.
вы сами себя путаете. Разницы между b00000001 и просто 1 - нет никакой. Точно так же b00000010 и 2 - одно и то же.
Запишите свой массив вместо
просто как
передавте по компорту обычные цифры от 1 до 10 и сравнивайте их оператором сравнения
А как отправить с порта - B00000001
А как отправить с порта - B00000001
Думаю, что он отправит из Serial Monitor '1'... Сдаётся мне, что это ещё один товарищ, не различающий ASCII, код символа и форму записи.
Пробую.
при отправки 10 выводит
при отправки 10 выводит
и что вас удивляет в этом? Вы небось в терминале набираете "10" - ну так это не число 10, а строка "10" - из двух символов '1' и '0'
Через Arduino IDE Serial Monitor вы не можете отправить число 1, только символ 1.
Но, если преподаватель требует преобразовать именно строку B00001000 в число, то всё гораздо сложнее, чем кажется.
да я так и понял что не все так просто
В самом простом варианте должно прокатиь так.
Включаем все - и говорим, что сбой программы...
Сдаётся мне, что это ещё один товарищ, не различающий ASCII, код символа и форму записи.
нет, это вот кто:
http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/vremya-raboty-po-vklyucheniyu-i-vyklyucheniyu
В прошлый раз это был вопрос "как запустить старт-стоп на миллис" - безумно тупая ветка на шесть страниц. где этот же ТС никого не слушал, все время бубнил что-то невпопад, а потом обиделся и стал тереть свои сообщения, заменяя их тремя дефисами: "###"
вероятно это его новый подход к той же задаче :) Интересно, сейчас опять будет 6 страниц?
Будьте осторожны - весь смысла прихода ТС на форум - развести кого-то на готовый код
не не гаснет светодиод . Чет не так
А считать с порта - сделать "И" с переданным значением и записать в порт. Задача не такая?
Попкорн. И пиво. В студию!
https://vk.com/popkorn_dostavka
Запишите свой массив вместо
просто как
С последним значение что-то явно не так - оно нечётное.
Запишите свой массив вместо
просто как
С последним значение что-то явно не так - оно нечётное.
Написано же "10".
Просто с откатами.
Коррупция мать ее итить
ТС все гораздо проще.
Создаём массив с номерами пинов.
При получении значения переключаем указанный в элементе пин.