Модификация мигалки на МК
|
|
staticvoid | Дата: Суббота, 2019-Июн-15, 20:55 | Сообщение # 1 |
заглянувший
Группа: Пользователи
Сообщений: 4
Статус: Offline
| Здравствуйте! Делаю свой первый проект Светодиодная мигалка на микроконтроллере ATmega8. Проект компилировал в Atmel Studio. Вроде все заработало как нужно, но хочу теперь добавить светодиоды - 4 штуки и повесить их к примеру на порт B. Не совсем понимаю что нужно написать в код, как я понимаю сначала нудно настроить порт B на выход : Код: DDRB= 0xff; /* все выводы порта D сконфигурировать как выходы */
А вот как быть дальше не совсем понятно(( Подскажите пожалуйста. Я могу просто скопировать часто кода где есть порт D и заменить на B. К примеру рядом с DDRD &= ~(1<<j); дописать DDRB &= ~(1<<j); и так далее?
|
|
| |
US5EVD | Дата: Суббота, 2019-Июн-15, 22:16 | Сообщение # 2 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Цитата staticvoid ( ) я понимаю сначала нудно настроить
а что должны делать светодиоды?
да, и какая цель всего этого процесса??Добавлено (2020-Мар-25, 09:35) --------------------------------------------- для начала , назначить (выбрать ) шесть входов (как в приведенном выше примере). и один выход.
затем в цикле опрашивать эти входы на предмет срабатывания и выдавать соотв уровень на выход.
не ясно из задания, кто будет (какое событие) выход в исходное состояние переводить будет. Добавлено (2020-Мар-25, 09:37) --------------------------------------------- не понял .. куда все пропало...
|
|
| |
US5EVD | Дата: Среда, 2020-Мар-25, 10:58 | Сообщение # 3 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| рекомендую найти в сети блокнот программиста, брошюрка такая. И пользоваться. Там необходимый минимум собран.
|
|
| |
istina03313 | Дата: Среда, 2020-Мар-25, 12:21 | Сообщение # 4 |
любопытный
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Немного завидую (белой завистью) ,когда люди хорощо разбираются и в программировании и в ВЧ схемотехнике,и в силовой ,и в самой основе аналоговой (начиная с режимов работы транзисторов и ОУ), это реальные инженера-электронщики по призванию. У меня же в электронике всегда всё внимание сосредотачивается на чём то одном конкретном (остальное забывается и в голову не идёт) ,всё внимание на то в чём наибольший интерес,вот программирование вообще в голову не идёт . С такими вещами у меня есть такой момент,когда очень нужно,могу прочитать,понять и очень быстро забыть (ну вот не стало оно моим основным хобби). Но в этом и плюс,нефиг рассеиваться лишний раз, вот Швондер по своему зову сердца делает аналоговую,ВЧ часть аппаратуры, а US5EVD спец по программированию МК, так и должно быть. Результат- маленький сайт/форум,много опробованных вариантов воплощённых в железе и реально работающих,и наверное много повторивших и работающих в эфире на этих наработках!
|
|
| |
US5EVD | Дата: Среда, 2020-Мар-25, 12:35 | Сообщение # 5 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Цитата istina03313 ( ) US5EVD спец по программированию МК Не преувеличивайте.
Просто включайтесь в процесс. Если интересно.
Начать с самого простого и понять КАК ЭТО РАБОТАЕТ.
|
|
| |
US5EVD | Дата: Четверг, 2020-Мар-26, 08:33 | Сообщение # 6 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Цитата залетный ( ) но к приёмнику не пойдёт на теа6200 наверное... все там подойдет. Работают приемники.
|
|
| |
залетный | Дата: Среда, 2020-Май-13, 00:11 | Сообщение # 7 |
Группа: Гости
| Голова пухнет при изучении, но отступать некуда уже. Самое простое сделал , один вход на герконе и один выход на рэле( с ноля программу) Рэле модуль спаял по китайскому аналогу ( не инверсный) Столкнулся с чем новичек - АЦП у контроллера один - следовательно чтобы контроллер понял какой геркон сработал из 4х, нужно делать резистивный делитель на аналоговом входе любом. Если входами назначить цифровые пины , то скейтч уже не по силам. Два канала можно сделать на if и else , но а если три рэле надо управлять, непонятно как писать. Дисплей пока подключаю через i2c , чтобы больше оставить свободных пинов. Кстати через этот интерфейс можно много подключить тем самым разгрузить много пинов на меге но бутерброд будет толстый. Пока два пути - учить и понять по примерам. Или изучать по буковке. В примерах массивы , сложновато чтобы понять...
|
|
| |
залетный | Дата: Среда, 2020-Май-13, 07:35 | Сообщение # 8 |
Группа: Гости
| Все получится! Главное- Начать.
|
|
| |
Marshal20 | Дата: Понедельник, 2021-Апр-26, 21:09 | Сообщение # 9 |
заглянувший
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Почему "пока" подключаете дисплей по i2c. Как по мне для таких проектов этого достаточно с головой. Что планируете на потом ? Вместо i2c?
|
|
| |
залетный | Дата: Пятница, 2021-Сен-10, 16:59 | Сообщение # 10 |
Группа: Гости
| Александр , добрый день. Подскажите пожалуйста, часть этого скейтчаподойдет для КСВ -мощеметра, алгоритм вроде понятен. Необходимость возникла собрать такой девайс. Может чем его дополнить надо или есть более продвинутые решения?Добавлено (2021-Сен-10, 16:02) --------------------------------------------- КСВ метр на Ардуино Аватар пользователя -=dp=- Автор Re: КСВ метр на Ардуино Сообщение -=dp=- » 22 июн 2 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void setup() { Serial.begin(9600); // инициируем СОМ порт lcd.init() }
void loop() { int U1=0;// U прямое int U2=0;// U обратное int U12=0;// Сумма U float U21=0;// Разность U float KSV=0;// Значение отношения (КСВ) int Ur1 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur2 = analogRead(A1); // считываем значение U с аналогового входа 1 delay(50); // задержка 50 мс int Ur3 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur4 = analogRead(A1); // считываем значение U с аналогового входа 1 delay(50); // задержка 50 мс int Ur5 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur6 = analogRead(A1); // считываем значение U с аналогового входа 1 U1=(Ur1+Ur3+Ur5)/3; // присваиваем значение переменной U2=(Ur2+Ur4+Ur6)/3;// присваиваем значение переменной U12=U1+U2; // вычисляем сумму U21=U1-U2; // вычисляем разность KSV=U12/U21;// вычисляем отношение lcd.setCursor(0, 0); // Устанавливаем курсор на первую строку и нулевой символ. lcd.print("PRA "); lcd.print(U1); // U прямое lcd.print(" OBR "); lcd.print(U2);// U обратное lcd.print(" "); lcd.setCursor(0, 1); lcd.print("KSV "); lcd.print(KSV);// Значение отношения (КСВ) lcd.print(" "); delay(500); // задержка 500 мс }
|
|
| |
US5EVD | Дата: Понедельник, 2021-Сен-13, 07:43 | Сообщение # 11 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Немного полправил
//КСВ метр на Ардуино //Аватар пользователя //-=dp=- //Автор //Re: КСВ метр на Ардуино //Сообщение -=dp=- » 22 июн 2 #include #include LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
int U1=0;// U прямое int U2=0;// U обратное int U12=0;// Сумма U float U21=0;// Разность U float KSV=0;// Значение отношения (КСВ)
void setup() { //Serial.begin(9600); // инициируем СОМ порт lcd.init() Это для отладки
}
void loop() {
int Ur1 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur2 = analogRead(A1); // считываем значение U с аналогового входа 1 //delay(50); // задержка 50 мс int Ur3 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur4 = analogRead(A1); // считываем значение U с аналогового входа 1 //delay(50); // задержка 50 мс int Ur5 = analogRead(A0); // считываем значение U с аналогового входа 0 int Ur6 = analogRead(A1); // считываем значение U с аналогового входа 1
U1=(Ur1+Ur3+Ur5)/3; // присваиваем значение переменной U2=(Ur2+Ur4+Ur6)/3;// присваиваем значение переменной U12=U1+U2; // вычисляем сумму U21=U1-U2; // вычисляем разность KSV=U12/U21;// вычисляем отношение lcd.setCursor(0, 0); // Устанавливаем курсор на первую строку и нулевой символ. lcd.print("PRA "); lcd.print(U1); // U прямое lcd.print(" OBR "); lcd.print(U2);// U обратное lcd.print(" "); lcd.setCursor(0, 1); lcd.print("KSV "); lcd.print(KSV);// Значение отношения (КСВ) lcd.print(" "); delay(500); // задержка 500 мс }
|
|
| |
залетный | Дата: Понедельник, 2021-Сен-13, 15:25 | Сообщение # 12 |
Группа: Гости
| Спасибо большое. Я заказал пару дисплеев 4 строчных для экспериментов. Добавлено (2021-Сен-14, 08:53) --------------------------------------------- Александр , можно ещё спросить, градуировку проводить прибора в этом скейтче насколько я понял ,делителем на 3. Тоесть подбирать коэффициент деления так чтобы на экране я увидел цифры своей мощности. Там и диоды компенсируются сразу. Планирую такой прибор использовать до 1 кВт , датчик будет тандэм. Добавлено (2021-Сен-14, 08:57) --------------------------------------------- Точность прибора не сильно важна. Там к примеру 950 ватт а показывает 900 или 880. В таких примерно пределах. Либо померять может напряжение с датчика и вычислить делитель в скейтче?
|
|
| |
US5EVD | Дата: Вторник, 2021-Сен-14, 15:34 | Сообщение # 13 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Цитата залетный ( ) Александр , можно ещё спросить, градуировку проводить прибора в этом скейтче насколько я понял ,делителем на 3. не понял вопрос
|
|
| |
залетный | Дата: Вторник, 2021-Сен-14, 18:41 | Сообщение # 14 |
Группа: Гости
| Ну я подаю допустим 200 ватт на датчик КСВ. Предположим с датчика выходит 2-3 вольта прямая и 0.2 вольта обратная (величины для примера) Контроллер считает отношение между прямой и обратной ,выводит результат в виде числа (КСВ). А если мне надо видеть ваты прямой и обратной волны? Считается в зависимости от напряжения делитель в скейтче. Или лучше измеритель мощности добавить как отдельную переменную?
|
|
| |
US5EVD | Дата: Среда, 2021-Сен-15, 07:37 | Сообщение # 15 |
мастер
Группа: Модераторы
Сообщений: 1177
Статус: Offline
| Цитата залетный ( ) у я подаю допустим 200 ватт на датчик КСВ. Откуда известно? Нужно измерять. КАК? -Подключить нагрузку 50 Ом на выход и измерить на ней напряжение. вычислить мощность. Измерить напряжение на датчике. Вычислить коэф. пропорциональности. и им пользоваться в дальнейшем.
|
|
| |