Официальный сайт компании Arduino по адресу arduino.cc
Расширенная инструкция языка
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 01/02/2015 - 12:31
Есть ли где-то исчерпывающее описание языка? Существующие инструкции какие-то уныло-вялые, с сайта arduino.cc я тоже не нашёл достаточно полезного.
Пример вопросов, которые мне не удалось решить:
1. Диапазон измерений, по типу: if(2>U>1) — простая задача, которая работает только в трактовке: if(2>U && U>1)
2. Подать половину напряжения на цифрвой порт, которое считывается с другого. Пример:
void setup(){pinMode(11, OUTPUT);} void loop(){digitalWrite(11, digitalRead(12));} //подаю на 11 контакт 5 вольт, которые снял с 12го. //но, когда мне надо подать 2,5 вольта, то: void loop(){digitalWrite(11, digitalRead(12)/2);} //не работает
В связи с чем хотелось бы найти полноценную инструкцию
По первому вопросу непонятно что не устраивает, да работает только так
Про digitalWrite http://arduino.ru/Reference почитать отдельно, может принимать 2 значения HIGH или LOW. Посему, что такое HIGH/2 непонятно. Если есть желание получить такой эффект то лучше использовать analogRead и Write соответственно.
analogWrite даёт импульсный сигнал, а это неудобно. Если я чего-то не понимаю, то это опять же сводится к тому, что нужно внятное руководство.
Автор, почитайте что такое двоичная логика. И потом ответьте на вопрос: как в двоичной логике можно подать половинный сигнал? Тут мозги нужны, а не внятное руководство.
Я спрашиваю не про системы счисления. Либо предлагайте полезный материал, либо не засоряйте тему.
Сергей Алексеевич, изучите язык Си, хотя-бы основные команды и операторы. Изучите общую информацию по устройству и принципу работы микроконтроллеров, изучите даташит на ваш конкретный микроконтроллер. После этого все вопросы сами отпадут.
Куда уж более внятно - цифровой вход на то и цифровой, что может быть только в двух состояниях.
Никаких промежуточных значений прочитать с него невозможно - только дискретно HIGH или LOW.
Если нужны промежуточные значения - используйте АЦП, который прикручен к аналоговым входам.
Не нравятся ответы, читайте доки.
Не нравится Си, используйте другой язык программирования.
Хотите холивара, продолжайте в том же духе.
analogWrite даёт импульсный сигнал, а это неудобно. Если я чего-то не понимаю, то это опять же сводится к тому, что нужно внятное руководство.
По этому вопросу читать надо документацию на конкретный микроконтроллер - там всё будет описано предельно внятно. Настоящих аналоговых выходов у ардуиновских контроллеров нет, как и у многих других контроллеров. Если аналоговый выход необходим - цепляйте внешний ЦАП, или выбирайте другой контроллер.
По поводу if(2>U && U>1) - читать надо документацию на языки C/C++. На этих языках - да, выражение if(2>U>1) будет логически неправильным, хотя синтаксической ошибки нет - правила языка соблюдаются.
Цифровой вход, однако, при analogWrite, согласно тем же инструкция, выдаёт 256 значений, которые можно изменять. Но я не понимаю, как это применить в моём случае. И это НЕ единственная задача. Поэтому и прошу у вас не советов, а материала.
Цифровой вход, однако, при analogWrite, согласно тем же инструкция, выдаёт 256 значений, которые можно изменять. Но я не понимаю, как это применить в моём случае. И это НЕ единственная задача. Поэтому и прошу у вас не советов, а материала.
В данном случае - это не цифровой ВХОД, а цифровой ВЫХОД. К тому-же речь идет о ШИМ.
В, по всей видимости, вместо изучения вопроса, пытаетесь применить какие-то свои знания, которые не совсем применимы к программированию Ардуино.
Цифровой вход, однако, при analogWrite, согласно тем же инструкция, выдаёт 256 значений
Выход. И выдаёт он не 256 значений, а два, но со строго определёнными временными характеристиками, которые как раз зависят от параметра функции analogWrite.
Документация по функциям - да, она нужна. И я согласен, что она не такая полная, как иногд ахочется. Но для простого применения, без углубления в подробности - по-моему вполне достаточно
Давайте всё-таки отойдём от вопроса АЦП. Я читаю хабр и некоторые скетчи, но там попадаются чаще всего большие и сложные задачи, разбор которых не всегда принсоит то, что я искал. Поэтому предлагайте, что мне гуглить ещё, но именно связанное с Ардуино.
А вопрос-то какой?
Что почитать связанного именно с языком Ардуино, чтобы оно охватывало хотя бы глупые вопросы а-ля первый пост.
http://wiki.amperka.ru/
http://wiki.amperka.ru/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%83%D1%80%D0%BE%...
На это уже подписан на ютубе, как раз их скетчи и смотрел.
Ну тогда задавайте конкретные вопросы...
Конкретных вопросов будет целый форум )) Я планировал сделать на Арудинке одну часть схемы, как потенциометр - входное напряжение и два выходных, разные по величине. Например, на вход 5в, на один выход 3в, на другой 2В. Логика, которую я применил, написав digitalRead(12)/2 — считанное напряжение поделить на 2. Т.е. в целом код я представлял себе следующим образом:
Но, раз такая логика не работает, то ШИМ - единственный способ?
Почему я не использую аналоговое входы - я на них буду подавать ещё входное напряжение, и задам аналогРеференс, т.е. установлю опорное напряжение равно 2В. Получается, что использовать 5В на аналоговых входах я уже не смогу, потому что все значения больше 2В будут равны 1023.
Уж озвучили б всю задачу, а то не понимая, что вы хотите в целом, сложно что либо советовать. Читая отрывки из произведения такое ощущение, что преобразователь напряжения изготавливаете ток извращенный какой-то.
Конкретных вопросов будет целый форум )) Я планировал сделать на Арудинке одну часть схемы, как потенциометр - входное напряжение и два выходных, разные по величине. Например, на вход 5в, на один выход 3в, на другой 2В. Логика, которую я применил, написав digitalRead(12)/2 — считанное напряжение поделить на 2. Т.е. в целом код я представлял себе следующим образом:
Но, раз такая логика не работает, то ШИМ - единственный способ?
Почему я не использую аналоговое входы - я на них буду подавать ещё входное напряжение, и задам аналогРеференс, т.е. установлю опорное напряжение равно 2В. Получается, что использовать 5В на аналоговых входах я уже не смогу, потому что все значения больше 2В будут равны 1023.
Digital может принять только лог. 0 или лог. 1.
Если результат не равен им, то будет округлен до 0 или 1.
Замерять напряжение только с аналоговых входов, таких как А0...Ах командой analogRead, получая диапазон от 0 до 255. Либо усложнять схему новыми элементами.
При определенном извращении можно выдавать сигнал с определнной точностью цифровым выходом через делитель напряжения... Но для этого нужно боооольше цифровых выходов.
Если вам надо выдавать 5 В или 2.5 В, то можно это сделать на паре резисторов и паре цифровых пинов.
Сергей Алексеевич, советов не жалко, сейчас надаём, и полезных и не очень.
Но слишком мало информации, не совсем понятно, что нужно сделать.
Если я правильно понял - поделить входное напряжение на два выходных, в заданном соотношении?
Но если можно, чуть подробнее. Какие, например, требования к точности напряжений и быстродействию схемы? От этого зависит способ решения проблемы.
Насчёт аналогового выхода - да, у ардуино для этого есть только ШИМ. Но если потребуется, и если хватит выводов - можно прицепить что-нибудь вроде этого:
Но опять же, невозможно вслепую угадать, подойдёт ли оно конкретно Вам.
Вся задача — это
дебильныйдипломный проект.Чисто бумажный проект, надо просто хотя бы приблизительно рабочий код.
Приблизительный код - это тот же Ваш предполагаемый скетч, но только с использованием analogRead и analogWrite, вместо digital-версий. А остальное - это уже подробности, которые можно уточнить только зная подробности. :)
Замерять напряжение только с аналоговых входов, таких как А0...Ах командой analogRead, получая диапазон от 0 до 255. Либо усложнять схему новыми элементами.
Неплохо, но не представляю, как )
Второй аспект:
Я хочу на аналоговый вход подавать напряжение, которое буду контролировать. Оно очень мало и в предыдущей теме мы его усилили ОУ примерно до 2В. Чтобы регулировать его милливольтами я решил использовать AREF и подать опорное напряжение 2В. Т.е. я на всех аналоговых входах установлю опорку меньше пяти вольт. Или можно установить только для одного аналового входа опорку? Типа analogReference(14, EXTERNAL);
Изобразил графически. U1 изменяется вместе с U2, соответственно изменяются выходные напряжения. Всё это ранее контролировалось потенциометром, который решено заменить на Ардуино. Но только это почему-то невообразимо сложно
От оно че Михалыч, нужен электронный потенциометр на ардуино?
Замерять напряжение только с аналоговых входов, таких как А0...Ах командой analogRead, получая диапазон от 0 до 255. Либо усложнять схему новыми элементами.
Неплохо, но не представляю, как )
Ну первое, что пришло в дурную голову:
Найти АЦП, котороый будет поставлять вам значения в двоичном коде на цифровые пины, что заметно уменьшит их количество.
А какая ардуина используется?
Можно назвать это и так. Лишь бы был способ осуществления.
Никакая Ардуино не используется. Работоспособность кода проверяю на 123d.circuits.
Digital может принять только лог. 0 или лог. 1.
Если результат не равен им, то будет округлен до 0 или 1.
Замерять напряжение только с аналоговых входов, таких как А0...Ах командой analogRead, получая диапазон от 0 до 255. Либо усложнять схему новыми элементами.
от 0 до 1023
Можно назвать это и так. Лишь бы был способ осуществления.
Никакая Ардуино не используется. Работоспособность кода проверяю на 123d.circuits.
Ну если проект бумажный впишете не UNO, а MEGA. Там больше входов. XD
http://arduino.ru/Hardware/ArduinoBoardMega
Цифровые Входы/Выходы 54 (14 из которых могут использоваться как выходы ШИМ)
Аналоговые входы 16Не будете экономить их.
Упс, пардон насчет точности 0..1023. :)
И чего получится? Выдавать на каждый выход 5В и через делитель уже получать нужное напряжение? Если так, то это бред сивой кобылы - заменять один потенциометр на пяток делителей и гигантскую плату с процессором.
И чего получится? Выдавать на каждый выход 5В и через делитель уже получать нужное напряжение? Если так, то это бред сивой кобылы - заменять один потенциометр на пяток делителей и гигантскую плату с процессором.
Там 14 ШИМ выходов. Делители не нужны будут.
Так шим импульсный, а мне нужно линейное.
Так шим импульсный, а мне нужно линейное.
А для чего оно такое линейное нужно?
Конденсаторы впихнуть можно, будут сглаживать ШИМ сигнал.
Тема на изиэлектронике по мк-шному чтиву:
http://we.easyelectronics.ru/AVR/dokumentaciya-po-avr-mikrokontrolleram-...
Кто всё прочтёт, тому врятли придётся что-то спрашивать здесь))
Т.е. единственное, что мы можем - сделать ШИМ и сгладить его кондёрами?
dimax, спасибо, почитаю в другой жизни. Времени не хватит )
Т.е. единственное, что мы можем - сделать ШИМ и сгладить его кондёрами?
Всего лишь, как вариант.
А чем вас ШИМ так не устраивает?
Тема на изиэлектронике по мк-шному чтиву:
http://we.easyelectronics.ru/AVR/dokumentaciya-po-avr-mikrokontrolleram-...
Кто всё прочтёт, тому врятли придётся что-то спрашивать здесь))
На всякий случай отправим в избранное. :)
Тем, что это будет система сигнализации, которая работает на отклонении в 200мВ. Если у меня будут импульсы, то стаблильности никакой. Добавлять кондера или собирать схемы на делителях тоже не вариант. Я надеялся получить от устройства простую математичскую функцию, вычитающую напряжения.
Тем, что это будет система сигнализации, которая работает на отклонении в 200мВ. Если у меня будут импульсы, то стаблильности никакой. Добавлять кондера или собирать схемы на делителях тоже не вариант. Я надеялся получить от устройства простую математичскую функцию, вычитающую напряжения.
МК дискретные устройства. Они не могут выдать чистый сигнал отличный от логических 0 и 1. А вычитать напряжения можно и на операционнике и смотреть на его выходе уже разность сигналов какая.
Планировалось всё сделать на Ардуино, без лишних заморочек. И так уже воткнул ОУ на входной сигнал, потому что он отрицательный, а гребаное Ардуино отрицалки не читает. Теперь выясняется, что и выходное напряжение нужно чем-то обхаживать. Смысл от платформы? Усложнение схемы, повышение стоимости, увеличение габаритов. Чем больше устройств, тем меньше надёжность.
Планировалось всё сделать на Ардуино, без лишних заморочек. И так уже воткнул ОУ на входной сигнал, потому что он отрицательный, а гребаное Ардуино отрицалки не читает. Теперь выясняется, что и выходное напряжение нужно чем-то обхаживать. Смысл от платформы? Усложнение схемы, повышение стоимости, увеличение габаритов. Чем больше устройств, тем меньше надёжность.
Наличие смысла необходимо смотреть в каждом конкретном случае. Где-то ардуина будет отлично подходить, а где-то нет.
Более того ардуину еще от помех надо защищать. :)
МК хороши когда нужна более или менее сложная логика, которую сложно реализовать на обычных компонентах.
Не совсем понял нужность тут МК, ОУ тут более подходит, тем более есть двуполярные ОУ.
Но если уж так приперло использповать МК, то вы можете шимом управлять яркостью светодиода, который будет управлять сопротивлением фоторезистора, просто говоря оптрон. за одно и гальваническая развязка.
Далее, есть микросхемы электронных регуляторов громкости, с цифровым входом, но они имеют малое количество шагов.
И последнее, я смотрю нынешнее образование вообще не заставляет думать мозги, не в обиду вам.
П.С. советы может пригодятся.
И да если это для курсовой, и нужно именно на МК, то вы можете еще забубенить езернет, с выводом на страничке в удобочитаемом виде показаний. Тогда успех вам гарантирован.
Я лампочку чтоли тут зажигаю? ) Это дипломный проект по дистанционнму управлению электронным потенциометром средствами gsm. Но весь проект загибается на том, что на выходе у меня должно быть обычное напряжение, как с батарейки, а не шим. И уж лишние конструкции мне точно там не нужны, и так сам модуль здоровенный, да ещё GSM-шилд.
Вот что бывает, если ТС изначально не верно поставил перед собою задачу, и принял неверные пути решения.
И рад бы помочь, но до сих пор не могу понять сути задания. Придется вам натягивать Ардуино на глобус без меня...
Начало темы гласит не от ТС или ТЗ или проекте в целом ) Я вообще начала разговор о литературе. Раз литература в дефиците, то ответил на несколько вопросов. Да меня не устраивает ШИМ, потому что. Раз методов, кроме ШИМ нет, я буду заниматься проектом исходя из маскимального упрощения. Если Будет совсем тяжко, закожу здесь код с подробным ТЗ.
Код...
Если я правильно вас понимаю - вам нужна работа с аналоговым сигналом. Не нравится ШИМ - прикрутите к Ардуино ЦАП.
Но я даже не уверен, что вам нужен микроконтроллер...
Я не Пухлявый, но лучше закажите мозг.
Я радиолюбитель, собравший и отремонтировавший сотни устройств и девайсов. Но я не могу понять что вы хотите. У вас хоть есть блоксхема или нечто похожее? Еще раз повторю то что уже сказали выше, МК это логика, она либо 1 либо 0. Есть у МК АЦП есть выход ШИМ+RC цепочка будет вам то что нужно.
БП у компа тот же ШИМ! И там очень стабильные напруги 12/5/3.3 В и т.д.
Проект - это бандурина, состоящая из модулей от двух до одиннадцати. Уже извините, что не расписал тут всей схемы со всеми датчикам, микросхемами и трансфорамотором во главе. Для тех, кто ЯННП даже картинки прикреплены.
Начальство не одобрило схему с ШИМ. Проект будет переделываться, значит, холивар можно дальше не разводить. Оставим только входные напряжения и смс-ки о их состоянии.