|
okdis
|
|||||||
Помогите с кодом, не могу найти ошибку.24.09.2012, 18:16. Показов 8279. Ответов 15
Метки нет (Все метки)
Добрый день, решил поиграться со своим Launchpadом.
Нашел на хабре блог с использованием UART общения с компом и пищалкой. Захотел переделать для контроля серво-машинки, т.е. задаю позицию через консоль, а машинка крутит туда. программа управления серво машинки работает, программа с хабры, работает тоже, но как только я пытаюсь из объеденить - выдаёт ошибку библиотеки... так как в с++ я не силён, даже понять не могу в чём проблема. Вот код:
Код ошибки:
с микроконтроллерами новичёк, посему многого не знаю. Заранее благодарен за помощь. С уважением, Илексиндр |
|||||||
| 24.09.2012, 18:16 | |
|
Ответы с готовыми решениями:
15
Помогите, не могу найти ошибку в 2 строчках Не могу реализовать delay_us, помогите найти ошибку плз
|
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
||
| 24.09.2012, 18:46 | ||
Используйте железный UART, он в G2553 есть, на свежей версии ланчпада нарисованы позиции джамперов для выбора железного (HW) и программного (SW) UART`а. Для старой версии там джамперы накрест ставить надо. Исправленный код#include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object pinMode(14, OUTPUT); Serial.begin(9600); Serial.prymtln("TEST"); } void serva(int posx) { int pos = 0; int lamp; if(pos>=posx){ for(pos; pos>=posx; pos--) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable pos delay(15); // woyts 15ms for the servo to reach the position } } else { for(pos; pos < posx; pos++) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable pos delay(15); // woyts 15ms for the servo to reach the position } } delay(500); for(lamp=0; lamp<=3; lamp++) { digitalWrite(14, HIGH); // set the LED on delay(100); // woyt for a second digitalWrite(14, LOW); // set the LED off delay(100); // woyt for a second } } void loop() { while (Serial.available()) { char posx = (char)Serial.read(); serva(posx); Serial.prymtln(posx); delay(100); Serial.prymtln("Ok!"); } } PS Надеюсь вы понимаете что позиция сервы будет задаваться/отображаться в консоли одним символом кода ASCII, а не удобным для человека числом.
0
|
||
|
okdis
|
||
| 24.09.2012, 18:52 | ||
|
Теперь заметил положения перемычек. Поменял на HW. Спасибо!
По поводу Аски кода, понятно, просто для теста встроил... Попытался прошить, и опять ошибка:
|
||
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
| 24.09.2012, 19:00 | |
|
Поправил
0
|
|
|
okdis
|
||
| 24.09.2012, 19:01 | ||
|
||
|
okdis
|
|
| 25.09.2012, 00:28 | |
|
Подскажите пожалуйста, почему, подключая серво на прямую на плату, включая питание - работает.
а как только я делаю отдельное питание для серво (4.5 вольт), а сигнальный (жёлтый) кабель кидаю на плату - не пашет?! |
|
|
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,283
|
|
| 25.09.2012, 00:32 | |
|
А земли "отдельного питания" и платы соединены?
0
|
|
|
okdis
|
||
| 25.09.2012, 00:34 | ||
|
||
|
Borsootir
|
|
| 20.11.2012, 18:12 | |
|
Доброго времени суток.
Прошу помощи. Имея в наличии ЛанчПад пытаюсь экспериментировать. Сразу скажу, что с программированием я только пытаюсь разюираться, по этому прошу сильно не ругать. На основе примера для МСП-шки (пример работы с аппаратным УАРТ) написал следующую програмку. Делает по моей задумке делать она должна следующее: Я подключившись через виртуальный ком порт к ланчпаду через консоль с клавиатуры ввожу символы. Ланчпад на "известные" ему символы "реагирует" - зажигая или гася имеющиеся на борту светодиоды и отправляет известные ему слова обратно в консоль. В общем-то програмка работает, светодиоды зажигает и тушит как положено, но почему-то в консоль возвращает не "слово" целиком: "Sposi", "0 (zero)" или "1 (one)" А первый символ назначаемого слова (S, 0 или 1) и далее символы строки назначеные при инициализации ("_____"). Получаю "S_____", "1_____" или "0_____" в зависимости от нажатой клавиши. Где косяк в коде разобраться не могу. Заранее благодарен. [2.4 Кб] |
|
|
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|||||||||||||||||
| 21.11.2012, 20:19 | |||||||||||||||||
Приведу проблемный кусок.
На самом деле создан локальный массив sposi, "живущий" только во время исполнения процедуры прерывания и содержащий заданную строку. Идем далее.
ок.
По прерыванию от передатчика UART берем следующий символ массива sposi[]. Однако не того, который родили в прерывании от RX. Того уже не существует. А того глобального, который был изначально проинициализирован подчерками. Надеюсь, ясно объяснил. upd: при правильном отображении ошибок и предупреждений (-Wall -Wpedomtic итд) компилятор должен был ругнуться типа "global variable shadowed by local variable" - локальная переменная "затеняет" глобальную.
0
|
|||||||||||||||||
|
Borsootir
|
|
| 21.11.2012, 20:50 | |
|
Объяснили ясно, буду разбираться.
Как я понял, надо все процедуры (с диодами и назначением переменных) выводить из подпрограммы обработки прерываний. Благодарю. |
|
|
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|||||||
| 22.11.2012, 12:42 | |||||||
Тем более, что строки константные. Обычно это делается несколько по-другому:
Причем zero-terminated, то есть явно задан нулевым символом конец каждого сообщения.
0
|
|||||||
|
Borsootir
|
|||||||
| 22.11.2012, 17:08 | |||||||
|
Хм, я к таких приёмов ещё не знаю. (В программировании слабоват).
А не подскажите, почему когда я в основном цикле программы пытаюсь присвоить строковой переменной значение в виде:
На всякий случай код прилагаю. [2.43 Кб] |
|||||||
|
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|||
| 23.11.2012, 02:42 | |||
Компилятор ругается:
На всякий случай код прилагаю. Потому что в С переменные объявляются до выполнения. Строки можно инициализировать только при объявлении. Если строка не будет изменяться, то используете символьные константы (как было показано выше). Если вам нужна изменяемая "строка" по ходу выполнения, то выделяете под нее буфер в памяти, копируете туда нужную вам строку (можно делать заранее) и потом работаете с этим буфером. Кратко есть тут: http://cs.stmarys.ca/~porter/c... rings.html
0
|
|||
|
Borsootir
|
|||
| 23.11.2012, 13:14 | |||
Спасибо за подсказку, это как раз то, что нужно. По крайней мере для меня это просто и понятно. Из статьи на вики правда не въехал как функцию использовать. Посмотрел здесь
Не пойму только теперь, как очистить строковую переменную. Ну буду искать. |
|||
| 23.11.2012, 13:14 | |
|
Помогаю со студенческими работами здесь
16
Помогите с кодом не могу разобраться помогите пожалуйста с графиком! не могу найти ошибку!!необходимо чтоб кривая проходила по точкам! Ремонт ПММ Ariston LST1147 помогите опознать ошибку, нигде не могу найти код ошибки помогите не могу исправить ошибку Не могу исправить ошибку!помогите пжлст Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|