ME AJUDEM POR FAVOR.....
Pessoal estou fazendo um trabalho para o meu curso onde devo fazer um elevador com 3 andares, ou seja, térreo, 1º e 2º andar.
A principio é algo simples, como:
- Utilizar 3 botões respectivos para o andar.
- 1 entrada do Arduino para receber o final da micro chave
Eu fiz uma programação, que na teoria daria certo, mas....... Não deu!
Tentei enganar ela com um "while", mas, também não consegui.
Quais componentes estou utilizando ?
- Arduino Uno R3.
- Ponte H l298N.
- Motor DC.
- Botões, push botton.
- Micro Chave.
Segue a programação que eu fiz......
//CONFIGURANDO SENTIDO DO MOTOR
// MOTOR IN1 IN2
// HORARIO 5V GND
// ANTI-HORARIO GND 5V
// PONTO MORTO GND GND
// FREIO 5V 5V
// SENTIDOS ADOTADOS:
// Horario - DESCE
// Anti-Horario - SOBE
//Sinal para Ponte H L298N
int LeftPin = 2;
int RightPin = 3;
//Pisos
int con = 0;
//Piso actual
int act = 1;
//Piso destino
int nue = 0;
//Piso destino test
int test = 0;
//Sensor para detectar los pisos
const int buttonPin = 8; //Fim de curso, único para todos os andares. Te´ramum fim de curso para cada andar, porem a entrada no arduino será a mesma.
int buttonState = 0;
//Botoes dos Andares
#define botao1 4
#define botao2 5
#define botao3 6
int botao_1 = 1;
int botao_2 = 1;
int botao_3 = 1;
int velocidadeA = 7; // velocidade
void setup()
{
Serial.begin(9600);
pinMode(LeftPin, OUTPUT);
pinMode(RightPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode (botao1, INPUT);
pinMode (botao2, INPUT);
pinMode (botao3, INPUT);
pinMode (velocidadeA, INPUT);
}
void loop()
{
// if (Serial.available() != 0)
while (((botao_1 = digitalRead (botao1)) and (botao_2 = digitalRead (botao2)) and (botao_3 = digitalRead (botao3))) == 0) // espera que um botao seja precionado
{
// Digite novo piso
nue = '0';
if (botao_1 == 0)
{
nue = '1';
}
if (botao_1 == 0)
{
nue = '2';
}
if (botao_3 == 0)
{
nue = '3';
}
}
Serial.print("andar ");
Serial.println(nue);
// Se o elevador está a ser movido
if (nue != 0)
{
// Operações para detectar novo nÃÂvel
// E sabe quantos pulsos (andares) omitir para chegar ao destino
con = nue - act;
act = nue;
nue = 0;
// Para mais baixo
if (con < 0)
{
//Converter o resultado para positivo
con *= -1;
// Sai-ligar o motor
digitalWrite(LeftPin, HIGH);
digitalWrite(RightPin, LOW);
delay(100);
}
//Caso de subir
else
{
if (con > 0)
{
//Fazer o motor chegar no andar.
digitalWrite(LeftPin, LOW);
digitalWrite(RightPin, HIGH);
delay(700);
}
}
}
}
void parar()
{
// Se voce ainda nao chegar ao destino
if (con != 0)
{
//Esperar pulso (Andar)
buttonState = digitalRead(buttonPin);
//Se detecta o pulso
if (buttonState == HIGH)
{
// Subtrair um contador
con--;
//ja chegou ao destino? para o motor
if (con <= 0)
{
digitalWrite(LeftPin, LOW);
digitalWrite(RightPin, LOW);
}
// Da tempo para pular de pulso e up / down
else
{
delay(100);
}
}
}
}//Fin do loop