Boa Tarde Pessoal,
Estou montando meu TCC, e estou com dificuldades para fazer uma programação onde, um Sensor de chuva ao detectar a chuva, faz um Motor Dc fechar uma "Janela". vou postar a programação separada e o funcionamento aqui:
Motor Dc (faz o motor girar no sentido horário e anti horário ao apertar um botão, e controla a velocidade com um potenciômetro):
int sensorPin = A0; //Potenciometro
int btInverter = A1; //Botão de inversao
int enable = 11; //Enable do circuito 1
int motorInput1= 12; //Motor pino 1
int motorInput2 = 13; //Motor pino 2
int tempPress = 0; //temporario de verificacao de botao pressionado
int direcao = 0; //direcao do motor (1 e 0)
void setup() {
//defino os canais de saida
pinMode(motorInput1, OUTPUT);
pinMode(motorInput2, OUTPUT);
//sentido de rotacao
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
}
void loop() {
int sensorValue = analogRead(sensorPin);
int outputValue = map(sensorValue, 0, 1023, 0, 255);
//pino Enable baseado no valor do potenciometro (controle de potencia)
analogWrite(enable, outputValue);
//se o botao de inversao for pressionado
if(digitalRead(btInverter)==HIGH){
//verifica se o botao ja nao estava pressionado.
if(tempPress == 0){
//verifica a direcao atual e inverte
if(direcao == 0){
digitalWrite(motorInput1, LOW);
digitalWrite(motorInput2, HIGH);
direcao = 1;
}else{
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
direcao = 0;
}
tempPress = 1;
}
}else{
tempPress = 0;
}
delay(100);
}
Sensor de chuva (quando cai água no sensor, aciona um buzzer):
int bip = 2;
int sensordechuva = 3;
void setup()
{
pinMode(bip,OUTPUT);
pinMode(sensordechuva,INPUT);
}
void loop()
{
if(digitalRead(sensordechuva) == 0)
{
digitalWrite(bip,HIGH);
delay(500);
digitalWrite(bip,LOW);
}
else
{
digitalWrite(bip,LOW);
}
delay(500);
}
Tags:
Nathalia,
Como você esqueceu de postar o código de acionamento do motor eu vou apenas indicar as partes que você deve incluir nele.
NO INÍCIO:
int sensordechuva = 3; // TENHA CERTEZA QUE ESSE PINO NÃO É USADO NO SKETCH DO MOTOR!!!!
NO SETUP:
pinMode(sensordechuva,INPUT);
NO VOID LOOP:
if(digitalRead(sensordechuva) == 0)
{
**** AQUI VOCÊ ADICIONA A LINHA OU CHAMA A ROTINA QUE ACIONA O MOTOR PRA FECHAR
}
else
{
**** AQUI VOCÊ ADICIONA A LINHA OU CHAMA A ROTINA QUE ACIONA O MOTOR PRA ABRIR
}
fiz como você disse, mas o motor não esta girando, ele é acionado mas não começa a girar...
int sensorPin = A0; //Potenciometro
int btInverter = A1; //Botão de inversao
int enable = 11; //Enable do circuito 1
int motorInput1= 12; //Motor pino 1
int motorInput2 = 13; //Motor pino 2
int sensordechuva = 3; //sensor de chuva
int tempPress = 0; //temporario de verificacao de botao pressionado
int direcao = 0; //direcao do motor (1 e 0)
void setup() {
//defino os canais de saida
pinMode(motorInput1, OUTPUT);
pinMode(motorInput2, OUTPUT);
pinMode(sensordechuva,INPUT);
//sentido de rotacao
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
}
void loop() {
int sensorValue = analogRead(sensorPin);
int outputValue = map(sensorValue, 0, 1023, 0, 255);
//pino Enable baseado no valor do potenciometro (controle de potencia)
analogWrite(enable, outputValue);
//se o botao de inversao for pressionado
if(digitalRead(sensordechuva) == 0)
{
//verifica a direcao atual e inverte
if(direcao == 0){
digitalWrite(motorInput1, LOW);
digitalWrite(motorInput2, HIGH);
direcao = 1;
}else{
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
direcao = 0;
}
tempPress = 1;
}
else
tempPress = 1;
}
Olá,
Tenta agora, do jeito que estava ele revertia o motor cada vez que o pino 3 estivesse em LOW.
Como eu não sei qual o motor fecha com input1 em HIGH ou LOW e input 2 em LOW ou HIGH, talvez tenha que inverter as linhas de acionamento no if / else, ou apenas inverter os fios do motor caso o motor comece a girar invertido.
Abraço.
int sensorPin = A0; //Potenciometro
int btInverter = A1; //Botão de inversao
int enable = 11; //Enable do circuito 1
int motorInput1= 12; //Motor pino 1
int motorInput2 = 13; //Motor pino 2
int sensordechuva = 3; //sensor de chuva
int tempPress = 0; //temporario de verificacao de botao pressionado
int direcao = 0; //direcao do motor (1 e 0)
void setup() {
//defino os canais de saida
pinMode(motorInput1, OUTPUT);
pinMode(motorInput2, OUTPUT);
pinMode(sensordechuva,INPUT);
//sentido de rotacao
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
}
void loop() {
int sensorValue = analogRead(sensorPin);
int outputValue = map(sensorValue, 0, 1023, 0, 255);
//pino Enable baseado no valor do potenciometro (controle de potencia)
analogWrite(enable, outputValue);
//se o botao de inversao for pressionado
if(digitalRead(sensordechuva) == 0)
{
digitalWrite(motorInput1, LOW);
digitalWrite(motorInput2, HIGH);
}
else
{
digitalWrite(motorInput1, HIGH);
digitalWrite(motorInput2, LOW);
}
delay(100);
}
funciono?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por