Como incializar um botão e deixa-lo ino perante até o acionamento de outro? ( Intertravamentos)

Ola galera, estou com uma dúvida aqui, estou tentando criar uma programação com um botão que possa ser inicializado uma única vez(button1) e só poderá inicializado após eu apertar o botão desliga(button2), para assim  não ocorrer que o botão de liga possa interromper o ciclo), segue a linha de código para analise, desde já vlw pela ajuda ;)

int ledmotor1 = 11; //estrela
int ledmotor2 = 10; // triangulo
int button1 = 2;
int button2 = 3;

void setup() {
pinMode(ledmotor1, OUTPUT);
pinMode(ledmotor2, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}

void loop() {
int state1 = digitalRead(button1);
if ( state1 == HIGH )
{
changemotor();
}
int state2 = digitalRead(button2);
if (state2 == HIGH ) {
desliga();
}
}
void changemotor() {
digitalWrite(ledmotor1, HIGH);
digitalWrite(ledmotor2, LOW);
delay(5000);
digitalWrite(ledmotor1, LOW);
delay(500);
digitalWrite(ledmotor2, HIGH);

}
void desliga() {
digitalWrite(ledmotor1, LOW);
digitalWrite(ledmotor2, LOW);

}

Exibições: 395

Responder esta

Respostas a este tópico

No if coloque assim

int state1 = digitalRead(button1);

int state2 = digitalRead(button2);
if(state1==High && state2==Low){
{
changemotor();
}

if (state2 == HIGH && state1==Low) {
desliga();
}

Boa Noite IIqner Aparecido, valeu pela força amigão, mas infelizmente ainda continua ocorrendoo acionamento do botão, o que eu realmente preciso que após o acionamento uma unica vez do botão (button1) o mesmo se torne inoperante e possa voltar a funcionar quando eu acionar o botão 2 (button2)ou se possivel eles possa funcionar como o botão liga e depois ele se torne um botão de desligamento no proximo toque alguma idéa? Muito Obrigado pela ajuda, abraços;

static int flag=1;

int state1 = digitalRead(button1);

int state2 = digitalRead(button2);
if(state1==High && state2==Low &&  flag == 1){
{
changemotor();

flag=0;
}

if (state2 == HIGH && state1==Low)

{
desliga();

flag=1;
}

Boa Noite Jucelei Freitas, cara Muito Obrigado, está bem próximo disso, está bem proximo disso mesmo cara, agora gostaria de pedir só mais uma ajudinha, como poderia fazer para que o botão desliga possa desligar a qualquer momento? agradeço mesmo pela ajuda amigos, abraços;

int motorestrela = 10;
int motortriangulo = 9;
int button1 = 2;
int button2 = 3;

void setup(){
pinMode(motorestrela, OUTPUT);
pinMode(motortriangulo, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void loop() {
static int flag=1;
int state1 = digitalRead(button1);
int state2 = digitalRead(button2);

if(state1==HIGH && flag == 1)
{
changemotor();
flag=0;
}
if (state2 == HIGH && flag ==0)
{
desliga();
flag = 1;
}
}
void changemotor() {
digitalWrite(motorestrela, HIGH);
delay(5000);
digitalWrite(motorestrela, LOW);
delay(250);
digitalWrite(motortriangulo, HIGH);
}
void desliga() {
digitalWrite(motortriangulo, LOW);
digitalWrite(motorestrela, LOW);
}

è só tirar o  state1==Low fica assim:

static int flag=1;

int state1 = digitalRead(button1);

int state2 = digitalRead(button2);
if(state1==High &&   flag == 1){
{
changemotor();

flag=0;
}

if (state2 == HIGH )

{
desliga();

flag=1;
}

olha como ficou

int motorestrela = 10;
int motortriangulo = 9;
int button1 = 2;
int button2 = 3;
static int flag=1;
void setup(){
pinMode(motorestrela, OUTPUT);
pinMode(motortriangulo, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void loop() {
int state1 = digitalRead(button1);
int state2 = digitalRead(button2);

if(state1==HIGH && flag == 1)
{
changemotor();
flag=0;
}
if (state2 == HIGH && flag ==0)
{
desliga();
flag = 1;
}
}
void changemotor() {
digitalWrite(motorestrela, HIGH);
delay(5000);
digitalWrite(motorestrela, LOW);
delay(250);
digitalWrite(motortriangulo, HIGH);
}
void desliga() {
digitalWrite(motortriangulo, LOW);
digitalWrite(motorestrela, LOW);
}

ainda não houve mudanças, eu preciso que o button2 funcione a qualuqer momento que precisar e o button1 acione uma unca vez,

assim :

int motorestrela = 10;
int motortriangulo = 9;
int button1 = 2;
int button2 = 3;
static int flag=1;
void setup(){
pinMode(motorestrela, OUTPUT);
pinMode(motortriangulo, OUTPUT);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void loop() {
int state1 = digitalRead(button1);
int state2 = digitalRead(button2);

if(state1==HIGH && flag == 1)
{
changemotor();
flag=0;

delay(15);

}
if (state2 == HIGH)
{
desliga();
flag = 1;

delay(15);
}
}
void changemotor() {
digitalWrite(motorestrela, HIGH);
delay(5000);
digitalWrite(motorestrela, LOW);
delay(250); 
digitalWrite(motortriangulo, HIGH);
}
void desliga() {
digitalWrite(motortriangulo, LOW);
digitalWrite(motorestrela, LOW);
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço