Olá, estou tentando criar um programa no arduino que é o seguinte: Há um botão, um motor com ponte H, e duas chaves fim de curso.

Eu aperto o botão, o motor gira para um lado e só para quando chegar na chave fim de curso. Se eu apertar denovo o MESMO botão, ele gira para o outro lado, e só para quando chegar na chave fim de curso 2. Como eu poderia fazer isso? 

Não sei como seria a parte do botão apenas, pois ele teria que saber se o motor já foi para um lado para poder girar para o outro na próxima vez que pressionado. 

Seria mais ou menos um modo de acionar duas cargas num mesmo botão, do tipo, aperta e o led vermelho acende, e se apertar denovo, o led amarelo acende, ficando nesse ciclo, e sempre nessa ordem. 

Nao entendo muito disso, por isso estou tendo dificuldade. 

Se puderem me ajudar eu agradeço. 

Exibições: 1878

Responder esta

Respostas a este tópico

int botao1 = 1;
int fimdecurso1= 2;
int fimdecurso2 = 3;
int motor = 4;
int ladodireito = 5;
int ladoesquerdo = 6;



void setup() {
pinMode (botao1, INPUT);
pinMode (fimdecurso1, INPUT);
pinMode (fimdecurso2, INPUT);
pinMode (motor, OUTPUT);
pinMode (ladodireito, OUTPUT);
pinMode (ladoesquerdo, OUTPUT);
}

void loop() {
if (digitalRead (botao1) == HIGH && digitalRead (fimdecurso1) == HIGH) { // Se botao pressionado E fim de curso 1, vai para lado direito

digitalWrite (motor, HIGH);
digitalWrite (ladodireito, HIGH);
digitalWrite (ladoesquerdo, LOW);
}
if (digitalRead (botao1) == HIGH && digitalRead (fimdecurso2) == LOW) { // Se botao pressionado E fim de curso 2, vai para lado esquerdo
digitalWrite (motor, HIGH);
digitalWrite (ladodireito, LOW);
digitalWrite (ladoesquerdo, HIGH);
}

}

Faz sentido?

acho q o q vc quer eh isso

int botao = 13;
int final_curso_1 = 12;
int final_curso_2 = 11;
int motor_direito = 10;
int motor_esquerdo = 10;
boolean libera_direito = true;
boolean libera_esquerdo = false;
boolean vira_motor_direito = false;
boolean vira_motor_esquerdo = false;


void setup()
{
  pinMode(botao,INPUT);
  pinMode(final_curso_1,INPUT);
  pinMode(final_curso_2,INPUT);
  pinMode(motor_direito,OUTPUT);
  pinMode(motor_esquerdo,OUTPUT);
}

void loop()
{
  if(digitalRead(botao) == HIGH && libera_direito == true)
  {
    vira_motor_direito = true;
    libera_direito = false;
    libera_esquerdo = true;
  }else{
    vira_motor_direito = false;
    libera_direito = true;
    libera_esquerdo = false;
  }
 
  if(vira_motor_direito == true)
  {
    if(digitalRead(final_curso_1 == LOW)
    {
      digitalWrite(motor_direito,HIGH);
    }else{
      digitalWrite(motor_direito,LOW);
    }
  }
  if(vira_motor_esquerdo == true)
  {
    if(digitalRead(final_curso_2 == LOW)
    {
      digitalWrite(motor_esquerdo,HIGH);
    }else{
      digitalWrite(motor_esquerdo,LOW);
    }
  }
}

nao testei mas veja ai se funciona qq coisa me avise ok

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço