Скетч переключателя на 4 положения

CEHATOP
Offline
Зарегистрирован: 28.02.2018

Нужен скетч для Pro Micro с использованием переключателя на 4-е фиксированных положения. Алгоритм на рисунке.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

И что этот скетч должен делать?

Green
Offline
Зарегистрирован: 01.10.2015

Пиво! htpicc@gmail.com

sadman41
Offline
Зарегистрирован: 19.10.2016

Не знаю, в чем подвох такой простой задачи, но пишите: wrk.sadman@gmail.com 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Как что делать? Корованы грабить! Вы ж сами вчера писали!

CEHATOP
Offline
Зарегистрирован: 28.02.2018

Ардуинка должна включать и отключать реле в зависимости от положения фиксированного переключателя. Подвоха нет просто сам в этом не бум-бум, а времени все изучать нет.

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну... два исполнителя есть - пишите любому. 

vvadim
Offline
Зарегистрирован: 23.05.2012

CEHATOP пишет:

просто сам в этом не бум-бум, а времени все изучать нет.

и при этом  не слушаете ничего...
схема электрическая вашего переключателя где?

CEHATOP
Offline
Зарегистрирован: 28.02.2018

Не понимаю какая схема вам нужна. Используется обыкновенный переключатель на 4-е положения с 5 контактами.

Питание ардуино и модулей реле от блока питания - 5в. Схема комутации выходов реле думаю вам не нужна. Схемы подключения переключателя и модулей реле к ардуине нет. И скетча тоже нет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014
#define IN_PIN0 2 //  переключатель
#define IN_PIN1 3
#define IN_PIN2 4
#define IN_PIN3 5

#define OUT_PIN0 6 // релюшки, активный - ноль
#define OUT_PIN1 7
#define OUT_PIN2 8
#define OUT_PIN3 9

byte conv[4]={0,0x0C,0x0A,9};
byte outPin[4]={OUT_PIN0,OUT_PIN1,OUT_PIN2,OUT_PIN3};
byte inPin[4]={IN_PIN0,IN_PIN1,IN_PIN2,IN_PIN3};
byte oldStat=0;
byte checkStat=0;
byte countStat=0;

void setup() {
  Serial.begin(9600);
  Serial.println("Hi");
  for(byte i=0;i<4;i++){
     pinMode(inPin[i],INPUT_PULLUP);
     pinMode(outPin[i],OUTPUT);
     digitalWrite(outPin[i],HIGH);
  }
}

void loop() {
  byte stat=0;
  while ((stat<4) && ((digitalRead(inPin[stat])!=LOW))){
    stat++;
  }
  if ((stat!=oldStat) && (stat<4)) {
     if (checkStat!=stat) {
        countStat=0;
        checkStat=stat;    
     } else {
        if (++countStat>10){ // тут регулируем задержку срабатывания, устраняем дребезг
           byte mask=8;
           for(byte i=0;i<4;i++){
              if (mask&conv[stat]){
                 digitalWrite(outPin[i],LOW);  
              } else {
                 digitalWrite(outPin[i],HIGH);  
              }
              mask>>=1;
           }
           oldStat=stat;
           countStat=0;
        }
     }
  }
}

 

А вообще все это решается просто кучкой диодов.

 

CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

#define IN_PIN0 2 //  переключатель
#define IN_PIN1 3
#define IN_PIN2 4
#define IN_PIN3 5

#define OUT_PIN0 6 // релюшки, активный - ноль
#define OUT_PIN1 7
#define OUT_PIN2 8
#define OUT_PIN3 9

byte conv[4]={0,0x0C,0x0A,9};
byte outPin[4]={OUT_PIN0,OUT_PIN1,OUT_PIN2,OUT_PIN3};
byte inPin[4]={IN_PIN0,IN_PIN1,IN_PIN2,IN_PIN3};
byte oldStat=0;
byte checkStat=0;
byte countStat=0;

void setup() {
  Serial.begin(9600);
  Serial.println("Hi");
  for(byte i=0;i<4;i++){
     pinMode(inPin[i],INPUT_PULLUP);
     pinMode(outPin[i],OUTPUT);
     digitalWrite(outPin[i],HIGH);
  }
}

void loop() {
  byte stat=0;
  while ((stat<4) && ((digitalRead(inPin[stat])!=LOW))){
    stat++;
  }
  if ((stat!=oldStat) && (stat<4)) {
     if (checkStat!=stat) {
        countStat=0;
        checkStat=stat;    
     } else {
        if (++countStat>10){ // тут регулируем задержку срабатывания, устраняем дребезг
           byte mask=8;
           for(byte i=0;i<4;i++){
              if (mask&conv[stat]){
                 digitalWrite(outPin[i],LOW);  
              } else {
                 digitalWrite(outPin[i],HIGH);  
              }
              mask>>=1;
           }
           oldStat=stat;
           countStat=0;
        }
     }
  }
}

 

А вообще все это решается просто кучкой диодов.

 

А схему полную подключения не подскажите

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ахахах

sadman41
Offline
Зарегистрирован: 19.10.2016

Опять у брукли приступ человеколюбия. Теперь будет и схему и рисовать и полдня рассказывать почему релюшки залипают ))

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

DetSimen пишет:

ахахах

Ты смеешься или плачеш ? Признавайся !

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

Опять у брукли приступ человеколюбия. Теперь будет и схему и рисовать и полдня рассказывать почему релюшки залипают ))

Не, просто у меня пириф, я отдыхаю от мускульного сенсора с распознаванием фигуры сложеной из пальцев :)

Ну и пока онкель не гадит.

А че, думаешь, релюшки будут залипать ?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

CEHATOP пишет:

А схему полную подключения не подскажите

Переключатель 2,3,4,5

Реле 6,7,8,9

CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

спасибо за схему. действительно все оказалось очень просто

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

CEHATOP пишет:

 действительно все оказалось очень просто

Ну да, ну да :)

CEHATOP
Offline
Зарегистрирован: 28.02.2018

Еще вопрос. По такой схеме можно подключить твердотельное реле малой мощности с выходом на МОП-транзисторах?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ссылку на реле дайте.

 

CEHATOP
Offline
Зарегистрирован: 28.02.2018
brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

1-на +5 вольт через резистор 750ом...1.5ком

2-на управляющую ногу ардуино

А как вы будете использовать выходной каскад реле - это ваше дело.

 

CEHATOP
Offline
Зарегистрирован: 28.02.2018

А как поточнее расчитать резистор по питанию?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

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

Второй подход, тупо покупаете резистор 1.1 ком, ставите и не паритесь.

CEHATOP
Offline
Зарегистрирован: 28.02.2018

Спасибо выберу второй подход для 5 вольт.

Извините за назойливость, а для 12 какой резистор нужно? Хочу использовать блок питания от светодиодной ленты на 12 в и 1,25.а

sadman41
Offline
Зарегистрирован: 19.10.2016

Да, брукли... повезло тебе ))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

brokly пишет:

Вспоминаете закон ома и считаете. 

Клапуций же запретил закон Ома!

Так что придётся Вам и про

CEHATOP пишет:
а для 12 какой резистор нужно?
 отвечать :)))))

А если затвр у ТС появится БП на 15 вольт .... в общем безработица Вам не грозит!

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

CEHATOP пишет:

Извините за назойливость, а для 12 какой резистор нужно? Хочу использовать блок питания от светодиодной ленты на 12 в и 1,25.а

Как вы его хотите использовать ?! Куда ?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ЕвгенийП пишет:

А если затвр у ТС появится БП на 15 вольт .... в общем безработица Вам не грозит!

Это я уже понял ... :( 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

sadman41 пишет:

Да, брукли... повезло тебе ))

НЕСКАЗАННО, походу...

CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

Как вы его хотите использовать ?! Куда ?

Хотел использовать один БП для всего. Кроме этих реле будут еще и другие потребители (подсветка и т.д.) на 12 вольт

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну волшебно, вот и подключайте к немк потребители. А ардуино она только до пяти ардуино, а выше уже не ардуино. А 12 вольт вроде больше 5, хотя я могу ошибаться.

CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

Ну волшебно, вот и подключайте к немк потребители. А ардуино она только до пяти ардуино, а выше уже не ардуино. А 12 вольт вроде больше 5, хотя я могу ошибаться.

А при чем здесь ардуино? Я по схеме с диодами.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А какой там резистор, вы его где увидали ?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А какой там резистор, вы его где увидали ?

CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

А какой там резистор, вы его где увидали ?

На схеме указаны электомагнитные реле. Я хочу их заменить на твердотельные(избавиться от щелчков и т.д.) малой мощности с напряжением питания 1,5 вольта. Питание будет 12 вольт. Необхдимо поставить последовательно с цетью питания твердотельного реле резистор определенного номинала. Вот про него я и спрашиваю.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Аааа... вы хотите использовать оптореле вместо обыкновенных.... Ясно, а что будите ими коммутировать ?

Вам сюда http://cxem.net/calc/ledcalc.php

Из даташита оптореле: прямое напряжение диода - 1,2 (max 1,5), ток от 5мА до 25мА.

 
CEHATOP
Offline
Зарегистрирован: 28.02.2018

brokly пишет:

Аааа... вы хотите использовать оптореле вместо обыкновенных.... Ясно, а что будите ими коммутировать ?

Вам сюда http://cxem.net/calc/ledcalc.php

Из даташита прямое напряжение диода - 1,2 (max 1,5), ток от 5мА до 25мА.

Комутировать буду слаботочные цепи управления игровым рулем Logitech G27 и игрового контроллера. Другими словами есть подрулевой переключатель на 4-е положения. Хочу его прикрутить к игровому рулю. Переключатель от Приоры помоему который на дворники и омыватель. На самом переключатиле есть три не фиксированные кнопки для управления бортовым компьютером в машине. Задумка что бы в каждом из 4-ех положений переключателя эти три кнопки выполняли различные функции. Всего должно получиться 12 функций. Поэтому такая комутация. 

А подскажите еще как доработать схему с диодами, что бы иметь возможность светодиодной индикации положений переключателя?