так что сперва нужно схемотехнику выстроить - потом порграммы писать
а то получится что бы управлять торчащими проводками (замыкая их на землю) нужно "выходардуины - транзисторный ключ - релешка" - что нифига не красиво.
это конечно правильно, но если подумать кнопки скорее всего комутируют сигнальный вольтаж, а то и просто сигнал низкого уровня. так или иначе атмега позволяет пропускать и выдавать сигнал низкого и высокого уровня. А если по токам то можно поставить мосфет 6680 или транзистор дарлингтона UHL2003 миниатюрные размеры. Но вольтаж на холостом надо померить.
Добавлено [time]26 Марта 2016, 13:33:47[/time]
Думаю для нас схемотехника будет проще чем написать код. если с атмегой не справимся тогда на PIC контролллер и к Стасу.
Добавлено [time]26 Марта 2016, 18:10:46[/time]
вот в таком примерно виде уже должно работать. пару мелочей надо будет подредактировать, типа установлено чтение шим чётко в 1100 и 1900 а не менее и более какогото уровня. ну чтение входов надо провериь читают ли цифровые входы ШИМ.
скетч исправлен и заливается надо проверять работоспособность.
/*9 канал: 1500 фокус 1900 и фокус, и спуск
10 канал: 1100 зум+ 1900 зум+
11 канал: 1100 вклвыкл 1900 видео
по значению ШИМ на входе 12-14 выход логический 0 на пин 5-11*/
int focus = 5;
int shot = 6;
int ch9 = 12;
int ch10 = 13;
int ch11 = 14;
void setup() { //задаём значения пин
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
pinMode(14, INPUT);
}
void loop(){
if (analogRead(ch9) == 500-800 )
{
//читаем положение ШИМ на входе
//9 канал: 1500 фокус 1900 и фокус, и спуск
//если 127 то фокус если 255 фокус спуск
digitalWrite(focus, LOW);
} else if (analogRead(ch9) >= 1000 )
{
digitalWrite(shot, LOW);
}
if (analogRead(ch10) <= 100 ) {
//10 канал: 1100 зум+ 1900 зум+
digitalWrite(7, LOW);} else if (analogRead(ch10) >= 1000 ){
digitalWrite(8, LOW);}
if (analogRead(ch11) <= 10 ){
//11 канал: 1100 вклвыкл 1900 видео
digitalWrite(9, LOW);} else if (analogRead(ch11) >= 240 ){
digitalWrite(10, LOW);}
}