Перейти к содержанию

Включение И Отключение При Нажатии


cargo29

Рекомендуемые сообщения

смысл устройства такой 3 выхода, 3 входа тини13. 1 кнопка это один светодиод, при нажатии она отключает светодиод, если еще раз нажать ее она включает светодиод. набросок кода пока для одного порта


#include <avr/io.h>
#include <avr/eeprom.h>
#include <avr/delay.h>
char k_1 = 1;
int main(void)
{
DDRB = 0b00000111;
//PORTB = 0b00000111;

while(1)
{

if ((PINB & _BV(PB4))!=0){
//PORTB = 0b00000011;
if (k_1==1)
{
k_1 = 0;
PORTB = 0b00000001;
while((PINB & _BV(PB4))!=0);
}
else
{
k_1 = 1;
PORTB = 0b00000000;
while((PINB & _BV(PB4))!=0);
}

}

}
}

Один раз нажимаешь срабатывает когда нажимаешь еще раз то уже не работает.

еще вопросик

(PINB & _BV(PB4))==0 что этот символ дает в данном коде?

Схема что бы было понятнее как подключено

638386363328638358386.jpg

Изменено пользователем cargo29
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

А как ты пишешь код если не знаешь как это делать? Этот символ обозначает взятие адреса. То есть ты считываешь, что находится по указанному адресу. В общем-схема полная лажа, код никудышный. Учи Си потом садись писать, а не наоборот. Должно быть как-то так.

bool trg_=true;

int main (void)

{

DDRB=0b11111000;

PORTB=0b00000111;

while(1)

{

if((PINB&(1<<PB0))==0)

{

trg_^=true;

if(trg_==true)PORTB&=~_BV(PB4);

else PORTB|=_BV(PB4);

while((PINB&(1<<PB0))==0);

};

};

};

- А совесть в курсе? - А совесть в доле! :-D

Эксперт — это человек, который совершил все возможные ошибки в некотором узком поле.

Все грамматические ошибки являются авторским стилем изложения материала.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Если так хочется сэкономить резисторы, то нужно включить внутреннюю подтяжку (pull-up) на управляющих входах, а кнопки на землю. А сейчас на входах непонятно что.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Схема "шлак". Зачем светодиоды подключать через транзистор? Достаточно одного резистора будет. Можно подключить светодиод анодом к минусу(будет меньшая нагрузка на МК).Если надо могу набросать кодик для Codevision(потом можно переделать под другую среду, главное понять смысл).

Минин Андрей. Обращайтесь за помощью.

Ссылка на комментарий
Поделиться на другие сайты

ааааааааааааааааааааааааааааааааа, светодиоды это для наглядности там будет другая нагрузка более мощная которая требует включение через транзисторы или даже реле. самое главное код, и должно на выход быть поры, 3 кнопки и каждая управляет своим портом, одну кнопку не получится.

Rhime мне интересно как ты учился? книжечки читал или тоже на форумах зависал? полюбому скажет прочитал много статей умных книг. Все учения идут от опыта, пробуешь пишешь ошибки находишь вот учение а не книжки зубрить со школы должен был знать

Ссылка на комментарий
Поделиться на другие сайты

анодом к минусу
Да неужели?

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

да совсем забыл, как кнопки лучше расположить на управление? прерывание на - не получится остальные так же сработают

при такой схеме включении будут срабатывать все кнопки http://forum.cxem.net/index.php?showtopic=124786&st=20

Ссылка на комментарий
Поделиться на другие сайты

Rhime мне интересно как ты учился? книжечки читал или тоже на форумах зависал? полюбому скажет прочитал много статей умных книг. Все учения идут от опыта, пробуешь пишешь ошибки находишь вот учение а не книжки зубрить со школы должен был знать

Вы из-за каждой неверно поставленной точки на форум обращаетесь, вместо того, чтобы мозгами пораскинуть или хотя бы одну книжку или статью на соответствующую тему прочитать. Поддерживаю Rhime. По фразе "полюбому скажет прочитал много статей умных книг" , делаю вывод, что для Вас это подвиг, и Вы других пытаетесь под себя равнять. Вы сами то подумайте, откуда ещё взять информацию, кроме как не из книги или статьи? Те кто Вам на вопросы отвечают, получили инфу именно таким образом по большей части.

*И что в книжечке то плохого? Она содержит сразу всю необходимую информацию. И слова против не скажет, если её мусолить постоянно. И скорость развития намного быстрее, чем по три часа на форуме ждать, пока скажут куда точку передвинуть.

**вот после такого "учения от опыта" получается соответствующий сорт кода.

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

Вопрос не по теме, кто нибудь заказывал детали с ebay? за какое время доходили?
http://forum.cxem.net/index.php?showtopic=119900

> Правила форума <

...из древних времен доходят до нас слухи о колдунах и волшебниках... - кто бы мог подумать, что так может начинаться дипломная работа по радиотехнике...

...это не дым от канифоли, нет... это души умерших транзисторов....

Первый закон Ома: никому не рассказывать про Ома!

Ну вот, а ты говорил ноль...

Ссылка на комментарий
Поделиться на другие сайты

Вот такой кодик набросал для одного светодиода. Рабочий 100%. Я бы взял мк с бОльшим кол-вом ножек,например тини2313,потому что тут придется настраивать каждый порт отдельно.

#include <tiny13.h>
#include <delay.h>
void main(void){
unsigned char i=1; // вводим переменную для счета
PORTB.0=0x00;//Пин в 0
DDRB.0=0xFF; // Пин на выход
DDRB.3=0x00;// Пин на ввод
PORTB.3 = 0xFF ;//Пин в 1

while (1) {
if (PINB.3==0){
i=i+1;
delay_ms(50);//антидребезг
}
switch(i) {
case 1: {
PORTB.0=0;
break;
}
case 2:{
PORTB.0=1;
break;
}	
default:
i=1;

}
}
	 }

По первому нажатию кнопки светодиод горит, по второму-тухнет.(По этому коду: кнопка на PORTB.3, светодиод на PORTB.0)

Изменено пользователем Radiotehnika S-90

Минин Андрей. Обращайтесь за помощью.

Ссылка на комментарий
Поделиться на другие сайты

Radiotehnika S-90 спасибо за код, уточню немного кнопка как работает, на прерывание на минус? на счет мк с большим количеством портов думал, дело в том что у меня их трудно достать заказ идет тини13 и то с китая (не знаю дойдет или нет) суть будет такая, мне нужно будет отключать и включать парные каналы УФМЗ но раз он мощный поэтому буду делать через транзистор. (в виде ключа, в обрыв питания). tcoder я с тобой не соглашусь, у меня книги по делфи валяются (библия делфи и много других) в них все одно и тоже написано, только объясняют по разному, ничего нового в другой книге я и не узнал то, что уже знал со статей в интернете, а их как известно, очень много по делфи, так же и учил остальные языки программирования, форумы статьи, сидел и разбирался в коде а не книжки читал потому, что знал что в книгах для общего пользования написано, что есть в статьях, которых мало по написанию кода на мк

я надеюсь не такая схема включения кнопки (в конце статьи )http://forum.cxem.net/index.php?showtopic=124786&st=20

Ссылка на комментарий
Поделиться на другие сайты

А зачем покупать или скачивать кучу книг про одно и то же? :) Вы купите/скачайте одну книгу непосредственно по той среде, в которой сейчас работаете. Чтобы не было вопросов типа "а что этот символ обозначает" :) И причём тут делфи вообще, Вы сейчас не на делфи же пишете? "дЭлфийские" знания тут не помогут... А поскольку ещё имеются проблемы с алгоритмизацией, то вероятно и чтение сишной книги не сразу поможет :yes:

Ссылка на комментарий
Поделиться на другие сайты

tcoder я скачивал и покупал, даже стоял пролистывал быстренько в книжном, пишут одно и тоже. Вот даже взять делфи там нету описания компонентов всех, все описание базовое. я и так читаю статейки и сижу на форумах, что бы быстрее осмыслить. и то что я не знаю или не понимаю код я считаю нормально все через это проходили

Radiotehnika S-90 вот в этом и проблема с такой схемой включения я писал в другой теме, а тут будет 3 кнопки и нужно сделать их независимые друг от друга. :unsure: а при такой схеме одну нажмешь все сработают, я уже чувствую что легче взять мк с 3 разными портами тогда можно осуществить, все равно спасибо за помощь и код. Не по теме, реально ли осуществить регулятор ВЧ НЧ ? хватит ли скорости обработки ?

Ссылка на комментарий
Поделиться на другие сайты

cargo29, а в чем проблема? Ну горят одновременно, а уловить суть и чуток подправить код трудно? Подключайте кнопки как у меня на схеме. Вот подправил код. дальше думаю понятно будет. Просто вводим еще одну переменную и дальше все аналогично. Хотел сказать еще, что у вас вывод ресет задействовать не получится, придется выставлять дополнительный фьюз.

#include <tiny13.h>
#include <delay.h>
void main(void){
unsigned char i=1;
unsigned char c=1; // вводим переменную для счета
PORTB.0=0x00;//Пин в 0
DDRB.0=0xFF; // Пин на выход
DDRB.3=0x00;// Пин на ввод
PORTB.3 = 0xFF ;//Пин в 1
PORTB.1=0x00;//Пин в 0
DDRB.1=0xFF; // Пин на выход
DDRB.4=0x00;// Пин на ввод
PORTB.4 = 0xFF ;//Пин в 1


while (1) {
if (PINB.3==0){
i=i+1;
delay_ms(50);//антидребезг
}
switch(i) {
case 1: {
PORTB.0=0;
break;
}
case 2:{
PORTB.0=1;
break;
}
default:
i=1;

}
if (PINB.4==0){
c=c+1;
delay_ms(50);//антидребезг
}
switch© {
case 1: {
PORTB.1=0;
break;
}
case 2:{
PORTB.1=1;
break;
}
default:
c=1;

}
}

}

В протеусе все работает замечательно.

Минин Андрей. Обращайтесь за помощью.

Ссылка на комментарий
Поделиться на другие сайты

Подскажи еще в твоем коде

PORTB.0=0x00;//Пин в 0. вход
DDRB.0=0xFF; // Пин на выход. иницилиализация порта на выход
DDRB.3=0x00;// Пин на ввод. иницилиализация порта на вход
PORTB.3 = 0xFF ;//Пин в 1 . выход

почему в таком порядке или без разницы это?

Ссылка на комментарий
Поделиться на другие сайты

cargo29,

ты бы хоть одну мигалку с нуля сам написал

Ты ведь по и-нету какие-то обрывки собираешь и у тебя всё в голове перемешалось.

в репу каждому, кто отсылает в гугл !!

Ссылка на комментарий
Поделиться на другие сайты

Radiotehnika S-90 Пробовал вставить код ошибки почти на все. #include <tiny13.h> этот файл не может найти и на все DDRB.3 типа таких где используется через точку указания вывода походит на язык С++

Ссылка на комментарий
Поделиться на другие сайты

cargo29, Вы точно обрывки собираете, как 8244 сказал.

Никаким C++ тут и не пахнет. Radiotehnika S-90 дал Вам код для CvAVR, там всё верно. У Вас AvrStudio (как я понял). Там синтаксис языка немного отличается.

Вам надо просто убрать этот include , а взамен

DDRB.3=0x00;// Пин на ввод

написать DDRB &= 0xF7;

Откуда взялось эта команда и волшебное число 0xF7, я не скажу из принципа. Сами подумайте. Иначе никогда ничего не поймёте.

Ссылка на комментарий
Поделиться на другие сайты

Если надо могу набросать кодик для Codevision(потом можно переделать под другую среду, главное понять смысл).

cargo29, сообщения вообще не читаем?Вас интересует только огрызок кода, а то что люди пишут нет?

Каждая среда разработки имеет свой синтаксис написания кода.

Минин Андрей. Обращайтесь за помощью.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
×
×
  • Создать...