msoliver
(usa Debian)
Enviado em 25/04/2021 - 17:56h
ledufree escreveu:
Fala galera, boa noite! Estou usando um Arduino Leonardo para executar alguns teclas função do windows ao receber comandos externos. Fiz a seguinte programação:
#include <Keyboard.h>
void setup() {
pinMode(9,INPUT_PULLUP);
pinMode(10,INPUT_PULLUP);
pinMode(11,INPUT_PULLUP);
}
void loop() {
Keyboard.begin();
if (digitalRead(9) == 0){
Keyboard.press(0xC2);
delay(200);
Keyboard.releaseAll();}
if (digitalRead(10) == 0){
Keyboard.press(0xC3);
delay(200);
Keyboard.releaseAll();}
if (digitalRead(11) == 0){
Keyboard.press(0xC4);
delay(200);
Keyboard.releaseAll();}
Keyboard.end();
}
O que eu precisava implementar ai é o seguinte, que um dos comandos só fosse executado se outro for executado antes. Pra ser mais didático:
acionou pino 9 clicou F5;
acionou pino 9 de novo só clica F5 depois que acionar o pino 10;
acionou pino 10 clicou F6;
acionou pino 10 de novo só clicou F6 depois que acionar o pino 9, ou 11;
Mesmo tendo acionamento varias vezes só se repita o comando depois de acionar outro pino,tipo um rodizio!
E se não for aproveitar muito da bondade, teria como o Arduíno entender que um programa X está na tela do windows ai executar os comandos, se o programa for minimizado por exemplo, mesmo que acionado os pinos, ele não gere o comando?
Será que alguém consegue me dar um help? Sou bem iniciante em programação de Arduíno, desde já agradeço!
Boa tarde,.
Mexi com arduino, somente 1 vez, e, muito rápido, pouco sei sobre a programação do mesmo....
Mas, segue uma dica genérica:
Crie uma variável, exemplo: pinoacionado="000"
Para cada "pino", defina um valor,
Tipo: p09, p10, p11
Ao acionar um pino,
cheque se o "valor do pino" é igual a "pinoacionado"
Simulação:
pinoacionado='"000";
valor_Pino09="p09";
valor_Pino10="p10";
valor_Pino11="p11";
-------------------------
Primeira execução, executa, pinoacionado=000
1º pino acionado:
p10
if(valor_Pino10 != pinoacionado){
pinoacionado=valor_Pino10
executa o código
}else
nao executa
}
Se pressionar p10 novamente....
Código não é executado, pois,
o valor de pinoacionado="p10"
Acionando qquer outro pino,
o código é executado.
-----------------------------
if (digitalRead(10) == 0){
if(valor_Pino10 != pinoacionado){
pinoacionado=valor_Pino10
Keyboard.press(0xC3);
delay(200);
Keyboard.releaseAll();
}
}
-----------------------------
Deve funcionar......
______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando:
lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:
Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.
______________________________________________________________________