Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/43: Рейтинг темы: голосов - 43, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 18.04.2015
Сообщений: 25
1

Последовательное зажигание светодиодов по кнопке (ATtiny2313, Cи)

18.04.2015, 16:23. Показов 8878. Ответов 58
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.Есть такая проблема.Написал код для подпрограммы последовательного зажигания светодиодов.Вот пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*****************************************************
Version : Кнопки и светодиоды                                                 
Chip type           : ATmega16
Clock frequency     : 4,000000 MHz
*****************************************************/              
#include <mega16.h>                                      // библиотека ввода\вывода микроконтроллера
#include <delay.h>                                        // библиотека задержки
void i_miganie()
{
                                                                         PORTС.0=1;
                     delay_ms(600);
                                                                     PORTС.1=1;
                                     delay_ms(600);
                                     PORTС.2=1;
                                     delay_ms(600);
                                     PORTС.3=1;
                                     delay_ms(600);
                                     PORTС.4=1;
                                     delay_ms(600);
                                     PORTС.5=1;
                                     delay_ms(600);
                                     PORTС.6=1;
                                     delay_ms(600);
                                     PORTС.7=1;
                                     delay_ms(600);
                                     PORTС.7=0;
                                     delay_ms(600);
                                     PORTС.6=0;
                                     delay_ms(600);
                                     PORTС.5=0;
                                     delay_ms(600);
                                     PORTС.4=0;
                                     delay_ms(600);
                                     PORTС.3=0;
                                     delay_ms(600);
                                     PORTС.2=0;
                                     delay_ms(600);
                                     PORTС.1=0;
                                     delay_ms(600);
                                     PORTС.0=0;
                                     delay_ms(600);                   
}
Получился очень много кода.Как его можно сократить, а то общая программа получается очень большая.Задание такое:Обеспечить при нажатой кнопке SW1 поочередное засвечивание светодиодов LED0… LED7 на 1с в последовательности LED0, LED1,.., LED7, LED0 и т. д. При нажатой кнопке SW4 зажигание светодиодов должно происходить в обратном порядке. Кнопки подключены к порту B, а светодиоды - к порту C.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2015, 16:23
Ответы с готовыми решениями:

Последовательное зажигание светодиодов по кнопке (ATmega8515, ASM)
Добрый день. Требуется помощь для написания программы на ассемблере под AVR ATmega8515...

Последовательное зажигание светодиодов
Собственно задание: при включении МК светодиоды не горят, через 2 с загораются 1-й, затем...

ATmega8 последовательное зажигание светодиодов
Добрый вечер, Задание состоит в том, чтобы при нажатии на кнопку зажигался только один светодиод,...

Последовательное цикличное зажигание светодиодов
Помогите чайнику написать прогу плиз.Последовательное цикличное зажигание светодиодов до номера...

58
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
21.04.2015, 23:53 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Витальич Посмотреть сообщение
C++
1
2
3
4
5
6
7
unsigned char KeyGet()
{
unsigned char tmp;
if (PINB.0==0){tmp = 01;}
if (PINB.1==0){tmp = 02;}
return tmp;
}
получается что последняя кнопка будет перебивать остальные
можно сделать так
C++
1
2
3
4
5
6
7
8
unsigned char KeyGet()
{
unsigned char tmp=0;
if (PINB.0==0){tmp| = 01;}
if (PINB.1==0){tmp| = 02;}
if (PINB.2==0){tmp| = 04;}
return tmp;
}
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
22.04.2015, 00:06 22
Цитата Сообщение от ValeryS Посмотреть сообщение
получается что последняя кнопка будет перебивать остальные
В инструкции на девайс просто напишу "две и более кнопок сразу не нажимать. Лишение гарантии"
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
22.04.2015, 07:01 23
>получается что последняя кнопка будет перебивать остальные
А ты отслеживай не состояния кнопок, а переходы. Если реагировать у кнопок на переход 1->0 , то любая кнопка будет работать даже если остальные нажаты.
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
22.04.2015, 08:16 24
Цитата Сообщение от Ethereal Посмотреть сообщение
А ты отслеживай не состояния кнопок, а переходы. Если реагировать у кнопок на переход 1->0 , то любая кнопка будет работать даже если остальные нажаты.
Цитата Сообщение от Витальич Посмотреть сообщение
В протеусе и иногда в железе работать будет
Но лучше воспользоватся поиском по форуму и найти темы про опрос кнопок. Менее недели назад я приводил простой пример.
В том примере отслеживается переход
0
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
22.04.2015, 11:20 25
Цитата Сообщение от Витальич Посмотреть сообщение
if (PINB.0==0){tmp = 01;}
короче будет запись
C
1
if(PINB.0) { tmp = 01; }
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
22.04.2015, 12:34 26
Только по смыслу станет противоположной.
0
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
22.04.2015, 13:09 27
Цитата Сообщение от Ethereal Посмотреть сообщение
Только по смыслу станет противоположной.
Упс! Вы же на 0 проверяете, извиняюсь.
C
1
if(!PINB.0) { tmp = 01; }
0
1 / 1 / 0
Регистрация: 18.04.2015
Сообщений: 25
22.04.2015, 21:30  [ТС] 28
Я как понял,что в 14 строчке мы задаём наши варианты массивов,которые я прописывал в подрограмме?
Цитата Сообщение от Витальич Посмотреть сообщение
static unsigned char count = 0; PORTC = arrLed[count]; count++; if(count >= 8) { count = 0;
Пока вот что получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/*****************************************************                        
Chip type           : ATmega16
Clock frequency     : 4,000000 MHz
*****************************************************/              
#include <mega16.h>                                      // библиотека ввода\вывода микроконтроллера
#include <delay.h>                                        // библиотека задержки
unsigned char kR, temp;                           // обьявляем переменные
void i_miganie()
{
 unsigned char arrLedON[]= {b00000001,b00000011,b00000111,b00001111,b00011111,b00111111,b01111111,b11111111,
 b01111111,b00111111,b00011111,b00001111,b00000111,b00000011,b00000001,b00000000};
   int i;
   char port_out = 0;
   for (i =0; i<16;++i)
  {
      port_out = arrLedON[i] 
      PORTC = port_out;
      delay_ms(600);
  }
}           
void i_obmiganie()
{
 unsigned char arrLedOON[]= {b10000000,b11000000,b11100000,b11110000,b11111000,b11111100,b11111110,b11111111,
 b11111110,b11111100,b11111000,b11110000,b11100000,b11000000,b10000000,b00000000};
   int i;
   char port_out = 0;
   for (i =0; i<16;++i)
  {
      port_out = arrLedOON[i] 
      PORTC = port_out;
      delay_ms(600);
  }
}
void i_chmiganie()
{
 unsigned char arrLedCHON[]= {b00000010,b00001010,b00101010,b10101010,b00101010,b00001010,b00000010,b00000000};
   int i;
   char port_out = 0;
   for (i =0; i<8;++i)
  {
      port_out = arrLedCHON[i] 
      PORTC = port_out;
      delay_ms(600);
  }
}
void i_nechmiganie()
{
 unsigned char arrLedNECHON[]= {b00000001,b00000101,b00010101,b01010101,b00010101,b00000101,b00000001,b00000000};
   int i;
   char port_out = 0;
   for (i =0; i<8;++i)
  {
      port_out = arrLedNECHON[i] 
      PORTC = port_out;
      delay_ms(600);
  }                        
}
void i_sbros()
{
                                     PORTС.0=0;
                                     PORTС.1=0;
                                     PORTС.2=0;
                                     PORTС.3=0;
                                     PORTС.4=0;
                                     PORTС.5=0;
                                     PORTС.6=0;
                                     PORTС.7=0;  
}
void i_check()
{
  if(PINB.0==0)
  {
  i_miganie();
  }  
  if(PINB.1==0)
  {
  i_obmiganie();
  }
  if(PINB.2==0)
  {
  i_chmiganie();
  }  
  if(PINB.3==0)
  {
  i_nechmiganie();
  }
  if(PINB.4==0)
  {
  i_sbros();
  }  
}
void main(void)                                             // Declare your global variables here
{       
PORTB=0b01111111;                                   // Port B initialization
 DDRB=0b00000000;                                 
PORTС=0b00000000;                                   // Port С initialization
 DDRС=0b111111111;
 
    while(1)     // бесконечный цикл                           
            {
                                                          
                             if (PINB.0==0)                    // ==== №1 кнопка
                               { 
                                i_miganie();
                                  } 
                              if (PINB.1==0)                   // ==== №2 кнопка
                               { 
                               i_obmiganie();                      
                                 }  
 
                               if (PINB.3==0)                 //  ====    №3  кнопка
                               { 
                               i_chmiganie();                   
                                  } 
                               if (PINB.4==0)                    // ==== №4 кнопка
                               { 
                                i_nechmiganie();
                                  } 
                               if (PINB.5==0)                    // ==== №5 кнопка
                               { 
                                i_sbros();
                                  } 
            };                                                  // закрываем бесконечный цикл
 
  }
Извиняюсь.В шапке не тот микроконтроллер указал.Просто сейчас еще по другой теме с 2313 работаю

Добавлено через 1 час 33 минуты
Цитата Сообщение от Витальич Посмотреть сообщение
Да простит меня MS24
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void i_miganie()
{
 unsigned char arrLed[]= {b00000001,b00000011,b00000111,итд}
   int i;
   char port_out = 0;
 
   for (i =0; i<8;++i)
  {
      port_out = arrLed[i] 
      PORTC = port_out;
      delay_ms(600);
  }
}
В окурат как Вы желаете.
Массив arrLed сами только допишите.
CodeVision выдаёт ошибку при компиляции данного кода.Что делать?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
22.04.2015, 21:49 29
Цитата Сообщение от gubilon Посмотреть сообщение
CodeVision выдаёт ошибку при компиляции данного кода.Что делать?
Сообщить об ошибке
удрать из листинга
Цитата Сообщение от gubilon Посмотреть сообщение
итд
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
22.04.2015, 22:15 30
Цитата Сообщение от gubilon Посмотреть сообщение
CodeVision выдаёт ошибку при компиляции данного кода.Что делать?
Исправить ошибку. Там явно местами ; не хватает.
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
22.04.2015, 23:12 31
Цитата Сообщение от gubilon Посмотреть сообщение
CodeVision выдаёт ошибку
{b00000001,b00000011,b00000111,итд}
В стандарте СИ нет бинарного представления чисел, но некоторые производители компиляторов расширяют стандарт, для CodeVision будет так:
например - Целые числа могут быть записаны :

- в десятичной форме - 1234

- в двоичной форме с префиксом 0b так: 0b101001

- в шестнадцатеричной форме с префиксом 0x так: 0x5А

- в восьмеричной форме с префиксом 0 так: 0775
0
1 / 1 / 0
Регистрация: 18.04.2015
Сообщений: 25
22.04.2015, 23:21  [ТС] 32
Цитата Сообщение от Витальич Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* массив вариантов вкл. светотодиодов на порте С */
unsigned char arrLed[]= {b00000001,b00000011,b00000111,итд}
 
/* Установка параметров таймера */
void Timer0Init();
 
/* Опрос кнопок */
unsigned char KeyGet(); 
 
/* Прерывание таймера */
ISR( TIMER0_OVF_vect )
{
 static unsigned char count = 0;
 PORTC = arrLed[count];
 count++;
 if(count >= 8)
 {
   count = 0;
 }
}
 
void main(0)
{
 Timer0Init();
 StartTimer();
 
 while(1)
 {
    if(KeyGet() == 1)
    {
      // действия по нажатой кнопки
    }
 }
}
Настраиваем прерывание таймера на частоту изменения вкл/выкл светодиодов. В функции прерывания таймера ISR( TIMER0_OVF_vect ) происходит изменение состояние (вкл/выкл) светодиодов.
Основная программа постоянно опрашивает кнопки, когда обнаружит нажатую кнопку изменяет порядок вкл/выкл светодиодов. Для этого достаточно переписать данные в arrLed[]
Я как понял,Что это другой вариант исполнения программы.Но вверху получается нужно задавать разные массивы?Если так, то что задавать в прерывании таймера и главной программа при KeyGet.Просто не могу много понять,а сильно по срокам поджимают с программой
0
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
23.04.2015, 13:16 33
Цитата Сообщение от gubilon Посмотреть сообщение
Я как понял,Что это другой вариант исполнения программы.Но вверху получается нужно задавать разные массивы?Если так, то что задавать в прерывании таймера и главной программа при KeyGet.Просто не могу много понять,а сильно по срокам поджимают с программой
"Вверху" - т.е глобально вы можете задать Ваши массивы. Существует глобальная область видимости и локальная. Если Вы объявите массивы как глобальные - то они будут доступны "во всех Ваших функциях" так сказать...
Так как вы объявили их сейчас - тоже будет работать, просто сейчас их область видимости ограничена функцией которою Вы создаете.

Теперь, если Вы хотите работать через таймер, то работа с ним осуществляется через прерывание. Функция которая отвечает за прерывание - не может принимать никаких параметров, следовательно передать ей что - то можно только с помощью глобальных переменных.

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

в данном коде
C
1
   PORTC = arrLed[count];
вы можете вывести только один массив arrLed

Я предлагаю Вам завести глобальные переменные типа bool и выставлять их в функциях обработки кнопок, примерно так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool flag1;
bool flag2;
bool flag3;
....
while(1)
 {
    if(KeyGet() == 1)
    {
         flag1 = true;
         flag2=false;
         flag3=false;   
    }
 
    if(KeyGet() == 2)
    {
         flag1 = false;
         flag2 = true;
         flag3 = false;    // и т.д. сколько Вам массивов надо
    }
 }

а уже в прерывании писать
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* Прерывание таймера */
ISR( TIMER0_OVF_vect )
{
 static unsigned char count = 0;
 if(flag1)
    { 
        PORTC = arrLed1[count];
    }
if(flag2)
    { 
        PORTC = arrLed2[count];
    }
        // и т.д.
 
count++;
 if(count >= 8)
 {
   count = 0;
 }
}
Добавлено через 2 минуты
Только - это мрачный быдлокод )))
0
1 / 1 / 0
Регистрация: 18.04.2015
Сообщений: 25
23.04.2015, 19:51  [ТС] 34
А почему мрачный?

Добавлено через 2 часа 34 минуты
Написал всё вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*****************************************************                        
Chip type           : ATmega16
Clock frequency     : 4,000000 MHz
*****************************************************/              
#include <mega16.h>                                      // библиотека ввода\вывода микроконтроллера
#include <delay.h>                                        // библиотека задержки
 
/* массив вариантов вкл. светотодиодов на порте С */
flash unsigned char arrLed[]= {0b00000001,0b00000011,0b00000111,0b00001111,0b00011111,0b00111111,0b01111111,0b11111111,
 0b01111111,0b00111111,0b00011111,0b00001111,0b00000111,0b00000011,0b00000001,0b00000000};
flash unsigned char arrLedO[]= {0b10000000,0b11000000,0b11100000,0b11110000,0b11111000,0b11111100,0b11111110,0b11111111,
 0b11111110,0b11111100,0b11111000,0b11110000,0b11100000,0b11000000,0b10000000,0b00000000};
flash unsigned char arrLedCH[]= {0b00000010,0b00001010,0b00101010,0b10101010,0b00101010,0b00001010,0b00000010,0b00000000,
0b00000010,0b00001010,0b00101010,0b10101010,0b00101010,0b00001010,0b00000010,0b00000000};
flash unsigned char arrLedNECH[]= {0b00000001,0b00000101,0b00010101,0b01010101,0b00010101,0b00000101,0b00000001,0b00000000,
0b00000001,0b00000101,0b00010101,0b01010101,0b00010101,0b00000101,0b00000001,0b00000000};
flash unsigned char arrLedS[]= {0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000,0b00000000};
/* Установка параметров таймера */
void Timer0Init()
{
 TCCR0=0x09;
    TCNT0=0x00;
    OCR0=0x64;
    TIMSK=0x02;
} 
/* Опрос кнопок */
unsigned char KeyGet()
{
unsigned char tmp=0;
if (!PINB.0==0){tmp| = 01;}
if (!PINB.1==0){tmp| = 02;}
if (!PINB.2==0){tmp| = 03;}
if (!PINB.3==0){tmp| = 04;}
if (!PINB.4==0){tmp| = 05;}
return tmp;
} 
void presets(void)
   {
   DDRB  = 0b00000000;       
   PORTB = 0b11111111;                                   // Port B initialization
   DDRC  = 0b11111111; 
   PORTC = 0b00000000; 
   } 
/* Прерывание таймера */
ISR ( TIMER0_OVF_vect )
{
 static unsigned char count = 0;
 if(flag1)
    { 
        PORTC = arrLed[count];
    }
if(flag2)
    { 
        PORTC = arrLedO[count];
    }
if(flag3)
    { 
        PORTC = arrLedCH[count];
    }
if(flag4)
    { 
        PORTC = arrLedNECH[count];
    }
if(flag5)
    { 
        PORTC = arrLedS[count];
    } 
count++;
 if(count >= 8)
 {
   count = 0;
 }
} 
void main(0)
{
 Timer0Init()
 StartTimer() 
bool flag1;
bool flag2;
bool flag3;
bool flag4;
bool flag5;
while(1)
 {
    if(KeyGet() == 1)
    {
         flag1 = true;
         flag2=false;
         flag3=false;
         flag4=false;
         flag5=false;
    }
 
    if(KeyGet() == 2)
    {
         flag1 = false;
         flag2 = true;
         flag3 = false;
         flag4=false;
         flag5=false;         
    }
    if(KeyGet() == 3)
    {
         flag1 = false;
         flag2=false;
         flag3=true;
         flag4=false;
         flag5=false;         
    }
 
    if(KeyGet() == 4)
    {
         flag1 = false;
         flag2 = false;
         flag3 = false;
         flag4=true;
         flag5=false;         
    }
    if(KeyGet() == 5)
    {
         flag1 = false;
         flag2=false;
         flag3=false;
         flag4=false;
         flag5=true;         
    }
 }
Ругается CodeVision на строчку 45:ISR ( TIMER0_OVF_vect ) и нас строчки с 30 по 34.Что делать?
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
23.04.2015, 19:56 35
Цитата Сообщение от gubilon Посмотреть сообщение
ISR ( TIMER0_OVF_vect )
Я привел пример для компилятора GCC для своего смотрите в справке.
Цитата Сообщение от gubilon Посмотреть сообщение
нас строчки с 30 по 34
дословно приводите что пишет компилятор
Примерно так:
interrupt [номер вектора] void имя функции обработчика прерывания(void)
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
23.04.2015, 20:01 36
Цитата Сообщение от MS24 Посмотреть сообщение
count++;
if(count >= 8)
{
count = 0;
}
Это пишется проще
count++;
count &= 7 ;
0
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
23.04.2015, 21:06 37
Цитата Сообщение от gubilon Посмотреть сообщение
void main(0)
{
*Timer0Init()
*StartTimer()
bool flag1;
bool flag2;
bool flag3;
bool flag4;
bool flag5;
Надо объявить глобально ( Вверху по вашему )

Добавлено через 1 минуту
Цитата Сообщение от Ethereal Посмотреть сообщение
Это пишется проще
count++;
count &= 7 ;
Можете пояснить?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
23.04.2015, 21:15 38
Цитата Сообщение от MS24 Посмотреть сообщение
Можете пояснить?
элементарно
двоичный код 7 это 111
при операции И затираются все байты кроме первых трех
например 8
1000
&
0111
=
0000 0
9
1001
&
0111
=
0001 1
равнозначная замена
C++
1
count%=8;
0
11 / 11 / 2
Регистрация: 22.02.2012
Сообщений: 115
23.04.2015, 22:06 39
Цитата Сообщение от gubilon Посмотреть сообщение
Ругается CodeVision на строчку 45:ISR ( TIMER0_OVF_vect ) и нас строчки с 30 по 34.Что делать?
Сгенерируйте прерывание визард мастером, он сам и таймер настроит и прерывание сделает.

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
равнозначная замена
ооООО Ничоси!
Это я запомню! когда нужно будет еще больше оптимизировать ( запутать ) код - буду применять )))
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
23.04.2015, 22:16 40
Цитата Сообщение от MS24 Посмотреть сообщение
еще больше оптимизировать
не думаю что удастся оптимизировать, компиляторы давно уже остаток от деления на степень 2 заменяют на "И"
а деление на сдвиг
Цитата Сообщение от MS24 Посмотреть сообщение
запутать
тем более не получится, на это только очень начинающие попадутся
0
23.04.2015, 22:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2015, 22:16
Помогаю со студенческими работами здесь

Последовательное зажигание Пяти светодиодов
Всем привет! Загорелся идеей собрать световой меч, на пяти светодиодах, их суну в пластиковую пвх...

Последовательное зажигание светодиодов на Arduino UNO
здравствуйте. нужна помощь. имеется arduino uno. нужно спрограммировать его так, что бы загорелись...

Зажигание светодиодов AT90S2313
Доброго времени суток. На AVR только начинающий Вот написал программу для циклического зажигания...

Зажигание полос светодиодов на мк AT90S8515
Здравствуйте, нужна помощь в отладки программы. Задача такая: Напишите и отладьте программу,...

Зажигание полос светодиодов на мк AT90S8515
Здравствуйте! Задача такова:написать и отладить программу на ассемблер обрабатывающую прерывание...

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

Последовательное гашение светодиодов на окружности с интервалом
Помогите пожалуйста! Разработать программу, осуществляющую последовательное гашение светодиодов на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru