Resultados da busca - %E6%96%B0%E4%B8%96%E4%BD%B3%E7%BD%91%E8%BF%9D%E6%B3%95%E5%90%97%E3%80%90%E2%94%8B%E8%81%94%E7%B3%BB46%E2%92%8B1%E2%92%8D85(%E6%89%A3)%E3%80%93%E3%80%91
3 -----> S3
E4 -----> S4
E5 -----> S5
E6 -----> S6
ou
E1 ,/-> S6
E2 ,/-> S6
E3 -----> S3
E4 '\-> S2
E5 -----> S5
E6 '\-> S1
etc...
A idéia é utilizar o menor número de CI's possível tomando como base uma matriz.
Uma solução seria a utilização de CI's 74LS125 ou 74LS126. (3-state)
Algum colega conhece uma solução?…
Adicionado por Milton Vilela ao 0:42 em 26 maio 2013
ternando.
A ideia é que cada chave acione sua respectiva saída sem causar interferência, alguém já passou por isso e tem uma ideia para me ajudar?
Grato pelo apoio!
//Saídas int E0 = 2;
int E1 = 3;
int E2 = 4;
int E3 = 5;
int E4 = 6;
int E5 = 7;
int E6 = 8;
int E7 = 9;
int E8 = 10;
int E9 = 11;
int E10 = 12;
int E11 = 13;
int E12 = 14;
int E13 = 15;
int E14 = 16;
int E15 = 17;
//Entradas const int S1 = 20;
const int S2 = 21;
const int S3 = 22;
const int S4 = 23;
const int S5 = 24;
const int S6 = 25;
const int S7 = 26;
const int S8 = 27;
const int S9 = 28;
const int S10 = 29;
const int S11 = 30;
const int S12 = 31;
const int S13 = 32;
const int S14 = 33;
const int S15 = 34;
const int S16 = 35;
int dado; //variável que receberá os dados da porta serial
//Ajuste de Debounce "S1" const long DEBOUNCE_DELAY0 = 100;
int leitura_anterior0 = 1;
int leitura_anterior_db0 = 1;
long time_ultimo_debounce0 = 0;
int debounce_0 = 1;
//Ajuste de Debounce "S2" const long DEBOUNCE_DELAY1 = 100;
int leitura_anterior1 = 1;
int leitura_anterior_db1 = 1;
long time_ultimo_debounce1 = 0;
int debounce_1 = 1;
//Ajuste de Debounce "S3" const long DEBOUNCE_DELAY2 = 100;
int leitura_anterior2 = 1;
int leitura_anterior_db2 = 1;
long time_ultimo_debounce2 = 0;
int debounce_2 = 1;
//Ajuste de Debounce "S4" const long DEBOUNCE_DELAY3 = 100;
int leitura_anterior3 = 1;
int leitura_anterior_db3 = 1;
long time_ultimo_debounce3 = 0;
int debounce_3 = 1;
void setup(){ Serial.begin(9600);//frequência da porta serial
//Saídas
pinMode(E0,OUTPUT);
pinMode(E1,OUTPUT);
pinMode(E2,OUTPUT);
pinMode(E3,OUTPUT);
pinMode(E4,OUTPUT);
pinMode(E5,OUTPUT);
pinMode(E6,OUTPUT);
pinMode(E7,OUTPUT);
pinMode(E8,OUTPUT);
pinMode(E9,OUTPUT);
pinMode(E10,OUTPUT);
pinMode(E11,OUTPUT);
pinMode(E12,OUTPUT);
pinMode(E13,OUTPUT);
pinMode(E14,OUTPUT);
pinMode(E15,OUTPUT);
//Entradas
pinMode(S1,INPUT);
pinMode(S2,INPUT);
pinMode(S3,INPUT);
pinMode(S4,INPUT);
pinMode(S5,INPUT);
pinMode(S6,INPUT);
pinMode(S7,INPUT);
pinMode(S8,INPUT);
pinMode(S9,INPUT);
pinMode(S10,INPUT);
pinMode(S11,INPUT);
pinMode(S12,INPUT);
pinMode(S13,INPUT);
pinMode(S14,INPUT);
pinMode(S15,INPUT);
pinMode(S16,INPUT);
}
void loop(){
botao_0(); }
void botao_0(){
int leitura_atual0 = digitalRead(S1);
if (leitura_atual0 != leitura_anterior0 ) { time_ultimo_debounce0 = millis(); debounce_0 = 0; }
if ( (millis() - time_ultimo_debounce0) > DEBOUNCE_DELAY0 ) { debounce_0 = 1; }
if (debounce_0 = 1){ if (leitura_atual0 == 0 && leitura_anterior_db0 == 1){ digitalWrite(E0, !digitalRead(E0)); }
leitura_anterior_db0 = leitura_atual0; }
leitura_anterior0 = leitura_atual0;
botao_1(); }
void botao_1(){
int leitura_atual1 = digitalRead(S2);
if (leitura_atual1 != leitura_anterior1 ) { time_ultimo_debounce1 = millis(); debounce_1 = 0; }
if ( (millis() - time_ultimo_debounce1) > DEBOUNCE_DELAY1 ) { debounce_1 = 0; }
if (debounce_1 = 1){ if (leitura_atual1 == 0 && leitura_anterior_db1 == 1){ digitalWrite(E1, !digitalRead(E1)); }
leitura_anterior_db1 = leitura_atual1; }
leitura_anterior1 = leitura_atual1;
botao_2(); }
void botao_2(){
int leitura_atual2 = digitalRead(S3);
if (leitura_atual2 != leitura_anterior2 ) { time_ultimo_debounce2 = millis(); debounce_2 = 0; }
if ( (millis() - time_ultimo_debounce2) > DEBOUNCE_DELAY2 ) { debounce_2 = 0; }
if (debounce_2 = 1){ if (leitura_atual2 == 0 && leitura_anterior_db2 == 1){ digitalWrite(E2, !digitalRead(E2)); }
leitura_anterior_db2 = leitura_atual2; }
leitura_anterior2 = leitura_atual2;
botao_3(); }
void botao_3(){
int leitura_atual3 = digitalRead(S4);
if (leitura_atual3 != leitura_anterior3 ) { time_ultimo_debounce3 = millis(); debounce_3 = 0; }
if ( (millis() - time_ultimo_debounce3) > DEBOUNCE_DELAY3 ) { debounce_3 = 0; }
if (debounce_3 = 1){ if (leitura_atual3 == 0 && leitura_anterior_db3 == 1){ digitalWrite(E3, !digitalRead(E3)); }
leitura_anterior_db3 = leitura_atual3; }
leitura_anterior3 = leitura_atual3;
delay(10); if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
dado = Serial.read();//lê os dados da porta serial
switch(dado){
case 1:
digitalWrite(E0,HIGH);
break;
case 2:
digitalWrite(E0,LOW);
break;
case 3: digitalWrite(E1,HIGH);
break;
case 4:
digitalWrite(E1,LOW);
break;
case 5: digitalWrite(E2,HIGH);
break;
case 6:
digitalWrite(E2,LOW);
break;
case 7: digitalWrite(E3,HIGH);
break;
case 8:
digitalWrite(E3,LOW);
break;
case 9: digitalWrite(E4,HIGH);
break;
case 10:
digitalWrite(E4,LOW);
break;
case 11: digitalWrite(E5,HIGH);
break;
case 12:
digitalWrite(E5,LOW);
break;
case 13: digitalWrite(E6,HIGH);
break;
case 14:
digitalWrite(E6,LOW);
break;
case 15: digitalWrite(E7,HIGH);
break;
case 16:
digitalWrite(E7,LOW);
break;
case 17: digitalWrite(E8,HIGH);
break;
case 18:
digitalWrite(E8,LOW);
break;
case 19: digitalWrite(E9,HIGH);
break;
case 20:
digitalWrite(E9,LOW);
break;
case 21: digitalWrite(E10,HIGH);
break;
case 22:
digitalWrite(E10,LOW);
break;
case 23: digitalWrite(E11,HIGH);
break;
case 24:
digitalWrite(E11,LOW);
break;
case 25: digitalWrite(E12,HIGH);
break;
case 26:
digitalWrite(E12,LOW);
break;
case 27: digitalWrite(E13,HIGH);
break;
case 28:
digitalWrite(E13,LOW);
break;
case 29: digitalWrite(E14,HIGH);
break;
case 30:
digitalWrite(E14,LOW);
break;
case 31: digitalWrite(E15,HIGH);
break;
case 32:
digitalWrite(E15,LOW);
break;
case 33: digitalWrite(E0,HIGH);
digitalWrite(E1,HIGH);
digitalWrite(E2,HIGH);
digitalWrite(E3,HIGH);
digitalWrite(E4,HIGH);
digitalWrite(E5,HIGH);
digitalWrite(E6,HIGH);
digitalWrite(E7,HIGH);
digitalWrite(E8,HIGH);
digitalWrite(E9,HIGH);
digitalWrite(E10,HIGH);
digitalWrite(E11,HIGH);
digitalWrite(E12,HIGH);
digitalWrite(E13,HIGH);
digitalWrite(E14,HIGH);
digitalWrite(E15,HIGH);
break; case 34:
digitalWrite(E0,LOW);
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
digitalWrite(E3,LOW);
digitalWrite(E4,LOW);
digitalWrite(E5,LOW);
digitalWrite(E6,LOW);
digitalWrite(E7,LOW);
digitalWrite(E8,LOW);
digitalWrite(E9,LOW);
digitalWrite(E10,LOW);
digitalWrite(E11,LOW);
digitalWrite(E12,LOW);
digitalWrite(E13,LOW);
digitalWrite(E14,LOW);
digitalWrite(E15,LOW);
break;
} }
}…
ezes desliga uma e liga a outra com o acionamento de uma unica chave, o que deveria cada chave acionar sua respectiva saída como acontece na S1 e S2 que estão funcionando corretamente. outro comportamento que começou a ocorrer foi depois que adicionei a programação do Debounce delay para as chaves S3 e S4 fazendo as saídas E2 e E3 iniciarem já acionadas, Alguém já passou por isso e pode me dar uma dica! Abraço a todos !!!
//Saídas int E0 = 2;
int E1 = 3;
int E2 = 4;
int E3 = 5;
int E4 = 6;
int E5 = 7;
int E6 = 8;
int E7 = 9;
int E8 = 10;
int E9 = 11;
int E10 = 12;
int E11 = 13;
int E12 = 14;
int E13 = 15;
int E14 = 16;
int E15 = 17;
//Entradas
const int S1 = 20;
const int S2 = 21;
const int S3 = 22;
const int S4 = 23;
const int S5 = 24;
const int S6 = 25;
const int S7 = 26;
const int S8 = 27;
const int S9 = 28;
const int S10 = 29;
const int S11 = 30;
const int S12 = 31;
const int S13 = 32;
const int S14 = 33;
const int S15 = 34;
const int S16 = 35;
int dado; //variável que receberá os dados da porta serial
//Ajuste de Debounce "S1"
const long DEBOUNCE_DELAY0 = 100;
int leitura_anterior0 = 1;
int leitura_anterior_db0 = 1;
long time_ultimo_debounce0 = 0;
int debounce_0 = 1;
//Ajuste de Debounce "S2"
const long DEBOUNCE_DELAY1 = 100;
int leitura_anterior1 = 1;
int leitura_anterior_db1 = 1;
long time_ultimo_debounce1 = 0;
int debounce_1 = 1;
//Ajuste de Debounce "S3"
const long DEBOUNCE_DELAY2 = 100;
int leitura_anterior2 = 1;
int leitura_anterior_db2 = 1;
long time_ultimo_debounce2 = 0;
int debounce_2 = 1;
//Ajuste de Debounce "S4"
const long DEBOUNCE_DELAY3 = 100;
int leitura_anterior3 = 1;
int leitura_anterior_db3 = 1;
long time_ultimo_debounce3 = 0;
int debounce_3 = 1;
void setup(){ Serial.begin(9600);//frequência da porta serial
//Saídas
pinMode(E0,OUTPUT);
pinMode(E1,OUTPUT);
pinMode(E2,OUTPUT);
pinMode(E3,OUTPUT);
pinMode(E4,OUTPUT);
pinMode(E5,OUTPUT);
pinMode(E6,OUTPUT);
pinMode(E7,OUTPUT);
pinMode(E8,OUTPUT);
pinMode(E9,OUTPUT);
pinMode(E10,OUTPUT);
pinMode(E11,OUTPUT);
pinMode(E12,OUTPUT);
pinMode(E13,OUTPUT);
pinMode(E14,OUTPUT);
pinMode(E15,OUTPUT);
//Entradas
pinMode(S1,INPUT);
pinMode(S2,INPUT);
pinMode(S3,INPUT);
pinMode(S4,INPUT);
pinMode(S5,INPUT);
pinMode(S6,INPUT);
pinMode(S7,INPUT);
pinMode(S8,INPUT);
pinMode(S9,INPUT);
pinMode(S10,INPUT);
pinMode(S11,INPUT);
pinMode(S12,INPUT);
pinMode(S13,INPUT);
pinMode(S14,INPUT);
pinMode(S15,INPUT);
pinMode(S16,INPUT);
}
void loop(){
botao_0(); }
void botao_0(){
int leitura_atual0 = digitalRead(S1);
if (leitura_atual0 != leitura_anterior0 ) { time_ultimo_debounce0 = millis(); debounce_0 = 0; }
if ( (millis() - time_ultimo_debounce0) > DEBOUNCE_DELAY0 ) { debounce_0 = 1; }
if (debounce_0 = 1){ if (leitura_atual0 == 0 && leitura_anterior_db0 == 1){ digitalWrite(E0, !digitalRead(E0)); }
leitura_anterior_db0 = leitura_atual0; }
leitura_anterior0 = leitura_atual0;
botao_1();
}
void botao_1(){
int leitura_atual1 = digitalRead(S2);
if (leitura_atual1 != leitura_anterior1 ) { time_ultimo_debounce1 = millis(); debounce_1 = 0; }
if ( (millis() - time_ultimo_debounce1) > DEBOUNCE_DELAY1 ) { debounce_1 = 0; }
if (debounce_1 = 1){ if (leitura_atual1 == 0 && leitura_anterior_db1 == 1){ digitalWrite(E1, !digitalRead(E1)); }
leitura_anterior_db1 = leitura_atual1; }
leitura_anterior1 = leitura_atual1;
botao_2();
}
void botao_2(){
int leitura_atual2 = digitalRead(S3);
if (leitura_atual2 != leitura_anterior2 ) { time_ultimo_debounce2 = millis(); debounce_2 = 0; }
if ( (millis() - time_ultimo_debounce2) > DEBOUNCE_DELAY2 ) { debounce_2 = 0; }
if (debounce_2 = 1){ if (leitura_atual2 == 0 && leitura_anterior_db2 == 1){ digitalWrite(E2, !digitalRead(E2)); }
leitura_anterior_db2 = leitura_atual2; }
leitura_anterior2 = leitura_atual2;
botao_3();
}
void botao_3(){
int leitura_atual3 = digitalRead(S4);
if (leitura_atual3 != leitura_anterior3 ) { time_ultimo_debounce3 = millis(); debounce_3 = 0; }
if ( (millis() - time_ultimo_debounce3) > DEBOUNCE_DELAY3 ) { debounce_3 = 0; }
if (debounce_3 = 1){ if (leitura_atual3 == 0 && leitura_anterior_db3 == 1){ digitalWrite(E3, !digitalRead(E3)); }
leitura_anterior_db3 = leitura_atual3; }
leitura_anterior3 = leitura_atual3;
delay(10);
if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
dado = Serial.read();//lê os dados da porta serial
switch(dado){
case 1:
digitalWrite(E0,HIGH);
break;
case 2:
digitalWrite(E0,LOW);
break;
case 3: digitalWrite(E1,HIGH);
break;
case 4:
digitalWrite(E1,LOW);
break;
case 5:
digitalWrite(E2,HIGH);
break;
case 6:
digitalWrite(E2,LOW);
break;
case 7:
digitalWrite(E3,HIGH);
break;
case 8:
digitalWrite(E3,LOW);
break;
case 9:
digitalWrite(E4,HIGH);
break;
case 10:
digitalWrite(E4,LOW);
break;
case 11:
digitalWrite(E5,HIGH);
break;
case 12:
digitalWrite(E5,LOW);
break;
case 13:
digitalWrite(E6,HIGH);
break;
case 14:
digitalWrite(E6,LOW);
break;
case 15:
digitalWrite(E7,HIGH);
break;
case 16:
digitalWrite(E7,LOW);
break;
case 17:
digitalWrite(E8,HIGH);
break;
case 18:
digitalWrite(E8,LOW);
break;
case 19:
digitalWrite(E9,HIGH);
break;
case 20:
digitalWrite(E9,LOW);
break;
case 21:
digitalWrite(E10,HIGH);
break;
case 22:
digitalWrite(E10,LOW);
break;
case 23:
digitalWrite(E11,HIGH);
break;
case 24:
digitalWrite(E11,LOW);
break;
case 25:
digitalWrite(E12,HIGH);
break;
case 26:
digitalWrite(E12,LOW);
break;
case 27:
digitalWrite(E13,HIGH);
break;
case 28:
digitalWrite(E13,LOW);
break;
case 29:
digitalWrite(E14,HIGH);
break;
case 30:
digitalWrite(E14,LOW);
break;
case 31:
digitalWrite(E15,HIGH);
break;
case 32:
digitalWrite(E15,LOW);
break;
case 33: digitalWrite(E0,HIGH);
digitalWrite(E1,HIGH);
digitalWrite(E2,HIGH);
digitalWrite(E3,HIGH);
digitalWrite(E4,HIGH);
digitalWrite(E5,HIGH);
digitalWrite(E6,HIGH);
digitalWrite(E7,HIGH);
digitalWrite(E8,HIGH);
digitalWrite(E9,HIGH);
digitalWrite(E10,HIGH);
digitalWrite(E11,HIGH);
digitalWrite(E12,HIGH);
digitalWrite(E13,HIGH);
digitalWrite(E14,HIGH);
digitalWrite(E15,HIGH);
break; case 34:
digitalWrite(E0,LOW);
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
digitalWrite(E3,LOW);
digitalWrite(E4,LOW);
digitalWrite(E5,LOW);
digitalWrite(E6,LOW);
digitalWrite(E7,LOW);
digitalWrite(E8,LOW);
digitalWrite(E9,LOW);
digitalWrite(E10,LOW);
digitalWrite(E11,LOW);
digitalWrite(E12,LOW);
digitalWrite(E13,LOW);
digitalWrite(E14,LOW);
digitalWrite(E15,LOW);
break;
} }
}…