-
Постов
2 990 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент солар
-
Клавиатура пианино имеет 88 клавиш. Их нужно нажимать в определенном порядке. 1. Применить "бегущую" единицу, организованную на логике и сдвигающем регистре в частности. Аккорды брать, распараллеливая единицу. Разрядность регистра должна соответствовать длине мелодии. Достоинство: простая схема на логике. Недостаток: гибкости нет при желании озвучить другой нотный лист. 2. Микроконтроллер. Перебор выводов как нужно и когда нужно. Достоинство: универсальность. По идее можно тупо указать ноты в программе - такую-то (такие-то) играть столько-то. Недостаток (в вашем случае): нужно написать и отладить программу. По первому варианту - тактовый генератор, сдвиговый регистр, дешифратор для каждого соленоида. По второму варианту - array[]= {ноты, длительность, ноты, длительность.......}; // ноты - какие из 88-ми нажать n= 0; while(не кончился array) { нажать клавишу(ы)array[n], суть включить соленоид; выдержать длительность array[n+1]; отпустить клавишу(ы); n+= 2; }
-
Сами пробовали разобраться в программе?
-
Пожалуйста.
- 4 ответа
-
- ps2
- клавиатура
- (и ещё 5 )
-
Посредством putchar(0x30+PINC.0+PINC.1*2); // заморозилось и далее не выполняется, но аппаратный таймер работает, юарт флудит (011111111101111111110...) имеем: ttt.rar
-
Т.к. у вас линии РС0 и РС1 настроены как входы, то, может быть, имеет смысл опрашивать их как PINC.0 и PINC.1? Насчёт якобы флуда УАРТа - частоту нормальную поставьте, например, 7.3728 МГц. И ещё - выкладывайте проекты, не заставляйте отвечающего заново всё рисовать и писать программу.
-
МК представляет собой нагрузку. Видимо, несоизмеримо большую, нежели вольтметр. Попробуйте совет @mvkarp .
-
Это как это? И относительно чего транзистор коммутирует сигнал?
-
Неверное утверждение. Цикл конечный, причём сразу по прохождении всех операторов. Из цикла выкидывает оператор break. Для убедительности снял ассемблерный (оттранслированный) код: ; 0000 0011 while (i==1) // 3 сек LDI R30,LOW(1) CP R30,R5 BRNE _0x8 ; 0000 0012 { if(m==3){PORTB.2=1;} LDI R30,LOW(3) CP R30,R4 BRNE _0x9 SBI 0x18,2 ; 0000 0013 else{PORTB.2=0;} RJMP _0xC _0x9: CBI 0x18,2 _0xC: ; 0000 0014 break; ; 0000 0015 }; _0x8: ; 0000 0016 ; 0000 0017 while (i==2) // 6 сек LDI R30,LOW(2) CP R30,R5 BRNE _0x11 Опять же - с какого перепуга она должна измениться? Было, предположим, условие на взведение. Чтобы порт стал "0", нужен сброс. И где он?
-
Потому, что break прекращает действие while(), а m, видимо, был равен 3. С какой целью в цикл вставлен break?
-
Так: 74hc595.pdsprj
-
В предопределениях заменить RC0, RC1 на RB4 и RB5. Не забыть про инициализацию. И пробовать. В конце концов прочесть протокол и лапками напечатать программу.
- 4 ответа
-
- ps2
- клавиатура
- (и ещё 5 )
-
У меня огород прибран. Свободен.
-
Спрошу так:
- 11 ответов
-
Цешкой, авометром, ПИНом, мегаомметром и т.д. Сигналы инопланетян несколько посложнее.
-
Приведите, пожалуйста, схему и саму задачу.
-
На платной основе нарисую.
- 1 505 ответов
-
- Печатная плата
- Печатка
- (и ещё 5 )
-
#define hour Data[0]
-
Напишите в личку подробности.
-
ПДУ телека, например. Аааа, просёк - проблема войны с соседями. Ню-ню.
-
Как показывает опыт, самая бяка в механике. Далеко за примерами ходить не надо - достаточно вспомнить про проблему корпусов для приблуд. К чему веду - определитесь с механикой. А там видно будет.
-
У вас есть шанс разработать такую приблуду самостоятельно. Хотя бы на основе однопереключательной. Выкладывайте свои соображения.