esse circuito identifica apenas um botão por vez. se for pressionado mais de um botão de uma vez, o circuito vai entender que o botão pressionado é aquele por onde a corrente passa com menor resistência e ignora os demais botões.
Arduino - Vários botões em um mesmo pino - 02
Esse vídeo mostra como ligar vários botões na mesma entrada analógica do Arduino. ao contrário do outro vídeo, esse mostra como fazer para que seja reconhecida múltiplas entradas simultaneamente.
link para planilha: https://docs.google.com/spreadsheet/ccc?key=0AtZzXhiNwNSrdEFqNUpUUXM4MV9vZURINmR1WUhmeXc&usp=sharing#gid=0
int PIN_ENTRADA = A0; int PIN_SAIDA_1 = 3; int PIN_SAIDA_2 = 4; int PIN_SAIDA_3 = 5; int PIN_SAIDA_4 = 6; void setup(void) { Serial.begin(9600); pinMode(PIN_SAIDA_1, OUTPUT); pinMode(PIN_SAIDA_2, OUTPUT); pinMode(PIN_SAIDA_3, OUTPUT); pinMode(PIN_SAIDA_4, OUTPUT); } void loop(void) { int val_entrada = analogRead(PIN_ENTRADA); float voltagem = val_entrada * (5 / 1023.0); Serial.println(voltagem); trataEntrada(voltagem); delay(100); } void trataEntrada(float v){ int led1, led2, led3, led4; led1 = led2 = led3 = led4 = 0; if (v >= 0.40 && v < 0.84) {led1 = 0; led2 = 0; led3 = 0; led4 = 1;} if (v >= 0.84 && v < 1.21) {led1 = 0; led2 = 0; led3 = 1; led4 = 0;} if (v >= 1.21 && v < 1.56) {led1 = 0; led2 = 0; led3 = 1; led4 = 1;} if (v >= 1.56 && v < 1.83) {led1 = 0; led2 = 1; led3 = 0; led4 = 0;} if (v >= 1.83 && v < 2.06) {led1 = 0; led2 = 1; led3 = 0; led4 = 1;} if (v >= 2.06 && v < 2.25) {led1 = 0; led2 = 1; led3 = 1; led4 = 0;} if (v >= 2.25 && v < 2.44) {led1 = 0; led2 = 1; led3 = 1; led4 = 1;} if (v >= 2.44 && v < 2.60) {led1 = 1; led2 = 0; led3 = 0; led4 = 0;} if (v >= 2.60 && v < 2.73) {led1 = 1; led2 = 0; led3 = 0; led4 = 1;} if (v >= 2.73 && v < 2.85) {led1 = 1; led2 = 0; led3 = 1; led4 = 0;} if (v >= 2.85 && v < 2.96) {led1 = 1; led2 = 0; led3 = 1; led4 = 1;} if (v >= 2.96 && v < 3.06) {led1 = 1; led2 = 1; led3 = 0; led4 = 0;} if (v >= 3.06 && v < 3.15) {led1 = 1; led2 = 1; led3 = 0; led4 = 1;} if (v >= 3.15 && v < 3.23) {led1 = 1; led2 = 1; led3 = 1; led4 = 0;} if (v >= 3.23 && v < 5.00) {led1 = 1; led2 = 1; led3 = 1; led4 = 1;} if (led1) { digitalWrite(PIN_SAIDA_1, HIGH); } else { digitalWrite(PIN_SAIDA_1, LOW); } if (led2) { digitalWrite(PIN_SAIDA_2, HIGH); } else { digitalWrite(PIN_SAIDA_2, LOW); } if (led3) { digitalWrite(PIN_SAIDA_3, HIGH); } else { digitalWrite(PIN_SAIDA_3, LOW); } if (led4) { digitalWrite(PIN_SAIDA_4, HIGH); } else { digitalWrite(PIN_SAIDA_4, LOW); } }
Arduino - vários botões no mesmo pino - 03 - com on/off
Código Fonte:
int PIN_ENTRADA = A0; int PIN_SAIDA_1 = 8; int PIN_SAIDA_2 = 9; int PIN_SAIDA_3 = 10; int PIN_SAIDA_4 = 11; float vcc = 5; float modo_1_voltagem = 4.55; // 100 / (100+10) * 5 float modo_2_voltagem = 4.16; // 100 / (100+20) * 5 float modo_3_voltagem = 3.84; // 100 / (100+30) * 5 float modo_4_voltagem = 3.57; // 100 / (100+40) * 5 int modo_saida = 0; //0: desliga //variaveis para controle de liga e desliga const long DEBOUNCE_DELAY = 100; int pino_anterior = 0; //armazena o status da leitura no loop anterior int pino_anterior_db = 0; long time_ultimo_debounce = 0; int debounce_ok = 1; void setup(void) { Serial.begin(9600); pinMode(PIN_ENTRADA, INPUT); pinMode(PIN_SAIDA_1, OUTPUT); pinMode(PIN_SAIDA_2, OUTPUT); pinMode(PIN_SAIDA_3, OUTPUT); pinMode(PIN_SAIDA_4, OUTPUT); } void loop(void) { int val_entrada = analogRead(PIN_ENTRADA); float voltagem = val_entrada * (vcc / 1023.0); setModoSaida(voltagem); mostraSaida(); if (voltagem > 2.00) { //Serial.println(voltagem); } delay(10); } void setModoSaida(float v){ modo_saida = 0; if (( v >= ( (modo_1_voltagem + modo_2_voltagem)/2) )) { modo_saida = 1; } if (( v >= ( (modo_2_voltagem + modo_3_voltagem)/2 )) && ( v < ( (modo_1_voltagem + modo_2_voltagem)/2) )) { modo_saida = 2; } if (( v >= ( (modo_3_voltagem + modo_4_voltagem)/2 )) && ( v < ( (modo_2_voltagem + modo_3_voltagem)/2) )) { modo_saida = 3; } if (( v >= ( modo_4_voltagem * 0.9 )) && ( v < ( (modo_3_voltagem + modo_4_voltagem)/2) )) { modo_saida = 4; } } void mostraSaida(){ int pino = 0; if (modo_saida == 0) { pino = 0; } if (modo_saida == 1) { pino = PIN_SAIDA_1; } if (modo_saida == 2) { pino = PIN_SAIDA_2; } if (modo_saida == 3) { pino = PIN_SAIDA_3; } if (modo_saida == 4) { pino = PIN_SAIDA_4; } if ( pino != pino_anterior ) { time_ultimo_debounce = millis(); debounce_ok = 0; } if ( (millis() - time_ultimo_debounce) > DEBOUNCE_DELAY ) { debounce_ok = 1; } Serial.print("pino: " ); Serial.print(pino); Serial.print(" - pino ant: "); Serial.print(pino_anterior); Serial.print(" - pino ant db: "); Serial.print(pino_anterior_db); Serial.println(""); if (debounce_ok == 1){ if (pino > 0 && pino_anterior_db == 0){ digitalWrite(pino, !digitalRead(pino)); } pino_anterior_db = pino; } else { pino_anterior_db = 0; pino_anterior = 0; } pino_anterior = pino; }
Ola tudo bem? meu nome e Victor
ResponderExcluirgostaria de saber se tem com ligar 14 chaves tactil em 14 Leds
da mesma forma que você fez no seu vídeo.
PARABENS PELOS PROJETOS , SEMPRE ACOMPANHO SEU VIDEOS
ResponderExcluirAPROVEITANDO ... ESTOU COM UM PROBLEMA EM UM CODIGO GOSTARIA DE SABER SE VOCE TERIA
UM TEMPINHO PRA DAR UMA OLHADA
MEU NOME E LAZARO WHATS (41)985089362