pessoal fiz esse programinha para testar 2 condiçoes e acender um led se as 2 condiçoes forem verdadeiras somente mas não esta funcionando alguém tem ideia do porque?
obrigado
int input1 = 11;
int input2 = 12;
int output1 = 13;
void setup() {
pinMode(input1, INPUT);
pinMode(input2, INPUT);
pinMode(output1, OUTPUT);
}
void loop(){
if(input1==HIGH && input2==HIGH)
digitalWrite(output1, HIGH);
else
digitalWrite(output1, LOW);
delay(30000);
}
Tags:
Que tipo de entrada de sinal você está usando ? Interruptores ? Se for interruptores voce deve usar resistores de pullup ou pulldown, dependendo da sua ligação.
Outra coisa, esse delay de 30 segundos que você está usando no final está bloqueando o fluxo do código. Dessa forma, se a condição do if for falsa, ele só vai testar a condição novamente depois de 30 segundos. Como teste, retire o delay e veja se funciona.
valeu amigo o delay estava bloqueando mesmo,.. mas como eu posso colocar esse delay para quando o pino 13 estiver em high ele permaneça por 30s e depois volte a executar o loop?
Com esse if abaixo, quando as duas entradas estiverem em nível alto, a saída também vai à nível alto, permanecendo assim durante 30 segundos.
setae = digitalRead(setaePin);
setad = digitalRead(setadPin);
if ( (setae == HIGH) && ( setad == HIGH )) {
digitalWrite ( homecom, HIGH );
delay ( 30000 );
}else{
digitalWrite ( homecom, LOW );
}
Olá
Está faltando antes dos IFs, um comando tipo esse:
buttonState = digitalRead(buttonPin);
dê uma olhada aqui: http://arduino.cc/en/tutorial/button
Abraço
Ricardo
mancada minha era isto mesmo que faltava.... dei uma modificada ficando assim:
int setaePin = 11;
int setadPin = 12;
int homecomPin = 13;
int setae = 0;
int setad = 0;
void setup() {
pinMode(setaePin, INPUT);
pinMode(setadPin, INPUT);
pinMode(homecomPin, OUTPUT);
}
void loop(){
setae = digitalRead(setaePin);
setad = digitalRead(setadPin);
if
(setae==HIGH && setad==HIGH)
digitalWrite(homecomPin, HIGH);
else
digitalWrite(homecomPin, LOW);
}
porém ao invés de acender o led do pino 13 somente se as portas 11 e 12 estiverem em high ele esta acendendo o led do pino 13 com qualquer uma das portas seja a 11 ou a 12 em high era pra acender somente se as 2 estiverem em high juntas... o que esta errado??
valeu
Amigo não pode estar faltando as chaves?
int setaePin = 11;
int setadPin = 12;
int homecomPin = 13;
int setae = 0;
int setad = 0;
void setup() {
pinMode(setaePin, INPUT);
pinMode(setadPin, INPUT);
pinMode(homecomPin, OUTPUT);
}
void loop(){
setae = digitalRead(setaePin);
setad = digitalRead(setadPin);
if (setae==HIGH && setad==HIGH) {
digitalWrite(homecomPin, HIGH);
}
else {
digitalWrite(homecomPin, LOW);
}
}
ainda não é isso amigo, continua acendendo pino 13 com apenas um dos pinos 11 ou 12 em high quando deveria acender apenas se ambos os pinos 11 e 12 estivessem em high ao mesmo tempo
também não funciona cara
Tente trocar de operador, ao invés de && usar ||
Se funcionar, não me pergunte o por quê. =]
Rafael,
acho que o melhor é vc postar a última versão do código que vc está usando e fotos mostrando a ligação que vc está fazendo. Deve ter alguns detalhe pelo meio que está errado.
Abraço
Ricardo
Como o Ricardo disse, o problema pode ser externo. Para descobrir, você pode usar um programa simples de debug com o Serial Monitor. Depois é só ir mudando o sinal de entrada e ver se corresponde com o sinal mostrado no monitor.
int setaePin = 11;
int setadPin = 12;
int setae = 0;
int setad = 0;
void setup(){
Serial.begin(9600);
pinMode(setaePin, INPUT);
pinMode(setadPin, INPUT);
}
void loop(){
setae = digitalRead(setaePin);
setad = digitalRead(setadPin);
Serial.print("seetae: ");
Serial.print(setae);
Serial.print(" ");
Serial.print("setad: ");
Serial.print(setad);
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por