Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2017, 19:03   #71
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от scccorp Посмотреть сообщение
Button bt -это у меня библиотека была подключена я уже удалил эту строчку не получилось с ней.
а зачем больше проверок нам надо чтоб на определённых был ноль мы их и проверяем. или нужно больше проверок?

остальные ножки у нас заняты другими диодами которые горят при другой комбинации


код компилируется но диод не реагирует
про те 6 забыли они работают.

это уже 2 часть у меня( я так поделил (может и не очень верно в силу моего опыта)) тобишь у нас получается что PD0-PD5 уже заняты осталось PD6 PD7 запрогать. если в первой части біло все достаточно просто, то во второй появился нюанс по нажатию они должні гореть по повторного нажатия
Цитата:
Сообщение от ura_111 Посмотреть сообщение
Почему "ещё два"?
Уже рабочий один+2 = 3шт.
А ты писал (6-ть светодиодов):

Вложение 89945


___________________________________ ________________

Это делается простым копированием и небольшой правкой.

1) копируешь (и добавь в название "6" - раз он 6-й светодиод зажигает)
Код:
void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
аналогично для остальных (5-ти или 2-х???)

Только надо менять "0b01000000" (переставлять "1-цу").


Вложение 89946


2) копируешь

Вложение 89947


Ну всё.
Только ты делай по-чуть-чуть: Сделал (ещё один пин) компилируй, запускай, проверяй. Потом еще один пин и опять проверяй.
про те 6 забыли они работают.

это уже 2 часть у меня( я так поделил (может и не очень верно в силу моего опыта)) тобишь у нас получается что PD0-PD5 уже заняты осталось PD6 PD7 запрогать. если в первой части было все достаточно просто, то во второй появился нюанс по нажатию они должны гореть по повторного нажатия

код который у тебя в пункте 2 почему-то работает не корректно у меня диоды не реагируют
Код:
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b10000000;
	PORTB=0b00011111;
   while (1)
    
       {		
		  _delay_ms(100);   
		   if(PINB==0b00000100)
		   {
			 PORTD=0b00000001;	
			 continue;
		   }
		   else
		   {
		   PORTD=0x00;
		   }
		   if (PINB==0b00001100)
		   {
			   PORTD=0b00000010;
			   continue;
		   }
		    if(PINB==0b00000010)
		    {
			    PORTD=0b00000100;
			    continue;
		    }
		    if (PINB==0b00000110)
		    {
			    PORTD=0b00001000;
			    continue;
		    }
			 if(PINB==0b00001001)
			 {
				 PORTD=0b00010000;
				 continue;
			 }
			 if (PINB==0b00001010)
			 {
				 PORTD=0b00100000;
				 continue;
			 }
			 
			 PORTB = 0b00000000;
	
			  }
	   }
вот код 1 части. он работает нормально

Последний раз редактировалось scccorp; 17.10.2017 в 19:07.
scccorp вне форума Ответить с цитированием
Старый 17.10.2017, 19:09   #72
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А твой код работает у тебя?

Может ты, что-то пне поправил.
ura_111 вне форума Ответить с цитированием
Старый 17.10.2017, 19:14   #73
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А что такое: "пункте 2"?
ura_111 вне форума Ответить с цитированием
Старый 17.10.2017, 20:25   #74
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
А что такое: "пункте 2"?
в твоём предыдущим комменте ты перечисление делал
scccorp вне форума Ответить с цитированием
Старый 17.10.2017, 20:28   #75
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

вот этот
Изображения
Тип файла: jpg 1.jpg (64.4 Кб, 71 просмотров)
scccorp вне форума Ответить с цитированием
Старый 17.10.2017, 20:55   #76
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде забацал:

Код:
#include <avr/io.h>
#include <util/delay.h>


char flag = 0;
char count = 0;

void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void switchLed7 ()
{
	PORTD ^=0b10000000;// инвертируем значение на ножке
}

void checkButt()
{	
	
	if ((PINB==0b00011101)||(PINB==0b00001101)) //защита
	{
			if (!(PINB==0b00011101)) //проверяем на лог.0
			{
			   if (flag==0) //  проверяем переменную на 0
		       {
			if (count == 30)// далее защита от дебезга проверяем на колво запросов
			{
				flag=1;
				count =0;
				return;
			}
			count++;// +1 к перевенной
		   }
		  else count = 0;// если надатия кнопки небыло то обнулем счётчик
	       }
	       else// если есть дребезг переходим сюда
	       {
		    if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
		   {
			if (count==30) // сново защита от дребезга
			{
				flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
				count = 0;// сбрасываем счётчик
				switchLed6();// выполняем действие
			}
			count++;
		    }
		    else count = 0;

	       }
	}
		
	
		if ((PINB==0b00011111)||(PINB==0b00001111)) //защита
		{
		
	
	        if (!(PINB==0b00011111)) //проверяем на лог.0
	     {
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed7();// выполняем действие
				}
				count++;
			}
			else count = 0;		
		}
		}
}

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b00000000;
	PORTB=0b00011111;
	while (1)	
	{		
		checkButt();		
	}
}
Протестируй хорошенько.
Зажигание 7-го светодиода по условию все 4-ри 1-цы.
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 11:16   #77
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Вроде забацал:

Код:
#include <avr/io.h>
#include <util/delay.h>


char flag = 0;
char count = 0;

void switchLed6 ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void switchLed7 ()
{
	PORTD ^=0b10000000;// инвертируем значение на ножке
}

void checkButt()
{	
	
	if ((PINB==0b00011101)||(PINB==0b00001101)) //защита
	{
			if (!(PINB==0b00011101)) //проверяем на лог.0
			{
			   if (flag==0) //  проверяем переменную на 0
		       {
			if (count == 30)// далее защита от дебезга проверяем на колво запросов
			{
				flag=1;
				count =0;
				return;
			}
			count++;// +1 к перевенной
		   }
		  else count = 0;// если надатия кнопки небыло то обнулем счётчик
	       }
	       else// если есть дребезг переходим сюда
	       {
		    if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
		   {
			if (count==30) // сново защита от дребезга
			{
				flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
				count = 0;// сбрасываем счётчик
				switchLed6();// выполняем действие
			}
			count++;
		    }
		    else count = 0;

	       }
	}
		
	
		if ((PINB==0b00011111)||(PINB==0b00001111)) //защита
		{
		
	
	        if (!(PINB==0b00011111)) //проверяем на лог.0
	     {
			if (flag==0) //  проверяем переменную на 0
			{
				if (count == 30)// далее защита от дебезга проверяем на колво запросов
				{
					flag=1;
					count =0;
					return;
				}
				count++;// +1 к перевенной
			}
			else count = 0;// если надатия кнопки небыло то обнулем счётчик
		}
		else// если есть дребезг переходим сюда
		{
			if (flag==1) // опрашиваем на нажатие если было тогда идём дальше
			{
				if (count==30) // сново защита от дребезга
				{
					flag =0;// попадаем сюда значит защиту прошли и сбрасываем переменную в 0
					count = 0;// сбрасываем счётчик
					switchLed7();// выполняем действие
				}
				count++;
			}
			else count = 0;		
		}
		}
}

int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b00000000;
	PORTB=0b00011111;
	while (1)	
	{		
		checkButt();		
	}
}
Протестируй хорошенько.
Зажигание 7-го светодиода по условию все 4-ри 1-цы.
протестировал все равно не хочет реагировать(
должен гореть 6 порт но он не реагирует(
Изображения
Тип файла: jpg Безымянный.jpg (100.2 Кб, 144 просмотров)
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 11:24   #78
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Комбинация не та.
0-ль не с той стороны.
ura_111 вне форума Ответить с цитированием
Старый 18.10.2017, 11:25   #79
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Комбинация не та.
0-ль не с той стороны.
наоборот тот-же результат

и с единицами то же самое не реагирует
scccorp вне форума Ответить с цитированием
Старый 18.10.2017, 11:38   #80
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

https://www.youtube.com/watch?v=fBbZ...ature=youtu.be
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Порты Novichek_1996 Помощь студентам 3 22.04.2014 19:55
Не могу открыть порты. aszaszasz Помощь студентам 0 26.05.2010 14:27
Порты Троян Помощь студентам 1 12.02.2010 14:55
порты Rabitka Безопасность, Шифрование 0 16.10.2009 16:09
COM Порты Skazi21101 Помощь студентам 0 02.11.2008 12:24