Закрепление значения переменной. (х1=х, при том, что х меняется.)
- Войдите на сайт для отправки комментариев
Здравствуйте! Загорелось мне собрать трёхосевой стабилизатор для экшн-камеры, а в дальнейшем собрать его на более мощных моторах, для того, чтобы ставить на него DSLR.
Есть деревяшка, двухосевая платформочка от наших славных друзей на серводвижочках, и гироскоп GY-271.
Был сделан тестовый экземпляр. Деревяшка, внизу приклеен гироскоп, наверху платформочка.
Логика такова: Ардуина по i2c считывает x, y, и z с датчика. Пока решил разобраться с иксом. По кнопке запоминается значение х в х1. Далее считается дельта между запомненым положением, и новым. И это умножается на некоторое число, и получается угол, на который нужно повернуть серву.
Вопрос. Как заставить по кнопке запоминать значение х? Я написал "const int x1 = x". Но если считывать информацию сериальным монитором, то х1 меняется вслед за х. Как "закрепить" значение х1?
2 вопрос. Как управлять ультрозвуковиком? И какой лучше взять в формате стаба для GoPro? (серва слишком громкая, и медленная для видео). Но это скорее вопрос железа, и буду решать его после написания кода.
P.S. И мне кажется, что я один такой долбанутый, и делаю на 271 (остальные на 521 делают)...
Я написал "const int x1 = x". Но если считывать информацию сериальным монитором, то х1 меняется вслед за х. Как "закрепить" значение х1?
Во-первых, const тут не нужно, оно для другого.
Во-вторых, int x1 = x; это не просто присвоение значения, это объявление каждый раз новой переменной х1. Присваивается значение так: x1 = x; (без указания типа переменной).
Скетч в студию.
И мне кажется, что я один такой долбанутый...
Нет, не один, здесь много таких, кто считает что реально писать код не зная вообще ничего о языке программирования. Просто они долго на форуме не тусуются, потому у вас чувство одиночества.
Нет, не один, здесь много таких, кто считает что реально писать код не зная вообще ничего о языке программирования. Просто они долго на форуме не тусуются, потому у вас чувство одиночества.
зачем что-то знать о языке программирования?
можно, даже, не знать названия языка и писать рабочий код на этом языке.
Присваивается значение так:
Мне нужно не только присвоить это значение, но его ещё и "закрепить", для того, чтобы оно не менялось вслед за х.
Скетч брал из примера (не оч помню откуда). Не использовал спец. библиотеку для модуля, т.к. она вообще не работала, поэтому только хардкорный скетч без спец. библиотек через I2C.
Мне нужно не только присвоить это значение, но его ещё и "закрепить"
прекращай бредить: а = 5; - никаких закреплений, порождённых твоей придурошной фантазией не нужно, что бы 'а' всегда была равна пяти, пока ты не сделаешь а = 4;
Но я бы всеже проверял бы:
Нет, не один, здесь много таких, кто считает что реально писать код не зная вообще ничего о языке программирования.
Мне 14. Имею представление об Arduino и саму Ardino лет с 12.
В 7 классе пошёл на кружок, где мы на Arduino производили простенькие задачи. В восьмом на информатике начали писать на питоне.
Мне нужно писать курсовую. Сейчас, в восьмом, я решил писать по DRSSTC-катушке Тесла. Во время изучения датчиков на выходных загорелся идеей сделать стаб для камеры, и написать по нему курсач уже для 9 класса.
Пока нет денег на покупку компонентов для катушки, пытаюсь разобраться со стабилизатором.
Сам написать могу только моргание лампочкой. Все же когда-то новичками были, так что не надо тут...
ОК. Закрепление - отставить. Если присвоили переменной чего - это на века (ну т.е. до ребута ближайшего). Но откройте учебник по Си. Любой. Первые Главы - типы данных, константы, переменные, функции. Там читать на одну ночь. Без этого - никак.
ПС. Питон лишний, на нем можна немного заработать, но Вам, как будущему спецу он ниче не даст. Только задушит ;)
Никаких закреплений
Дело в том, что запуская проверку, и крутя в руках модель с датчиком, х1 меняется вслед за х, чего происходить не должно.
Питон лишний, только задушит ;)
Насчёт этого согласен, иногда забываешь на ардуине проставлять "{} и ;", а на уроке наоборот ставишь, это ужасно раздражает)
Но для общего развитя вроде заходит
Если присвоили переменной чего - это на века
Охххх :)))))
а чего так цитату на полуслове обрывать?
///....(ну т.е. до ребута ближайшего)
:))))
(ну т.е. до ребута ближайшего)
запрещаю ребут - теперь всё будет отлито в граните на века
Во дела, до этого жаловались что переменная не обновляется, теперь отвезать не могут)
Если по делу то у Вас скетч работает не правильно, в блоке switch х1 почему то с констатной постоянно приравнивается к х пока не нажата кнопка, когда кнопка нажата ничего уже не происхрдит и вернуть ничего нельзя.
Вы наверное не понимаете что все действия ардуинка как и положено выполняет последовательно, а не все сеопом
У вас присвоение х1=х должно быть когда нажата кнопка.
По поводу выбора движетелей все хорошие стабилизаторы работают на бесколлекторных моторах, не на абы каких а с низким kv. На сервах это хардкор.
Получается, что:
Правильно же?
На сервах тестовый вариант проверить как работает, и работает ли вообще
Правильно же?
А самому запустить и попробовать не судьба? Хотя бы просто компиляцию запустить религия не позволила или Клапауций запретил? Почему кто-то должен за Вас это делать?
Строка 4:
1) надеюсь, у Вас есть описанная переменная "high", если нет, то, если бы Вы не поленились запустить компиляцию, компилятор бы Вам об этом сказал;
2) опять жа надеюсь, что Вы понимаете, что означает записанная в этой строке конструкция.
Строка 5
1) нахрена здесь описана переменная х1, которая нигде и никогда не используется? и если бы Вы не поленились запустить компиляцию, компилятор бы Вам об этом сказал
Строка 12
1) в этой строке используется переменная х1, которая нигде не описана. Если бы Вы не поленились запустить компиляцию, компилятор бы Вам об этом сказал (или она описана в той части кода, которую Вы скрыли от нас?)
Замечание: если Вы считаете, что в строке 12 используется та самая переменная х1, которая описана в строке 5, то таки нет - это совершенно разные переменные. Читайте про "области видимости" вот здесь до полного просветления.
Да, пишите весь скетч, а не отдельный кусок. У Вас клментарий "проверка на совпадение" что вообще значит? Вот вам скелет
//Дефайны
//Инициация глобалов (здесь прописываем все переменные с. Int, boolean итд, смотрим типы переменных)
// блок setup (здесь включаем сириал если он нужен, настраиваем пины на вход и выход)
// луп ( этот цыкл крутится вечно (если вовремя заменить батарейки))
// чтаем угол наклона, сохраняем в х ( х у нас глобальная)
// смотрим состояния кнопки, если нажата то приравниваем х1 к х ( х1му нас тоже должна была быть уже инициирована в глобалах)
// сверяем х и х1, если есть разница двигаем сервой в нужную сторону на нужный угол.
Теперь скопируйте этот скелет в ide и пропишите каждый этап, результат скиньте сюда, будем разбираться.
Надеюсь, у Вас есть описанная переменная "high"
Это не переменная, а состояние, я опечатался
Надеюсь, у Вас есть описанная переменная "high"
Это не переменная, а состояние, я опечатался
Тогдв нужно кричать громче "HIGH"
Это не переменная, а состояние
я опечатался
Если бы Вы не поленились запустить компиляцию .... (далее по тексту)
Примерно вот. Компилятор всё радостно и молча схавал. Проверить сам скетч смогу дома только. Не хочется таскать с собой разваливающийся прототип
Тогда нужно кричать громче "HIGH"
Я и крикнул, сначала "high", потом "HIGH"))
Не проснулся)
Надюсь, Вы понимаете. что написано в строке 8?
Если понимаете, то зачем писали так сложно? Почему просто не написать:
?
Надюсь, Вы понимаете. что написано в строке 8?
Почему просто не написать:
?
серва должна поворачиваться на 600 градусов?? число 0,3.. было выведено путём расчётов положений
серва должна поворачиваться на 600 градусов?? число 0,3.. было выведено путём расчётов положений
Это глубоко Ваша проблема. Если бы Вы внимательно прочитали мой пост, то поняли бы, что то, что у Вас написано
абсолютно идентично такому
Вы именно это хотели написать? Чтобы там 0 был? Если нет - исправляйте ошибку.
Подсказка -int это целочисленный тип переменных