Но это же проще чем передать число 1024 с 10 датчиков чем число 255 . Понять это самое сложное например с пина А1 analog read читаем от 0 .255 и с пина a0 тоже самое от 0.255 отсылаем посредством serial write
В порт ,и нам приходят значения с а0 и с А1 , читаем через serial read, предположим пришло 2 значения 185 и 122
Как именно вынуть только 122 к примеру вот в этом сложность .
Лучше бы описал изначальную задачу (общую) простыми словами. Вполне возможно уже имеется готовое решение. По крайней мере, будущему исполнителю будет прозрачна задача.
К RX UART подключается 100 ТХ устройств, и наоборот, к TX UART - 100 RX устройств.)
Общая задача отправить данные , с Ардуино считанные с аналоговых входов , преобразованные из 1024 в 255 . На пк где эти значения должны будут выведены на экран в программе , не в консоль ,а именно на экран , и там отображаться , например функцией text(). Или ещё какой то функцией . Но для этого нужно как то уметь их вычитывать каждое значение по отдельности. Как лучше отправлять все это как байты или как строку я не знаю. Так как потом их нужно ещё как то вычитать с возможностью умножать, делить и тд. Строить графики .
ПК должен быть мастером, по запросу которого к каждому ведомому Ардуино, тот должен давать ответ с данными. Как наиболее простой вариант.
Почитал, так и не понял, чем ТС не устраивает UART для связи ПК<->Ардуино
Никак вы не вынете только 122. В любом случае из порта надо читать все.
И вот тут возникает вопрос, если вам в порт пришло два значения, 185 и 122 - как вы поймёте, где данные от А1, а где А0?
Это я к тому, что ваша идея передавать данные “одним байтом” никак не упрощает проблему. Вы похоже вообще не понимаете сути вопроса и пытаетесь упрощать то, что в “упрощении” не нуждается.
Ваша задачка не сложная и решалась до вас другими многократно. В Ардуино есть и готовые библиотеки для такой передачи.
А если они начнут передачу одновременно, кто будет заниматься арбитражем шины?
Пусть отвечают только по запросу.
Другое дело подтяжка у 100 устройств может быть слишком велика))
Может так сделать: мастер передаёт байт - адрес/номер уст-ва, и, в ответ , получает байт - нужные данные
Это пусть заказчик решает… Но для себя я бы так не делал. Зачем загружать мастера лишней работой заправшивать данные со слейвов?
Значительно проще, как по мне, чтоб каждый слейв отправлял данные по готовности.
А для того чтоб данные не путались - пересылать структуру с заголовком и контрольной суммой, а внутри уже для каждого значения - номер датчика.
Так ведь UART это интерфейс , а ТС-у пртокол нужен
Конечно, опытный программист и задачу поставит более грамотно
На самом деле тут для программиста задачка плевая… То есть собственно написать код практически ничего не стоит, готовую библиотеку я бы ТС мог и бесплатно посоветовать
Основная задача тут будет не написать код, а обучить @les1200 им пользоваться. И вот уже это стоит и 10 тыс и 20 и может и больше
Судя по теме, он новичок с нулевым уровнем.
Это точно
Да я думаю, @Wizard2022 или написал , или заканчивает уже))
а проблем нет никаких в том что микроконтроллер работает в utf8 кодировке ?
и если одним байтом передавать значение более 127 это будет шестнадцатеричный вид…
и не факт что будет читаться…
а это 2 символа))) или нее ? тут время надо еще уделить заказчику вагон!)))
void setup() {
// Инициализация последовательного соединения на скорости 9600 бит/сек
Serial.begin(9600);
}
void loop() {
// Отправка байта 233
Serial.write(117);
Serial.write(178);
Serial.write(233);
// Ждем 1 секунду
delay(1000);
}
вопросик у меня, передаем тут 3 символа или 6 ?
и не противоречит ли это ТЗ ?)))
может заказчику это важно…
тут ему подробно все надо описать…
А если несколько датчиков отравляет данные в один и то же момент? Тогда у датчиков будет проблематично слушать на предмет коллизий и повторно отправлять через случайные промежутки времени.
Мы не знаем сколько слейвов будет у ТС, может все датчики включены в общий слейв.
Ну а в целом я на абсолютную истину и не претендовал, других решений не исключаю.
опять накурился? иди проспись
Микроконтроллер ничего не знает ни о каких кодировках
Речь идет о байтах, а не символах. Бабос, ты опять чушь порешь, изверг