Ви не увійшли.
У меня сейчас ровно 12 лет трудового стажа программиста плюс ещё лет 7 баловства с разными языками программирования. Родители - программисты, это всё объясняет, хотя батя почти сразу же перешёл в электронщики, потому что [в СССР] программистам мало платили :-)
Спасибо всем тем, кто помогает начинающим советом и делом. Почему вы это делаете? Потому, что все мы - высокоразвитые социальные существа, которые могут быть альтруистами и получать положительные эмоции от безвозмездной помощи другим, хотят получать признание и почёт в своих кругах, да и просто самореализоваться. Чувствуете позитив - значит есть дополнительный смысл в этой жизни, всё хорошо! Да и в последние годы лучше так помочь кому-то, чем тратить время на чтение негативных новостей.
Давным-давно, с появлением у меня диалапа я засел на fido7.ru.delphi. Как же там продуманно всё было сделано: FAQ, модераторы с плюсомётом и банами, для чайников специальное место fido7.ru.delphi.chainik, где можно было задавать простейшие вопросы. Туда заходили и гуру программирования, так как больше им особо тусоваться было негде - тогда Интернет был ещё маленький. А метод Google не работал, потому что искать на просторах Интернета было особо нечего) Что-то полезное найти почитать было достаточно трудно. А сейчас в распоряжении каждого -- море доступной информации, удобный поиск, но мало кто хочет читать и учиться. Напоминает мечты советских учёных о том, что, мол, когда компьютеры станут доступными каждой семье, то все поголовно начнут заниматься наукой, расчётами, что приведёт к скорому освоению космоса и запуску управляемой термоядерной реакции... лайканью котиков в соцсетях, выкладыванию фото завтраков в Инстаграмме и взрыванию разноцветных шариков на удивительных карманных гигагерцовых многоядерных вычислительных машинах :-D
Если у вас шаговые двигатели, то предлагаю вам сначала собрать и воспроизвести какой-нибудь пример для них (для одного), а потом попробовать его изменить.
Пример примера: https://www.arduino.cc/en/Tutorial/StepperSpeedControl
Вот тут написано, как писать на Arduino на чистом C: https://habrahabr.ru/post/247663/
А ещё там есть комменатрий после статьи, что "внутри" Ардуино на самом деле есть прослойка, которая вызывает ваш скетч:
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}Вот она-то и ожидает от вашей программы наличия минимума из двух подпрограмм https://www.arduino.cc/en/Tutorial/BareMinimum:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}Да у этой Меги ножек хоть отбавляй https://arduino-info.wikispaces.com/MegaQuickRef
Можно попробовать заменить, например, на 22-ую. Для этого надо также заменить в программе 20 на 22 (там, где это относится к подгоревшей ножке).
Ножки для вывода можно использовать какие угодно, но некоторые -- ценный ресурс, так как они умеют считывать аналоговый сигнал, могут выдавать PWM, способны вызывать программные прерывания в ответ на изменения входного сигнала, а на некоторых из них выведены аппаратные интерфейсы для связи, в т.ч. запаянные в сторону компьютера.
Интересно, получится ли так:
copy COM1 %USERPROFILE%\Documents\comport.txtгде "COM1" надо заменить на ваш реальный виртуальный порт Arduino, а "%USERPROFILE%\Documents\comport.txt" - на путь с вашими правами на запись.
А если через каждых 2 метра поставить по такому светодиоду, чтобы они управляющий сигнал регенерировали? Или там ничего такого нет?
Альтернатива - пойти глубже http://lednews.lighting/topic/1633-podk … orii-cat5/
Мне ещё такой момент не понятен. Arduino 8 разрядная, а как это выглядит физически ? Каждый бит имеет свою ножку ? Например, я подал импульс на вход, а на разрядность мне нужно как- то ориентироваться ? Импульс вроде один, а битов 8... Не понятно.
Разрядность умного камня aka CPU или MCU заметна, прежде всего, в разрядности его регистров общего назначения, в т.ч. самого популярного регистра - аккумулятора. Естественно, что арифметико-логическое устройство заточено под ту же самую разрядность (но может использовать два регистра результата для операций типа умножения, потому что иначе результат девать некуда будет).
На что это влияет? Например, порты ввода-вывода такой же ширины, при том что эти порты у микроконтроллера из Ардуино занимают большую часть ножек. А ещё на скорость обработки целочисленных данных, так как за одну арифметическую операцию размер числа ограничен количеством бит машинного слова. Не проблема обработать "длинное" число за пару проходов, но это же время. Ещё малая разрядность отражается в малой разрядности различных шин, адресуемой памяти. Представьте себе только, как рассчитать указатель, используя 8-битный регистр, если у вас данные хранятся по адресу около 1 мегабайта - это три захода при прямой адресации, что, конечно, немного обходится регистрами сегментов памяти, но это уже совсем другая сказка.
Все входы одного порта можно за раз (за операцию) читать-писать. Да, каждый бит там имеет свою ножку. Но можно обращаться выборочно к отдельным ножкам.
Толковый рассказ о том, как работают эти светодиоды: https://www.youtube.com/watch?v=P7fqKKpwpBQ
Их можно купить даже на Slando, который стал OLX, по 7 грн за штуку: http://olx.ua/list/q-WS2812B/
Готовое решение - адресуемые светодиоды. Наглядный первый попавшийся ролик https://www.youtube.com/watch?v=6atLA5xxA8Q
Кстати, надо попросить магазин закупить что-то типа этого https://www.adafruit.com/products/306 -- 32 RGB светодиода на метр, каждый светодиод управляется отдельно.
Наверное, эти светодиоды в тёмной коробочке можно использовать как регенераторы управляющего сигнала и протянуть по 10 метров провода из центра комнаты от ЦУ.
Все светодиоды должны управляться независимо или 5 светодиодов на одном отдельно взятом объекте загораются вместе?
Если загуглить, то наверняка схемы и прошивки найти можно. Я вот даже не гуглил, а просто со второго клика по Ютубу нашёл такое видео, у которого в описании ссылка на архив со всем добром, пока качается -- https://www.youtube.com/watch?v=90ZovgKY91Y
А вот нагуглил на Хабре: https://geektimes.ru/post/256358/
на вход этого драйвера нужно подать три сигнала, Enable, Step и Dir
Шаговые...
Двигатели не шаговые, а постоянного тока.
Не шаговые :-)
Давно как-то смотрел на YouTube, как это сделано. Заметил, что синхронизация делается один раз на оборот (светодиод по фотоприёмнику или датчик Холла).
Т.е. измеряем время T полного оборота светодиодной линейки, далее делим его на "радиальное разрешение" экрана, получаем время свечения одной строки t и далее выдаём строки, сменяя их через время t.
А можно наоборот поступить: стабилизировать скорость вращения двигателя при остальном всём на заранее рассчитанных константах.
Выглядит красиво https://www.youtube.com/watch?v=Md78sOI1-r8
строк службы AGM заявлена 8- 10 лет при 200 циклах по 80% разряда. Реальная эксплуатация показывает что 2 года и батарей нет. Причем количество циклов тоже за 2 года ну максимум 40- 50. Почему?
Может быть, там "под звёздочкой" сказано, что при условии разряда/заряда токами, которые не больше чем от карманного фонарика и при постоянной комнатной температуре. Или три разряда на 10% эквивалентны по разрушающей силе одному 80%-ному. Или дозарядка неправильная. Или китайцы плохо работают и делают из некачественных материалов.
PS: Есть где разгуляться экспериментаторам, ушёл читать http://electrotransport.ru/ussr/index.php?topic=2103.0
подключать к Ардуине большое количество разнообразных датчиков
О, тут в магазине есть даже аналоговый коммутатор на 16 входов с возможностью каскадирования.
Напряжение, как разность потенциалов, меряют между условной "землёй" и "сигналом". Со стороны Arduino всё просто, вот тут, соответственно, чёрный и синий провода на рисунке https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage для измерения одного напряжения.
Объясните пожалуйста вот эту схему: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
Там переменный резистор с ручкой выступает в качестве делителя напряжения, вот полученное с него напряжение и измеряет Arduino на входе A0.
Есть тут хитрость http://stackoverflow.com/questions/1316 … an-arduino
т.е. в вашем коде тогда надо писать как-то так:
"MyClass::MyClass(int rxD, int txD) : _mySerial(rxD, txD) { }"
Там ещё много всяких ошибок пишется, если прокрутить вывод.
Если убрать "static" из "private: static SoftwareSerial _mySerial;", то уйдут, например, ошибки "undefined reference to `MyClass::_mySerial'".
Помогите пожалуйста с программкой, очень нужно для нужд российской науки.
А как же русский форум http://goo.gl/h402mB ?
нужно уметь подавать напряжение от
Arduino не умеет выдавать постоянное напряжение. Есть как минимум два варианта решения этой задачи: добавить внешнюю микросхему ЦАП (DAC) или выдавать через RC-цепочку и ШИМ (PWM) импульсы, которые с некоторой погрешностью сойдут за постоянку.
снять показание напряжения от 0 до + 5.0 Вольт (кстати, а до 10 Вольт можно снимать значения?)
Встроенный АЦП (ADC) позволяет это сделать, примеров куча, в т.ч. и на официальном сайте https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
Можно мерять и 10 Вольт, предварительно уменьшив напряжение в два раза через резистивный делитель, и опять же задача не нова: http://forum.arduino.cc/index.php?topic=12563.0
снять показание тока от 0 до 0.1 милиАмера (ток постоянный
Какой-то слишком маленький ток для ардуинщиков, тут без шилда не обойтись :-)
Ну как там обычно меряют - ставят шунт (R) и по закону Ома I = U / R вычисляют ток (I) из падения напряжения (U).
Резистор ставят номиналом поменьше, чтобы падение напряжение было небольшим и процесс измерения меньше влиял на измеряемую величину. При этом для измерения малых напряжений надо задуматься об изменении опорного напряжения АЦП в меньшую сторону (там есть нижний предел вроде 1 Вольт).
Ну, а вобщем как-то так: http://www.vwlowen.co.uk/arduino/current/current.htm
Контроллер подключен к PC как COM порт. Какими командами из внешней программы на PC (пусть это будет С++ или MATLAB) нужно задавать
Это уже чисто программирование. Arduino прямо из коробки даёт возможность прикладной программе на ПК общаться с вашей прошивкой в микроконтроллере через последовательный порт: https://www.arduino.cc/en/Tutorial/Soft … ialExample
Пример управления встроенным светодиодом через COM-порт с компьютера (управлять можно прямо из Arduino IDE через Serial Monitor):
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
while (!Serial); // wait for serial port to connect. Needed for native USB port only
}
void loop() {
if (Serial.available() > 0) {
int incomingByte = Serial.read();
switch (incomingByte) {
case '0': digitalWrite(13, LOW); break;
case '1': digitalWrite(13, HIGH); break;
default: Serial.print("Expected 0 or 1 but you entered "); Serial.println((char)incomingByte); break;
}
}
}Да, знание английского языка очень полезно в этом деле.
подстраховаться
И ещё надо в схему добавить предохранитель на 30 Ампер.
через ЦАП - открывая до нужного состояния
IMHO вся прелесть MOSFET'ов в том, что у них низкое сопротивление в открытом состоянии, что позволяет получить хорошее КПД и низкое тепловыделение (ну, это связано само собой).
Если же такой [силовой] транзистор открывать не до конца, то он превратится в печку. Именно поэтому и применяют ШИМ для управления, например, теми же двигателями или лампочками.
Один пин - прямо на мосфет, второй идет от ЦАП. Как их правильно развязать
Поставить два мосфета параллельно :-) Или, например, неактивный выход переводить в высокоимпедансное состояние средствами МК или дополнительным чем-то.
1) Возможно ли, чтобы Ардуино время от времени заряжал через юсб постоянно подключенный к нему телефон, при этом с ним общаясь? (Напр. заряд 75% - включается зарядка до 100%) Сам Ардуино постоянно включенный в розетку.
Программа на Android может без проблем узнавать уровень заряда аккумулятора смартфона. Arduino через реле может включать зарядку телефона.
2) Можно ли будет подключать к Ардуине большое количество разнообразных датчиков? (>50?)
Если это датчики типа такого, то сходу тремя простыми проводами их десятки подключить можно. Если датчики с простыми выходами типа контактов или с логическими уровнями, то можно с помощью микросхем-мультиплексоров уменьшить количество используемых ножек Arduino, например 7 выводов адреса + 1 ввод сигнала позволят опросить больше сотни (128) простых датчиков.
3) Как лучше реализовать мониторинг счетчиков? Веб камера или...
Если у счётчиков есть импульсный выход, то можно считать имульсы и переводить в показатели потребления. Для некоторых счётчиков даже есть фирменные накладки для облегчения задачи. См. https://geektimes.ru/post/254968/ . Или с камерой https://habrahabr.ru/post/220869/
4) Есть какие - нибудь ограничения на длину проводов от Ардуино до датчиков или реле?
Да, десятки метров наверное могут чему-то помешать. Но есть, например, последовательный порт можно удлиннить на физическом уровне через RS-485 или даже через CAN связать несколько узлов домашней автоматизации.
5) Могут быть аппаратные сбои? Если все правильно запрограммировать, все будет ок?
Могут, ведь даже Windows иногда зависает. Спасёт Watchdog, народ пишет например вот: https://geektimes.ru/post/255800/
Есть же примеры попроще http://arduino.ru/forum/proekty/gsm-signalizatsiya