boa noite , gostaria de saber se voces poderiam me ajudar ,preciso usar a função mil lis com sensor touch

gostaria de dar um toque e ele acender um LED,da dois toque e ele apagar o LED poderiam me ajudar ?

Exibições: 231

Responder esta

Respostas a este tópico

Boa noite. Associa o pino sig a uma interrupção. Quando houver toque, na rotina da interrupção, grave o tempo com millis e calcule a diferença em relação ao registro de tempo anterior. Se a diferença for maior que um valor, houve um toque. Se a diferença for menor que o mesmo valor, houve dois toques. Essa é a ideia central mas precisa de mais refinamento pra implementar.

mestre ,quanto cobraria pra fazer esse programinha ?

#define pinBotao 2
#define Led 13

int numero;
boolean botaoAtu = false;
boolean botaoAnt = false;

void setup() {
pinMode(pinBotao, INPUT);
pinMode(Led, OUTPUT);
digitalWrite(Led, LOW);
}

void loop() {

botaoAtu = digitalRead(pinBotao);

if (botaoAtu && !botaoAnt) {
numero++;
if (numero > 2) {
numero = 0;
}
}
botaoAnt = botaoAtu;

switch (numero) {
case 0:
digitalWrite(Led, HIGH);
break;

case 2:
digitalWrite(Led, LOW);
break;

}
}

eu testei aqui no meu sensor capacitivo assim e funcionou de boa

Nossa bom dia , vai me ajudar muito obrigado ,vou compartilhar com outra passoas assim continua o seu legado de compartilhar o seu conhecimento obrigado bom dia 

Uns comentários sobre esse código:

1) um clique, depois dois cliques, depois um clique, depois dois cliques, nesta sequencia, é exigido nesta implementação. Não é possível fazer dois cliques, depois dois cliques porque o código vai entender um clique, dois cliques, um clique.

2) Se o dois cliques for pra ser interpretado como um clique duplo como no mouse, tem que mudar a abordagem.

Interpretei certo?

Olha só amigo o vídeo deu fazendo testes no sensor capacitivo, como vc perguntou, da um toque ligar o led e dois toques desliga o mesmo led, usei a porta 13 do Arduino como teste saca só ele funcionando no vídeo

https://youtu.be/x35qY5knI8Q

Entendi. Com certeza funciona!

Na configuração do meu sensor estou usando ele como pulso e não é retenção

olá Francikleber.

        Estou postando uma implementação para sua questão. Esta implementação foi feita através de uma Máquina de Estados (vou chamá-la de "ME", para simplificar). Para tal, as seguintes observações devem ser consideradas:

1) no Hardware um Arduino UNO foi utilizado. Em um pino está conectado um LED, que indica o resultado das ações realizadas. Em outro pino está conectado um botão (Push-Bottom). Este simulará o toque. Utilizei um botão, porque achei "esquisita" a implementação do sensor de toque que encontrei para o Proteus. Caso queira utilizar o sensor, vc pode obtê-lo neste link:    Lib Proteus para Sensor de Toque Capacitivo  ,  onde também encontrará diversos outras implementações legais para o Proteus.

2) observe que o sensor TTP223 tem quatro modos de configuração possíveis. Em alguns módulos existentes no mercado, estas configurações são geralmente feitas em jumpers nas plaquinhas. A implementação que fiz, assume que o módulo está na sua configuração padrão, na qual ao ocorrer um toque, o TTP223 emite um pulso em "1" ("HIGH" para o Arduino) por um período de tempo fixo (infelizmente só consta no datasheet do TTP223 a informação sobre a latência para emissão desses pulsos, mas não há informação sobre a duração dos mesmos). O módulo considerado, pode ser algo como o mostrado na figura a seguir (esta não tem os jumpers de configuração):

3) A "inteligência" da "ME", permite identificar diversas ocorrências. Por exemplo se vc der 2 toques desligando o LED, e em seguida der novamente 2 toques, então a "ME" consegue tratar isso adequadamente e mantém o LED desligado. Da mesma forma se vc der 1 toque ligando o LED, e em seguida der novamente 1 toque, a "ME" mantém o LED ligado.

4) Como bem salientou o Vitor Augusto no início do seu post, é preciso distinguir  "1 toque" de "2 toques", o que é feito pelo intervalo de tempo entre toques consecutivos. No código do programa, este intervalo é a constante "Intervalo", que mostro na figura a seguir:

        Observe que no código, vc pode especificar intervalos fracionários, como por exemplo 0.25 segundos.

        Se o intervalo entre toques consecutivos for menor que o tempo definido para a constante "Intervalo", a "ME" saberá que se trata da informação "2 toques". Do contrário, ela saberá que se trata de "1 toque".
        Assim, ajuste a constante "Intervalo" no código, da forma que vc achar mais adequada. Mas vai uma dica: se colocar curto demais, corre o risco da "ME" entender como "1 toque" quase sempre. Se colocar longo demais, a "ME" nunca vai errar, mas vai demorar mais para que ela
responda o seu comando. Assim, somente depois de transcorrido o período de tempo dado por "Intervalo", é que a "ME" interpreta o "1 toque", o que causa um "lag" de tempo na resposta. Do ponto de vista humano, isto pode ser bem tolerável, se vc não exagerar no "Intervalo". Por exemplo, no código eu deixei esse tempo como 1.5 segundos (um segundo e meio).
        Já para o "2 toques", a resposta é "instantânea", pela própria interpretação lógica da ação.


        No arquivo "zip" anexado a este post, vc encontrará o código do Arduino, o Diagrama de Estados ("DE") da Máquina de Estados (em PDF e no formato "Visio"), e toda a implementação feita no Proteus, em pastas devidamente identificadas. A implementação feita no Proteus foi testada e funcionou exatamente como proposto.


        O Diagrama de Estados ("DE") da Máquina de Estados é mostrado na figura a seguir, e observe como é simples (clique na figura para obter "zoom"):

        O circuito implementado no Proteus, é mostrado na figura a seguir:

        Você vai observar que a implementação do código do Arduino é bastante simples, e vc pode usá-la como base para implementar suas próprias Máquinas de Estados.

        Fico à disposição para quaisquer dúvidas que vc ou outros Garagistas possam ter relacionados à implementação.

        Espero que aprecie. Abrçs,

        Elcids

anexado zip para a implementação:  Maquina_francikleber_01.zip

Certo! Funciona como eu tinha imaginado quando eu li a pergunta.

MESTRES AJUDOU MUITO MUITO MESMO , MUITO OBRIGADO , GOSTARIA DE SABER SE PODERIA ENVIAR UM CONTATO PRA FAZER UM ORÇAMENTO PRA MIM , CASO INTERESSE PODE ENVIAR SEU CONTATO OU MANDAR AQUI NO EMAIL LIVINMOVEIS@GMAIL.COM OBRIGADO 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço