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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2017, 11:35   #61
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Мне не кажется хорошей идея изучать программирование по видео. Человек пассивно, как кино, воспринимает инфу, и она пролетает 'как пуля у виска', не успев стать воспринятой. Думаю, классический способ - почитал книгу (бумажную или электронную - не важно), написал коротенькую прогу по прочитанному материалу; ошибка - перечитал еще раз, еще раз поробовал и т.д. Не идет - спросил у форума, но не так: "вот вам моя портянка, ищите, где ошибка", а по конкретному пункту: "вот тут у меня флаг С не устанавливается" - "а и не должен, это же инкремент" etc. И никто не отменял главный принцип обучения: от простого к сложному, не переходить к следующему, не усвоив твердо предыдущего. А если :"вот вчера меня клюнула мысль заняться программированием, нужно написать БПФ, да до 45-й гармоники, да чтоб на Tiny8 " - так ничего и никогда не выйдет. Это мое мнение, и я с ним вполне согласен

Последний раз редактировалось digitalis; 14.10.2017 в 11:39.
digitalis вне форума Ответить с цитированием
Старый 14.10.2017, 11:49   #62
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Мне не кажется хорошей идея изучать программирование по видео.
А это, говорят, у каждого по-своему. Мне вот тоже кажется диким, а кто-то не может по книге, надо глазами смотреть..
Black Fregat вне форума Ответить с цитированием
Старый 17.10.2017, 13:43   #63
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Кстате, ещё больше материала по программированию вылазит и без сортировки:

Вложение 89863



Наверно большинство лекторов предпочитают делать один большой файл. чем делить его на части и запихивать в плейлисты... Но ты ищи и так и так.
смотри посмотрел я видео перепробовал уйму комбинаций и кодов но все равно не получается выбрал этот
Код:
#include <avr/io.h>
#include <avr/io.h>
#include <util/delay.h>
#include "buttons.h"

button bt;
char flag = 0;
char count = 0;

void switchLed ()
{
	PORTD ^=0b01000000;
}
void checkButt()
{
	if (!(PINB==0b00011101))
	{
		if (flag==0)
		{
			if (count == 30)
			{
				flag=1;
				count =0;
				return;
			}
			count++;
		} 
		else count = 0;
		} 
	else
	{
		if (flag==1)
		{
			if (count==30)
			{
				flag =0;
				count = 0;
				switchLed();
			}
			count++;
		}
		else count = 0;
	}
}



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;
			 
			 checkButt();
он вообще не реагирует((
вот теперь полный код

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

Все программы на Си начинаются с "main".
Где такое у тебя?
___________________________________ _______________________

Итак делаешь 1-ю задачу
"1) сделай программу, просто зажигающую 0-й бит."


https://www.youtube.com/watch?v=EkDvpXziBC0


и это посмотри (оба файла смотреть надо вместе, т.к. в 3-м уроке пишут программу, а в 4-м - результат демонстрируют):


https://www.youtube.com/watch?v=XsfU3HoahQM&t=1s


https://www.youtube.com/watch?v=h9ZFtAllKUA

p.s.1: сделай по обоим методам.
p.s.2: поиграйся с кодом. Сделай мигающий с частотой 1с; или много светодиодов зажги, которые зажигаются по очереди.....
p.s.3: запомни, что говорят в видеоролики - я тебя буду спрашивать по тексту программы. Т.е. "что означает то-то или то-то" или "что будет если изменить на это"....


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

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

Расскажи о своей программе.
Как она работает?
Что за чем и какие проверки?


И почему у тебя в "main" кол-во открывающихся скобок больше чем закрывающихся. Разве не должно быть одинаково?
Подсчитай.
ura_111 вне форума Ответить с цитированием
Старый 17.10.2017, 14:55   #66
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Скобок вот таких "{", "}".
ura_111 вне форума Ответить с цитированием
Старый 17.10.2017, 15:18   #67
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Расскажи о своей программе.
Как она работает?
Что за чем и какие проверки?


И почему у тебя в "main" кол-во открывающихся скобок больше чем закрывающихся. Разве не должно быть одинаково?
Подсчитай.
блин на счёт скобок извиняюсь не захватил просто они ниже)
Код:
#include <avr/io.h>
#include <util/delay.h>

button bt;
char flag = 0;
char count = 0;

void switchLed ()
{
	PORTD ^=0b01000000;// инвертируем значение на ножке
}
void checkButt()
{
	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;// сбрасываем счётчик
				switchLed();// выполняем действие
			}
			count++;
		}
		else count = 0;
	}
}



int main(void)
{
	DDRD=0xFF;
	PORTD=0b00000000;
	DDRB=0b10000000;
	PORTB=0b00011111;
   while (1)
    
       {		
		  	 
			 checkButt();
			
		  }
	   }
вот как-то так
scccorp вне форума Ответить с цитированием
Старый 17.10.2017, 17:30   #68
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Так что, у тебя всё получилось?
Всё работает?

Потому что у меня ошибка какая-то выскакивает:

1.jpg


p.s.: первое впечатление от кода.
Проверка всего-лишь одного состояния пинов:
Код:
if (!(PINB==0b00011101)) //проверяем на лог.0
Расскажи об этом. И об этом тоже:
Код:
PORTD ^=0b01000000;// инвертируем значение на ножке
Почему в единственном числе "на ножке", а остальные светодиоды на "D"?
А ты вообще проверял код у себя, работает?
ura_111 вне форума Ответить с цитированием
Старый 17.10.2017, 17:41   #69
scccorp
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 44
По умолчанию

Цитата:
Сообщение от ura_111 Посмотреть сообщение
Так что, у тебя всё получилось?
Всё работает?

Потому что у меня ошибка какая-то выскакивает:

Вложение 89944


p.s.: первое впечатление от кода.
Проверка всего-лишь одного состояния пинов:
Код:
if (!(PINB==0b00011101)) //проверяем на лог.0
Расскажи об этом. И об этом тоже:
Код:
PORTD ^=0b01000000;// инвертируем значение на ножке
Почему в единственном числе "на ножке", а остальные светодиоды на "D"?
А ты вообще проверял код у себя, работает?
Button bt -это у меня библиотека была подключена я уже удалил эту строчку не получилось с ней.
а зачем больше проверок нам надо чтоб на определённых был ноль мы их и проверяем. или нужно больше проверок?

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


код компилируется но диод не реагирует

тоесть первую часть кода я зделал работает нормально (на 6 выходах при определённой комбинации входов и нажатой кнопке загорается диод при отпускании он гаснет)

теперь нужно ещё 2 оставшихся диода запрогать на включение(то-есть нажал кнопку он включился нажал ещё раз выключился и т.д. )

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

Почему "ещё два"?
Уже рабочий один+2 = 3шт.
А ты писал (6-ть светодиодов):

Безымянный.png


___________________________________ ________________

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

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

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


2.jpg


2) копируешь

1.jpg


Ну всё.
Только ты делай по-чуть-чуть: Сделал (ещё один пин) компилируй, запускай, проверяй. Потом еще один пин и опять проверяй.
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