Поворот сервопривода по заданному значению
- Войдите на сайт для отправки комментариев
Втр, 06/12/2016 - 12:51
Добрый день помогите разобраться есть такая задача из приложения написанное на C# передаю значение от 0 до 180 на com-порт на ардуинке хочу считать значение и повернуть серво на этот градус но почему то поворачивается совсем не на тот градус который отправляется в ком порт
if(Serial.available()>0){ pos=Serial.read(); myservo.write(pos);
что не так?
Нам-то откуда знать как именно Вы свои 180 передаёте? Как байт? Или как строку? ХЗ?
Поставьте после второй строки печать pos (Serial.println(pos);) - увидите, что не так.
да ставил, вместо 1 распечатывает 49 вместо 2 50
Так, правильно. Вы передаёте строку, а читаете байт. Либо передавайте байт, либо читайте как строку.
В общем. что передаёте, то и читайте и будет Вам много счастья.
а как в ардуинке читать данные с порта в виде строки?
да ставил, вместо 1 распечатывает 49 вместо 2 50
49 это 0х31 те аскикод символа "1". Вы передали строкой а приняли числом. Надо чтото менять.
Дз. Незнание основ си.
А как "не в Ардуине" знаете?
100500 способов, откройте наконец описание и посмотрите. readString, например. Или свою pos как char объявите и в массив складывайте. И ещё 100498 способов есть.
не подскажите почему если в ком порт отправлять с большой переодичностью данные то приходит каша, к римеру отправлю данные от 0 до 50 с шагом 1 но быстро примерно как а цикле с задержкой 100мс а в порт конечное число не 50 приодит а к примеру 205990 или может быть с минумом
Я не знаю ни как Вы отправляете, ни как читаете.
в C# отправлю строкой значение trackBar
в ардуино считываю вот так
так вот если за бегунок trackBar потнуть быстро тогда в ардуино приодит огромные цифры
Имхо такие темы нужно сразу переносить в "Ищу исполнителя". Раз человеку лень учить азы пусть платит деньги.
в C# отправлю строкой значение trackBar
в ардуино считываю вот так
так вот если за бегунок trackBar потнуть быстро тогда в ардуино приодит огромные цифры
И какого типа у Вас pos?
pos типа string
Почитайте про Serial.readString(); о том как она читает (до каких пор).
Используйте Serial.parseInt()
И проблема останется ровно таже