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

Программирование на С (кнопки)


tifaso

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

НУ ЕСЛИ ПРИБАМБАСОВ ДАФИГА ТО ДА.

а КАК НАСТРОЙКУ каналов будете производить?

а переключение по диапазонам 3 диапазона на каждый канал 3 у 8 сколько будет портов.

4 часа назад, ARV сказал:

PORTC = 1;

Что это за аморфная запись номер пина где? и пишется это в майне где идут настройки портов..

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

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

24 минуты назад, Ivan Rusev сказал:

Что это за аморфная запись номер пина где?

Поскольку мои рекомендации почитать книги по Си вы все равно проигнорируете, я в третий раз вам пишу: соберите мой исходник и просимулируйте в протеусе, вы же умеете это! А там, может, и разберетесь с тем, что это за аморфная запись без номера пина и почему она там, где настройка... 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

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

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

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

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

почему вы предлагаете свои исходники?Предложите  тому кто заинтерисован в ваших исходниках.Мне от них не холодно не жарко.Ваш код не читаем.Вернее он четаем только вами.Вы тому молодому человеку объясните.После того как я выкинул рабочий код .Вы ему ничего толкового не предложили.У меня нет базового образования  по программированию.Однако  я ему помог.Это камень не только к вам лично а и к другим спецам.С собой всё не заберёшь.

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

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

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

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

1 час назад, Ivan Rusev сказал:

почему вы предлагаете свои исходники?

Потому что хочу помочь вам научиться программировать. 

1 час назад, Ivan Rusev сказал:

Ваш код не читаем.Вернее он четаем только вами

Умение читать - это ваш навык, совершенствуйте его. Научитесь читать, научитесь и писать тоже. 

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

2067711316_.thumb.png.0a2f3996140df2009499ff3b8fcdcae9.png

Но у меня есть пару вопросиков по этой схеме просто хочу уточнить, а то не совсем понятно где входы и где выходы и как подаётся питание. Я так понимаю мне нужна только часть выделенную оранжевым. В точках выделенным голубым я так понимаю нужно дать питание в моём случае это 5 вольт. Сверху выделил красными квадратами каналы я так понимаю это входы сигнала, а при переходе на другую часть схемы я выделил зелёным это я так понимаю выходы сигналов. Так вот я хотел уточнить всё ли я правильно понимаю в этой схеме. Если что поправьте.

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

48 minutes ago, tifaso said:

нужно дать питание

Питание подаётся через разъём Х4 в правом верхнем углу. А в синих квадратах - это напряжения, которые образуются при нормальной работе, подписаны для проверки схемы. 

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

@Yurkin2015 Это то понятно, но там два разных напряжения указаны, а у меня есть только 5 вольт.

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

58 минут назад, tifaso сказал:

быстрее и проще будет собрать вот этот вариант

Быстрее и проще будет купить этот вариант. Стоить будет копейки. У дедов на рынке поспрашивайте.

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

Смешные итоги. 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

Да, довольно редко кто-то, после многостраничного обсуждения на форуме, что-то реально делает в результате. В основном народ пугается сложностей в понимании предложенного, и всё просто заканчивается ничем. 

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

1 час назад, tifaso сказал:

 но там два разных напряжения указаны, а у меня есть только 5 вольт.

Питание там только +12  вольт.

+30 - это питание задающих делителей напряжения, которые выдают напряжение на варикапы селекторов каналов.

Но повторять это ни в коем случае не нужно, так можно и до палки копалки скатиться вмиг.

Все  что  нужно - это купить какой нибудь attiny2313, светодиодов, резисторов, пару тактовых кнопок и макетку такую модную, тыкательную. Ну и программатор  usbasp. А, разьем еще этот, забыл артикул, шестиштырьковый.

После того как поморгаете светодиодом, все станет ясно и понятно. Моргающий светодиод очень сильно прокачивает скил программирования.

 

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

7 часов назад, ARV сказал:

Смешные итоги. 

Это вы ещё всю предысторию вопроса не знаете. :D

"Я не знаю какой там коэффициент, я просто паять умею. "

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

Возмите допилите мой проект он топорный но рабочий.Поменяйте контроллер у меня atmega8a. Тут простого решения нет. Если связывать всё с контроллером.На каждый канал з фиксиролвных переключателя. 3 у 8 24 и столько же оптронов так как там разное напряжение.Нужно подумать .А может с одной кнопкой или двумя + и -

13 часов назад, tifaso сказал:

@Yurkin2015 Это то понятно, но там два разных напряжения указаны, а у меня есть только 5 вольт.

 

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

tifaso  есть ещё один гибридный вариант.Реальный точька на схеме питания 30 вольт общая  20 и можно сделать гибридную схему  и на все остальные точки подцепить порт  C с контроллера осталось АПЧГ подумать.

Я единственное не понял разъём 30 что там делает?

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

С контроллера с  выходных портов прийдётся  оптроны РС817 поставить на точках привязать оптронную  диодную часть  к портам С  а выходную часть коллектора  посадить на т 20.А эмитерную часть т.2-8.

Можно сделать если захотеть.Вот этот вариант реальный.Гибридная схема .Часть контроллер работает.А другая часть прийдётся оставить цяцьки некоторые перемычки  резисторы  и тд

Есть ещё вариант на СВП 4-10

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

Не знаю, кому в наше время может понадобиться городить свой вариант СВП, но если надо, то можно сделать, как я и говорил, чуть ли не на attiny25 : на ОУ сделать усилитель напряжения с максимумом 30 или сколько там надо вольт, на вход этого усилителя подавать сигнал с R-2R ЦАП на 595-ых регистрах,  а на 597-ых регистрах можно сделать 100500 кнопок. Схема будет не сложной, хотя и объемной по числу корпусов. Но стоимость будет копеечная.

Ну, конечно, можно и на МК с большим количеством ног и качественным ЦАПом... 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
	DDRB = 0b00000000;
	DDRD = 0b11111111;
	DDRC = 0b1111111;
	PORTB = 0b00011111;
	PORTD = 0b00000000;
	PORTC = 0b0000000;
	volatile unsigned char BTNS_MASK=((1<<1)|(1<<2)|(1<<3)|(1<<4));
	
    while(1)
    {
	  if (~PINB & (1<<0))
	     {
		   while(~PINB & (1<<0));
		   if (PINC)
		      {
			    PORTC &= ~(1<<0);
				//_delay_ms(1);
		      }
		   else
		      {
			    PORTC |= (1<<0);
		      }
	     }	 
if ((PINB & BTNS_MASK) != ((1<<1)|(1<<2)|(1<<3)|(1<<4)))
  {
	_delay_ms(1);
	if ((PINB & BTNS_MASK) != ((1<<1)|(1<<2)|(1<<3)|(1<<4))) 
	  {
		PORTC &= ~((1<<1)|(1<<2)|(1<<3)|(1<<4));
		
			  if (~PINB & (1<<1))
			    {
				  while(~PINB & (1<<1));
				  if (PINC)
				    {
                      PORTC &= ~(1<<1);
				    }
			      else
				    {
				      PORTC |= (1<<1);
				      PORTC &= ~((1<<2)|(1<<3)|(1<<4));  				  
				      PORTB &= ~((1<<2)|(1<<3)|(1<<4));
				    } 
				}

			  if (~PINB & (1<<2))
			    {
				   while(~PINB & (1<<2));
				   if (PINC)
				    {
                      PORTC &= ~(1<<2);
				    }
			       else
				    {
				      PORTС |= (1<<2);
				      PORTС &= ~((1<<1)|(1<<3)|(1<<4));
				      PORTB &= ~((1<<1)|(1<<3)|(1<<4));
				    }
				}

			  if (~PINB & (1<<3))
			    {
				   while(~PINB & (1<<2));
				   if (PINC)
				    {
                      PORTC &= ~(1<<3);
				    }
			       else
				    {
				      PORTС |= (1<<3);
				      PORTС &= ~((1<<1)|(1<<2)|(1<<4));				  
				      PORTB &= ~((1<<1)|(1<<2)|(1<<4));
				    }
				}
			   
			  if (~PINB & (1<<4))
			    {
				  while(~PINB & (1<<2));
				  if (PINC)
				    {
                      PORTC &= ~(1<<4);
				    }
			      else
				    {
				      PORTС |= (1<<4);
				      PORTС &= ~((1<<1)|(1<<2)|(1<<3));	  
				      PORTB &= ~((1<<1)|(1<<2)|(1<<3));
				    }
				}
			}
	    }
    }
}

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

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

12 минут назад, tifaso сказал:

volatile unsigned char BTNS_MASK=((1<<1)|(1<<2)|(1<<3)|(1<<4));

перед знаком равно точно ничего не должно быть больше?

И для этого:

20 минут назад, tifaso сказал:

((1<<1)|(1<<2)|(1<<3)|(1<<4))

дефайны верно прописаны?

Улыбнись! Завтра будет ещё хуже...

@Borodach - мудератор.

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

@DedLogoped Да я так понял что нет. Потому как там просто сказано было на словах  присвоить BTNS_MASK биты кнопок переключателя и приведён код условия для блока кнопок.

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

35 минут назад, tifaso сказал:

Короче нашел я в сети один вариант

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

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

@ARV Ваш код не работает. Да и не понятен для восприятия. Здесь же всё просто и понятно, но нужна небольшая поправочка чтобы заработало, но без помощи я не справлюсь.

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

1 час назад, tifaso сказал:

Ваш код не работает

Ну... виноват. Косячок допустил. Но вот так 100% будет работать:

#include <avr/io.h>
#include <util/delay.h>

uint8_t get_button(void){
	uint8_t tmp = ~PIND;
	_delay_ms(10);
	if(tmp != (uint8_t)~PIND)
		return 0;
	else
		return tmp;
}

int main(void){
	DDRB = 0xFF; // порт светодиодов на выход
	PORTD = 0xFF; // подтяжки на входы порта кнопок, кнопки на землю
	
	uint8_t state = 1;
	uint8_t tmp;

	while(1){
		PORTB = state; // включаем светодиоды
		if(tmp = get_button()) state = tmp; // обновляем состояние, если нажата кнопка
	}
}

 

Светодиоды светятся, когда на порту высокий уровень, а кнопки замыкают порт на общий провод.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...