Как сделать код правильным во всех смыслах этого понятия, контроллер stm32f103c8t6
- Войдите на сайт для отправки комментариев
Чт, 21/11/2019 - 14:16
#include <Wire.h> int timer = 1000; void setup() { Serial.end();// дефолтовый USBCDC не нужен disableDebugPorts();//отключить режим дебага pinMode(PA0, OUTPUT); pinMode(PA1, OUTPUT); pinMode(PA2, OUTPUT); pinMode(PA3, OUTPUT); pinMode(PA4, OUTPUT); pinMode(PA5, OUTPUT); pinMode(PA6, OUTPUT); pinMode(PA7, OUTPUT); pinMode(PA8, OUTPUT); pinMode(PA9, OUTPUT); pinMode(PA10, OUTPUT); pinMode(PA11, OUTPUT); pinMode(PA12, OUTPUT); pinMode(PA15, OUTPUT); pinMode(PB0, OUTPUT); pinMode(PB1, OUTPUT); pinMode(PB2, OUTPUT); pinMode(PB3, OUTPUT); pinMode(PB4, OUTPUT); pinMode(PB5, OUTPUT); pinMode(PB6, OUTPUT); pinMode(PB7, OUTPUT); pinMode(PB8, OUTPUT); pinMode(PB9, OUTPUT); pinMode(PB10, OUTPUT); pinMode(PB11, OUTPUT); pinMode(PB12, OUTPUT); pinMode(PB13, OUTPUT); pinMode(PB14, OUTPUT); pinMode(PB15, OUTPUT); pinMode(PC13, OUTPUT); pinMode(PC14, OUTPUT); pinMode(PC15, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PA0, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA0, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA1, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA1, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA2, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA2, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA3, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA3, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA4, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA4, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA5, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA5, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA6, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA6, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA7, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA7, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA8, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA8, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA9, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA9, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA10, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA10, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA11, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA11, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA12, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA12, LOW); // turn the LED off by making the voltage LOW digitalWrite(PA15, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PA15, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB0, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB0, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB1, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB1, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB2, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB2, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB3, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB3, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB4, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB4, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB5, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB5, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB6, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB6, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB7, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB7, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB8, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB8, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB9, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB9, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB10, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB10, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB11, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB11, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB12, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB12, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB13, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB13, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB14, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB14, LOW); // turn the LED off by making the voltage LOW digitalWrite(PB15, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PB15, LOW); // turn the LED off by making the voltage LOW digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW digitalWrite(PC14, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PC14, LOW); // turn the LED off by making the voltage LOW digitalWrite(PC15, HIGH); // turn the LED on (HIGH is the voltage level) delay(timer); // wait for a second digitalWrite(PC15, LOW); // turn the LED off by making the voltage LOW }
пожалуйста, поподробнее - что такое "правильный во всех смыслах" код?
Код, приведенный выше - можно записать примерно в 15 раз короче (строк 10-12), если организовать пины в массив и перебирать их в цикле
Убрать delay. Запихнуть как то все в массив или куда то еще и в цикле итерировать. Знаю только Python
Убрать delay. Запихнуть как то все в массив или куда то еще и в цикле итерировать. Знаю только Python
сколько платите?
А в чем смысл 31 секунду сидеть и смотреть как переключаются светодиоды? И почитайте про BRR BSRR регистры. Можно просто сдвигом единички всё включить и выключить.
Как сделать код правильным во всех смыслах этого понятия
Хороший вопрос!
Похоже, у нас появился свой Шекспир!
Все просто, никаких светодиодов, это прибор Рагеля, электроды в количестве 32 штук касаются тела, поочередно на каждом из них появляется ток 50-100мка. Почему поочередно, потому что при подаче напряжения на все электроды ток найдет самый короткий путь.
В планах прикрутить кнопки для увеличения и уменьшения промежутка переключения электродов. Но программа, как я понял дубовая( просто переделанная мною из blink). К ней кнопки не захотелось приделывать.
Прогресс, однако! Раньше электротоком больных лечили принудительно, а теперь они делают это сами, добровольно :)
сурово...
Не получится с током. На напряжении 3 вольта кожу не пробьёт. Хотя бы до 12 , а лучше до 36 поднимать надо и токоограничивающие резисторы. А это схему городить. Тогда уж проще регистры поставить и их двоичным кодом крутить.
Да я так и сделал плюс с порта контроллера идет на базу транзистора на эмитере минус 27 вольт с преобразователя. плюс общий через стабилизатор тока на тело. с открытых колекторов выходы на электроды. Мне бы кто с программой помог?
сурово 50мка ? Микротоки
В СТМ не все физические пины можно использовать для ввода/вывода без риска что либо сломать.
Это скорее электронная качалка для лентяев. Фигуру рельефную хочется, а время на это потратить лень. Работает как лапка лягушки. Подал ток мышца стянулась.
С программой не помогу, так как на смартфон захотят прикрутить. Я же говорил лентяи делают.
Как сделать код правильным во всех смыслах этого понятия
Хороший вопрос!
Похоже, у нас появился свой Шекспир!
не один я на ардуино замахнулся )))
Кто тут, что имел против генератора для катушки Мишина? ;-)))
И что работает? Как то из описания не очень понятно. Схему нарисовать можно? Как по мне таким включением транзистора процессором управлять не получится.
И что работает? Как то из описания не очень понятно. Схему нарисовать можно? Как по мне таким включением транзистора процессором управлять не получится.
Что интересно: напрочь излечивает болезни 123 наименований, включая алкоголизм, непроходимость кишечника, рак, шизофрению и шпору пяточную. Хотя насчет шизофрении есть некоторые сомнения...
ИМХО, обсуждать лучше бы в ветке про катушку мишина, той ветке всё равно уже ничего не повредит.
какая разница что я выбрал для изучения основ. У нас демократия вроде?
если это "для изучения" - так что ж вы просите кого-то написать вам код? Вы так сами ничему не научитесь. Почитайте про массивы и положите пины туда - только этим уже уменьшите код в 10 раз
Просто низнаю с чего начать. Вернее тормазнулся. Сейчас на ардуино все сделанно уже. Пищалки моргалки дребежалки управлялки. Хочется чего то нового уже. А вдруг заработает. Спине помогло моей после надрыва. А насчет шизофрении так природа тоже эксперемнтирует.
то есть пост надо понимать так - "самому что-то лень, да и не очень и нужно - сделайте кто-нибудь за меня" ?
В таком разе пользуйтесь тем, что работает - и не трахайте мозг другим
Удачи
что почитать
Я всегда предлагаю начинать с основы основ. С программирования на языке C++. Ведь далеко не секрет что среда Ардуино использует его в чистом виде. Этот язык не прост в освоении и часто требуется несколько лет. Поищите книги Керриган Ритчи, можно почитать что-то из серии C++ для чайников для начала.