arduino executar função no pc apos precionado botão

Bom dia senhores, estou precisando fazer meu arduino nano executar um programa no pc quando apertado um pushbutton aguem pode ajudar. Desde ja agradeço.

Exibições: 1609

Responder esta

Respostas a este tópico

Boa noite. 

O que vem a mente, é você ficar escutando a serial, e quando teu arduino mandar um comando pela mesma o teu pc execute tal programa.

Para isso você precisaria de um programa para escutar a porta serial. 

Você programa em alguma linguagem?

Bom dia Vitor, ja tenho o programa a ser executado, mas não tenho ideia de como fazer o Arduino executar o mesmo. O projeto real se consiste em assim que um botao ligado ao arduino seja precionado ele execute esse programa, ja até deixei ele travado em uma porta com mas nao faço ideia de como montar o esboço para isso.

Bom dia Paulo.

Amigo como o Sr. Eduardo responde logo abaixo, além do programa a ser executado é necessário alguém que faça o meio de campo, ou seja receba a mensagem do teu Arduino, e mande executar o teu programa. Ou seja um programa.

A estrutura que eu penso aqui fica assim:

Arduino monitorando uma porta esperando o acionamento de tal botão.

Exemplo no site arduino.cc

Se botão pressionado Arduino envia uma mensagem (talvez através da própria serial integrada) para o computador.

Exemplo no site arduino.cc de comunicação entre arduino e PC (utili...

Por sua vez o computador tem um programa que fica monitorando o canal de comunicação (eu utilizaria a serial). Caso receba alguma mensagem e a mensagem coincida com a mensagem esperada, executa tal programa.

Enfim, é necessário que se "ensine" ao Arduino e ao PC o que fazer, dai que entra as linguagens de programação.

Então, como o colega disse, o PC não aceita ordens senão do usuário... 

Vc teria que fazer um programa que roda esse tal programa condicionalmente, conforme o lugar que vc ligou no PC. O mais usual é na serial. Pode ser tb um HID (dispositivo de interface humana como joystick, teclado e mouse) ou ainda porta paralela, etc. Qq lugar que seu programa no PC possa ler.

Ele quando receber o comando executa o tal programa. 

Basicamente em qualquer linguagem vc consegue fazer um programa que fica em segundo plano e quando for o momento usa a função do windows: 

https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-win...

Para disparar um outro executável.

Pelo que acabo de ler essa função está em desuso.. Arrumaram outro nome pra ela:

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/conte...

Boa tarde Giliardi, fiz exatamento como dito entretanto o programa "notepad" nao executa como teste estou fazendo exatamente como você disse, quando abro o monitor serial diz que a informação esta sendo enviada, mais nada acontece.

A ideia do projeto é montar um sistema onde quando pressionar o botao ele execute um programa de desligamento do compudador de uma maneira segura, outra coisa que quero colocar no  mesmo sistema seria um rele que apos um delay de 15 segudos tambem desligue um rele que esta no sistema, apos precionado o botão novamente acione o rele religando todo o sistema

sim funcionou agora estou quebrando a cabeça para fazer um programa de shutdown e ainda preciso colocar as funcoes no botao como te disse quando precionar ele ira desligar o computador e apos de 10 a 15 segundos desligar um rele se puder me ajudar com o codigo vou agradecer. 

O shutdown é nativo do windows.

rode o cmd e depois 

shutdown /?

shutdown /s desliga.. algo assim.

bom dia Giliard, tudo ok fiz um programinha em vb que executa o shutdown, agora é só inserir a segunda parte da função, quando pressionado o mesmo botão apos 15 segundo desligar um rele e quando pressionar novamente religar o rele

 

Boa tarde Giliard, segue abaixo o codigo que adaptei para a função que eu gostaria que executasse, estou tendo o seguinte problema.

o sistema ja inicia com o rele ligado quando aperto o botao chama a função no pc e apos 15 segundo desliga o rele, até ai tudo ok.

mas o rele volta a ligar sozinho, isso era para ocorrer apenas quando eu apertasse o botao novamente. teria uma forma de isso acontecer?

segue o codigo;

const String programa = "shutdown"; 
char buffer[128];


const int chave = 2; 
const int rele = 5;


volatile int counter = 0;

void setup() {
Serial.begin(9600);
Serial.flush();
pinMode(chave, INPUT_PULLUP);
pinMode (5, OUTPUT );
attachInterrupt(0, inc, RISING);
Serial.println("Inicializado...");
}
void inc() {
counter++;
if (counter == 2) {
counter = 0;
}
}
void loop() {
if (counter == 1) {
digitalWrite (5,HIGH);
delay (50);
if (!digitalRead(chave)){
delay(200);
if (!digitalRead(chave)){
sprintf (buffer, "#2cmd:%s#3", programa.c_str());
Serial.println(buffer); 
delay (10000);
digitalWrite (5,LOW);
}
delay (100);
}

else if (counter == 2){
digitalWrite (5,HIGH);


}


}
}

Bom dia senhores venho novamente pedir ajuda com meu projeto. Bom o codigo esta funcionando tudo ok entretanto nao estou usando um pushbutton  e sim uma chave com mola que funciona da mesma forma, entretanto como podem ver no codigo abaixo o sistema envia o comando para o pc executando a função de chamar o programa ,coloquei um delay para desligar o rele apos 10 segundos e quando aperto novamente ele liga o rele.

O problema é que ele executa a função 1 ( mandar comando e desligar rele duas veses) como como resolver isso? 

codigo usado;


const String programa = "shutdown";
char buffer[128];


const int chave = 2;
const int rele = 5;


volatile int counter = 0;

void setup() {
Serial.begin(9600);
Serial.flush();
pinMode(chave, INPUT_PULLUP);
pinMode (5, OUTPUT );
attachInterrupt(0, inc, RISING);
Serial.println("Inicializado...");
}
void inc() {
counter++;
if (counter == 2) {
counter = 0;
}
}
void loop() {
if (counter == 1) {
digitalWrite (5,HIGH);
delay (50);
if (!digitalRead(chave)){
delay(200);
if (!digitalRead(chave)){
sprintf (buffer, "#2cmd:%s#3", programa.c_str());
Serial.println(buffer);
delay (10000);
digitalWrite (5,LOW);
}
delay (100);
}

else if (counter == 2){
digitalWrite (5,HIGH);


}


}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço