Друзья сайта |
Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)
Электроника на KitPost
|
Наш опрос |
Оцените мой сайт
Всего ответов: 86
|
|
Инфракрасная паяльная станция своими руками на ARDUINO
| |
Alexandr_ | Дата: Среда, 08.02.2017, 19:55 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 814
Статус: Offline
| Форумчане, куплю-продажу и личные сделки выяснять в личке, либо в новом форуме, этот форум для вопросов по электронной части станции.
Архив по станции от hominidae с проектом efimsu ->здесь Проект Леонида, Leonid0071 "UNO-MAX6675-PC" и его доработки на форуме Амперки -> скачать
Люби грешников, ненавидь сам грех!
|
|
|
Пользователи поблагодарившие Alexandr_ за этот пост: |
|
|
snmar4enko | Дата: Пятница, 11.05.2018, 07:01 | Сообщение # 136 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Цитата mon ( ) там нет 16bit таймера? конечно есть, Timer1 - выложите сюда пример кода который используете для таймера (начальная настройка, задание времени пересчета, остановка и сброс таймера, связь с прерыванием). Хотя подумать - мы используем 200 значений мощности,точней с пересчетом 184, для этого 8 бит достаточно. Теперь представим что у нас мощность имеет 1000 значений - точность 0.1 процента - но эти значения задает ПИД - и ему при тех же коэффициентах необходимо время в 5 раз дольше чтобы придти к установившемуся режиму. На практике это тепмературные перелеты и недолеты. Ведь допустим наш профильный рост на 1 градус будет отрабатыватся не за наши расчетных полсекунды а за 2.5 секунды .... додумывайте сами что за это время может произойти. А к примеру перелет на 5 градусов в конце пайки - это уже другой профиль пайки. Оно нам надо? Я долго не мог понять когда прорабатывал ветку 1.4.* почему так изменение периода ШИМ и шкалы мощности влияют на работу ПИД.
Я конешно понимаю что в протеусе намного быстрей все проверить - но пока не освоил этот инструмент моделирую в голове и проверяю на реальном железе. А оно немного отличается от моделирования. Взгляните на ваши осциллограммы. С отрицательным импульсом (активный ноль) можно совладать. Но опережение управляющего импульса - при 1000 залезет в соседнюю полуволну. Это не так опасно как при задержке но все же.Цитата snmar4enko ( ) Уменьшил время опроса ПИД до 50 микросекунд. - здесь я ошибся - нужно 50 милисекунд -то есть 200Гц. И это работает несмотря на переменную 100 милисекунд в самой библиотеке ПИД. Я уже писал ранее рассуждение про эту переменную... она на интегральный и дифиринциальный коэффициенты влияет - уменшая или увеличивая в разницу с внешней переменной. Да и был этот пересчет аж 1 секунду на ветке 1.4.* В предыдущих версиях ветки 2.0.* он был 100 милисекунд.
Добавлено (11.05.2018, 06:48) ---------------------------------------------
Цитата mon ( ) Если правильно выбраны коэффициенты ПИД то рано или поздно наступит установившийся режим ПИД. Так вот этот установшийся режим наступает за 10, а чтобы наверняка за 100 циклов вычисления ПИД. Время через которое вычисляется ПИД совпадает с временем диффиринцирования и интегрирования составляющих ПИД регулятора. Теперь про ШИМ или фазовый регулятор: его период должен быть меньше или равен периоду опроса ПИД. К этому дополнение выходная шкалы ПИД как бы количество периодов - необходимых для установившегося режима.
Добавлено (11.05.2018, 07:01) ---------------------------------------------
Цитата snmar4enko ( ) Я двумя руками за PID регулирование - но оно у нас не работает!!!!!!!!!!!!!!Медленный ШИМ с периодом 1 секунда. Значения PID регулирования в регулятор подставляются 100 раз в секунду. Теоретически к примеру если ПИД устанавливает мощность 20% то 20 раз включится и 80 раз будет выключен, причем включение - выключение могут произвольно чередоваться. PID должен опрашивается согласно его библиотеке 10 раз в секунду, фактически 3-100 раз в секунду. Полноценная работа ШИМ регулятора когда опрос ПИД 1 раз в секунду. Тогда и будет идеальная работа программы. Но не забываем про инерционность нагревательных элементов (Утюг, инфракрасная керамика, лампы). Они медленно нагревают плюс медленная отработка ПИД (1 раз в секунду) что мы получим если на первом и третьем этапах пайки необходимо обеспечивать нагрев со скоростью 1 градус в секунду. Прошу также учесть что что если время увеличено в 10 раз от номинального то Интегральная составляющая в 10 раз больше, а Диффиринциальная в 10 раз меньше. Уменьшение - фиг с ним. А вот Диффиринциальная составляющая может стать всемогущей. К примеру мы установили Ki чтобы увеличивало на 1% при 1 градусе разности. Увеличение времени в 10 раз меняет эту составляющую на 10% мощности при 1 градусе ошибки. Если наш термопрофиль требует увеличивать на градус в секунду то при следующем опросе PID ошибка градусов будет 1.5 или более. Соответственно добавка 15% мощности к прошлым 10%. Нижней нагреватель у меня 1.8 квт, 25% мощности это 450вт - не хилый нагрев получаем с некоторым опозданием.
Случай когда опрос ПИД приближается к 100 разам в секунду - ШИМ практически не работает - получается как бы разрыв цепи регулирования. Параллельно с этим Интегральная составляющая выростает в 10 раз. Ее значение немного меньше чем Диффиринциальная составляющая при 1 секундном опросе. Но все равно ощутимо. А разыв цепи регулирования увеличивает ошибку и соотвественно изменение выходного параметра ПИД. - здесь привожу мое рассуждение по поводу времени опроса ПИД и на что она влияет
На форуме goo.gl/tuFa9D обсуждают нашу станцию и ту которую сами параллельно написали с тех же исходников что и у нас. Анализируя код - по крайней мере для LCD2004 индикатора - получаем что для управления регулятором (твердотельное реле или симмисторный аналог) используют 20 значений мощности. При этом ПИД вычисляет 100 значений - с избытком в 5 раз, без привязки ко времени опроса - молотит на максимуме (где-то 100-500 раз в секунду - теоретически). И что из этого получается: что принципы которое я и собрал выше выполняются хоть и грубо (20 значений) в отличии от станции KSAA в которой только 2 значения: 0 или 1 в смеси с биением частот ШИМ и Сети.
Сообщение отредактировал snmar4enko - Пятница, 11.05.2018, 07:28 |
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
mon | Дата: Пятница, 11.05.2018, 07:11 | Сообщение # 137 |
Подполковник
Группа: Модераторы
Сообщений: 191
Статус: Offline
| Цитата snmar4enko ( ) Теперь представим что у нас мощность имеет 1000 значений - точность 0.1 процента - но эти значения задает ПИД - и ему при тех же коэффициентах необходимо время в 5 раз дольше чтобы придти к установившемуся режиму Как раз ПИДу будет гораздо легче,так как появляется возможность привести коэффициенты к целым числам,а значит увеличить скорость выполнения самой функции,меньше кода,реже вызывать,короче одни плюшки.
|
|
|
Пользователи поблагодарившие mon за этот пост: |
|
|
snmar4enko | Дата: Пятница, 11.05.2018, 07:37 | Сообщение # 138 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Цитата mon ( ) Как раз ПИДу будет гораздо легче,так как появляется возможность привести коэффициенты к целым числам,а значит увеличить скорость выполнения самой функции,меньше кода,реже вызывать,короче одни плюшки. Теоретически ПИД будет легче если все переменые переведем в байт,избавимся от библиотеки и сведем все до Пропорцианальной и Диффиринциальной составляющих , или только до Дифииринциальной - но в этом случае замедлится быстродействие и нужно будет уменьшать период опроса ПИД чтобы выйти на нужное нам время стабилизации.
Округление разности температур умноженное только на целый коэффициент - уже (приближение) ошибка, а Диффиринциальная составляющая тупо прибавление к установившемуся значению мощности единицы или убавление если знак другой. Давайте не забывать что диффиринциальная составляющая как раз и отвечает за установившийся режим. Снова допустим что у нас 1000 значений мощности - следовательно в худщем случае нужно 1000 периодом чтобы установить значение на выходе ПИД. Допустим мы будем использовать переменные INT и подразумевать что все значения ПИД деситикратные. Но для этого необходимо будет температуру, которая у нас 12 бит преобразовывать и умножать на 10 перед подачей в ПИД. Далее в ячейке EEPROM может хранится значение от 0 до 255, если не использовать несколько ячеек для хранения значения. Посмотрите ранее сколько возмущений из за того что в памяти уже хранятся 2х, 12и, 10и, 100о кратные значения. Допустим температуру от 150 до 255 для верхнего нагревателя тоже необходимо будет умножать на 10 перед подачей в ПИД. Ну Бог с ней с той температурой - допустим не мы будем возится с умножением температуры - но тогда разность температур в 0.5 градуса и мение не будет никак влиять на ПИД и это равносильно разрыву цепи регулирования и приведет колебаниям на определенном уровне для мощности. Нам такое не нужно .... Даст ли это эффект быстродействия чтобы быстрее опрашивать ПИД?
Скажу вам следующее - в борьбе с длинными переменными где-то урезал и переменную отвечающую за градусы, теперь не могу понять какую именно и теперь время от времени возникают те колебания мощности на определенном уровне. А казалось что там те 0.1-0.5 градуса - на что могут повлиять ....
Сообщение отредактировал snmar4enko - Пятница, 11.05.2018, 08:12 |
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Dmitrysh | Дата: Пятница, 11.05.2018, 09:29 | Сообщение # 139 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Цитата snmar4enko ( ) то есть 200Гц. И это работает несмотря на переменную 100 милисекунд в самой библиотеке ПИД. Нет не работает. Данные моделирования показывают 10 в секунду. Данные моделировая показывают что это предел. У меня получалось максимум 11-12 раз в секунду получить на 328 меге. Слишком долго работает PID.Compute.
Цитата snmar4enko ( ) Скажу вам следующее - в борьбе с длинными переменными где-то урезал и переменную отвечающую за градусы, теперь не могу понять какую именно и теперь время от времени возникают те колебания мощности на определенном уровне. А казалось что там те 0.1-0.5 градуса - на что могут повлиять .... Вот эти посмотрите
|
|
|
Пользователи поблагодарившие Dmitrysh за этот пост: |
|
|
snmar4enko | Дата: Пятница, 11.05.2018, 10:47 | Сообщение # 140 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| версия 2.0.9
Цитата Dmitrysh ( ) Вот эти посмотрите Код int tc1; int tc2; - исправил снова на тип с запятой, нужно тестировать, может проблема только в этих переменных
|
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Cinema | Дата: Воскресенье, 13.05.2018, 14:48 | Сообщение # 141 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Как-то здесь проскальзывала информация о станции от dmingo: Станция сочетает в себе ИК низ и фен сверху. Организовано управление почти как у mvm_ksaa, т.е. есть ардуинка и есть прикольный софт для ПК.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Воскресенье, 13.05.2018, 14:57 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
Cinema | Дата: Воскресенье, 13.05.2018, 15:08 | Сообщение # 142 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| еще файлы из архива по станции dmingo:
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Воскресенье, 13.05.2018, 15:11 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
Cinema | Дата: Воскресенье, 13.05.2018, 15:17 | Сообщение # 143 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| в папку vozdelsistema нужно закинуть звуки из архивов ниже:
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Воскресенье, 13.05.2018, 15:18 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
snmar4enko | Дата: Понедельник, 14.05.2018, 11:28 | Сообщение # 144 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Видел я этот проект. Давно. Аналогично с нами те же датчики на MAX6675 и LCD1602. С подогревом понятно - тупо включил выключил из компьютера по измеренной температуре. С феном вообще непонятка, зачем ПИД в ардуине, причем с выходной шкалой от 0 до 1000 и передергиванием ручного-автоматического режимов ПИД. Такая шкала ПИД становится понятной когда начинаем разбирать код регулирования фена. А что такой ШИМ с 1 секундным периодом вполне подойдет для ветки 1.4.* с твердотельным реле. Хотя у нас такой же, но с учетом ограничения мощности. При сравнении ШИМ с работой сети получаем 100% шкалу мощности, неплохо. Но 10 кратное повышение шкалы ПИД требует 10 кратного увеличения коэффициентов ПИД для обеспечения аналогичной скорости регулирования ПИД. Для чего включается ручной режим ПИД? Не понятно.
|
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Cinema | Дата: Вторник, 29.05.2018, 23:16 | Сообщение # 145 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| snmar4enko приветствую. Смотрел ваш 2.0.5 и обратил внимание на это: Код byte intefan = 20; //внутренний вентилятор на А6 byte extefan = 21; //внешний вентилятор на А7 Мои попытки назначить эти аналоговые пины на ВЫХОД успехом не увенчались. Порылся в Сети и нашел утверждение, что в даташите эти пины помечены как особенные: Цитата “2 Additional Multiplexed Single EndedInputChannels (TQFP and QFN/MLF Package only)” "A6 & A7 are analog input only. Youcannot digital write to them. " IDE пишет, что 2.0.5 занимает 81%. Прошу вас, подскажите, пожалуйста, как прикрутить аналоговые кнопки, вместо одинарных, занимающих сейчас 4 пина. Аналоговые кнопки и вычисление их значений: Не понимаю, т.к.у вас: Код //Назначаем пины кнопок управления byte upSwitchPin = 14; byte downSwitchPin = 15; byte cancelSwitchPin = 16; byte okSwitchPin = 17;
//состояние кнопок по умолчанию boolean upSwitchState = false; boolean downSwitchState = false; boolean cancelSwitchState = false; boolean okSwitchState = false;
//переменные для кнопок long ms_button = 0; boolean button_state = false; boolean button_long_state = false; boolean button_state1 = false; boolean button_long_state1 = false; Код void loop() {
//Считываем состояние кнопок управления upSwitchState = !digitalRead(upSwitchPin); downSwitchState = !digitalRead(downSwitchPin); cancelSwitchState = !digitalRead(cancelSwitchPin); okSwitchState = !digitalRead(okSwitchPin);
А у vector99 - Код //--------настройка кнопок управления------------------------------------
//#define A_PINS_BASE 100 // номер с которого начинается нумерация наших "псевдо-кнопок".
#define PIN_RIGHT 100 #define PIN_UP 101 #define PIN_DOWN 102 #define PIN_LEFT 103 #define PIN_SELECT 104
struct A_PIN_DESC{ // определяем структуру которой будем описывать какое значение мы ожидаем для каждого псевдо-пина byte pinNo; // номер пина int expectedValue;// ожидаемое значение };
A_PIN_DESC expected_values[]={ // ожидаемые значения для псевдо-кнопок { PIN_RIGHT,202}, { PIN_UP,429}, { PIN_DOWN,298}, { PIN_LEFT,563}, { PIN_SELECT,758} };
#define A_PINS_COUNT sizeof(expected_values)/sizeof(A_PIN_DESC) // вычисляем сколько у нас всего "псевдо-кнопок" заданно. #define A_POSSIBLE_ABERRATION 50 // допустимое отклонение analogRead от ожидаемого значения, при котором псевдо кнопка считается нажатой
bool digitalReadA(byte pinNo){ for(byte i=0;i<A_PINS_COUNT;i++){ // ищем описание нашего всевдо-пина A_PIN_DESC pinDesc=expected_values[i];// берем очередное описание if(pinDesc.pinNo==pinNo){ // нашли описание пина? int value=analogRead(A0); // производим чтетине аналогово входа return (abs(value-pinDesc.expectedValue)<A_POSSIBLE_ABERRATION); // возвращаем HIGH если отклонение от ожидаемого не больше чем на A_POSSIBLE_ABERRATION } } return LOW; // если не нашли описания - считаем что пин у нас LOW }
//Назначаем пины кнопок управления int upSwitchPin = PIN_UP; int downSwitchPin = PIN_DOWN; int cancelSwitchPin = PIN_LEFT; int okSwitchPin = PIN_SELECT;
//состояние кнопок по умолчанию int upSwitchState = 0; int downSwitchState = 0; int cancelSwitchState = 0; int okSwitchState = 0;
//переменные для кнопок long ms_button = 0; boolean button_state = false; boolean button_long_state = false; Код void loop() { //Считываем состояние кнопок управления upSwitchState = digitalReadA(upSwitchPin); downSwitchState = digitalReadA(downSwitchPin); cancelSwitchState = digitalReadA(cancelSwitchPin); okSwitchState = digitalReadA(okSwitchPin); //---------------------------------------------------------------------------------- Зачем мне это? Подпалил Pro Mini и теперь могу использовать из аналоговых только пин 20(А6) для аналоговых кнопок и пин 15(А1) для выхода на нагреватель. Буззер останется на пин 18(А4) Вентиляторы планирую использовать не прибегая к ресурсам arduino. Силовая в 2.0.5 на MOC3021 без ZCC и плата ZCC на PC814? Библиотеку CyberLib вы правили начиная с 2.0.6? - т.е. в 2.0.5 она девственна еще? Спасибо. P.S.: В принципе, меня вполне устроил бы термостат для НИ, вместо ПИД. Например, как mvm_ksaa реализовал: Для бюджетной станции не зазорно отрабатывать термопрофиль силами только ВИ, при достижении платой нужной температуры (а способ достижения её можно любой, не превышающий прирост температуры более 1*С/сек, применить)...
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Вторник, 29.05.2018, 23:48 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
snmar4enko | Дата: Пятница, 01.06.2018, 09:21 | Сообщение # 146 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Цитата Cinema ( ) Смотрел ваш 2.0.5 - уже 2.0.9 версия. В последующих версия интеграция библиотеки CyberLib еще сильнее и в двух последних индикатор переведен на I2C . Вентиляторы предварительно перевел на D0 и D1 (RX и TX). В плане правки библиотеки CyberLib - правил только пин звука (бузера). Так что можно смело переходить на более высокие версии.
В плане аналоговых кнопок - вполне все реально - писать скетч аналогового чтения - получаешь значения от 0 до 1023. Далее нормируешь по условию - к примеру от 900 до 1023 - не нажата ни одна кнопка, от 0 до 100 RIGHT, и т д. - перед тем как писать условия нужно померять значения аналогового чтения- резисторы могут быть разными и как то шкалу поделить приблизительно пополам между значениями кнопок.
Цитата Cinema ( ) плата ZCC на PC814? - у меня на трансформаторе от польской антенны - двумя диодами выпрямляю обе полуволны и через резистор 4.7ком на стабилитрон 4.7Вольт. Сигнал снимаю со стабилитрона на D3 вывод ардуины. Получается что еще питание 5 Вольт получаю с этого же трансформатора.
|
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Dmitrysh | Дата: Пятница, 01.06.2018, 09:57 | Сообщение # 147 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Цитата В плане аналоговых кнопок - вполне все реально - писать скетч аналогового чтения - получаешь значения от 0 до 1023. Далее нормируешь по условию Могу посоветовать вариант использования pcf8574. I2c вы все равно используете, а для аналоговых кнопок нужно подключать АЦП, соответственно существенно возрастет размер скетча и упадет быстродействие.
|
|
|
Пользователи поблагодарившие Dmitrysh за этот пост: |
|
|
Cinema | Дата: Пятница, 01.06.2018, 13:37 | Сообщение # 148 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| С I2C какраз проблема у меня на имеющейся плате Pro Mini 34pin. Не работают как SDA и SCL пины А4 и А5. Как аналоговые входы/выходы - работают, при этом светодиод подключенный к одному из этих пинов в blink работает. Однако если в blink назначить на А4, то светодиод также будет мигать и на А5,A0,A2,A3. Пин А7, как гласит даташит, может работать только на вход.
В итоге у меня остались: D3 и A1 = выходы на нагреватели, D4,D5,D6,D7,D8,D9 = для LCD1602, A4 = буззер, A6 = аналоговая клавиатура, D10,D11,D12,D13 = 2шт. MAX6675. Т.е. простые 4шт. кнопки некуда приткнуть, и шину I2C дисплей с I2C нельзя использовать.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Пятница, 01.06.2018, 13:39 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
snmar4enko | Дата: Суббота, 02.06.2018, 09:22 | Сообщение # 149 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Цитата Cinema ( ) С I2C как раз проблема у меня на имеющейся плате Pro Mini 34pin если выводы хоть как то работают то ардуина цела, проблема с I2C может быть проблемой с самой библиотекой 1602_I2C или тупо неправильный адрес устройства на шине. Пересканируй свой индикатор к примеру таким скетчем:
Код #include <Wire.h> String stringOne; void setup() { Wire.begin(); Serial.begin(9600); while (!Serial); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { String stringOne = String(address, HEX); Serial.print("0x"); Serial.print(stringOne); Serial.println(" "); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); } - в терминал напишет все что есть на шине.....
Про аналоговые кнопки - товарищ efimsu (архив есть в нашей шапке) уже крутил аналоговые кнопки: Код int read_LCD_buttons(){ // read the buttons adc_key_in = analogRead(0); // read the value from the sensor
// my buttons when read are centered at these valies: 0, 144, 329, 504, 741 if (adc_key_in > 1000) return btnNONE; if (adc_key_in < 50) return btnRIGHT; if (adc_key_in < 250) return btnUP; if (adc_key_in < 450) return btnDOWN; if (adc_key_in < 650) return btnLEFT; if (adc_key_in < 850) return btnSELECT; return btnNONE; // when all others fail, return this. }
- как видим измерил значения аналогового входа при нажатии кнопок и тупо проусловил ...... Кстати в аналоговых кнопках как такового дребезга нет ..... так что можно упростить код (антидребез убрать)
|
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Cinema | Дата: Понедельник, 04.06.2018, 00:02 | Сообщение # 150 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Библиотеки менял - пофигу ... Как и стандартный I2C scanner,ваш скетч выводит в монитор только "Scanning...".При этом адрес дисплея мне известен и на другой плате (Mega2560) с дисплеем проблем нет. У меня в Pro Mini этой A4,А5,A7,A0,A2,A3 стали работать, словно их все соединили параллельно, ипри этом у A4,A5 вырезали функцию I2C,а A7 не научился работатьна OUTPUT - я это пытаюсьдонести своими постами . Только A1и A6 работают в штатномрежиме (A1 = ADC IN,OUT и A6 = ADC IN). Пытаюсь разобраться с аналоговыми кнопками...
Добавлено (04.06.2018, 00:02) --------------------------------------------- В общем, пересобрал я 2.0.5 под аналоговые кнопки. Всё нормально компилируется в IDE 1.6.3. Пины переназначил свои 15(A1) - верх, 20(A6) - резистивная аналоговая клава, Буззер на прежнем месте 18(A4), кулеры закомментировал.
Теперь о грустном: Какой-бы пин я не назначал для верха, при подаче питания, после заставки, начинает моргать, примерно, 2Гц светодиод, подключенный вместо силовой верха. При подаче питания, всегда сразу после заставки сначала на 1 секунду зажигается светодиод, включенный вместо силовой низа, затем так же делает светодиод, подключенный вместо силовой верха. А далее в IDLE уже моргает 2Гц светодиод, подключенный вместо силовой верха.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Понедельник, 04.06.2018, 00:02 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
|