É a coisa mais simples de fazer no arduino, mas não estou conseguindo fazer os leds piscarem no meio desses códigos:
#define led1 5
#define led2 6
#define led3 7
char leitura;
void setup() {
Serial.begin (9600);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
Serial.println ("Digite algo");
}
void loop() {
if (Serial.available ()>0) {
leitura=Serial.read();
Serial.print ("Tecla digitada :");
Serial.println (leitura);
if (leitura=='L'|| leitura=='l'){
digitalWrite(led1, HIGH);}
if (leitura=='H'|| leitura=='h'){
digitalWrite(led2, HIGH);}
if (leitura=='Q'|| leitura=='q'){
digitalWrite(led3, HIGH);}
if (leitura=='X'|| leitura=='x'){ // <------------------ Aqui
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(1000);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
delay(1000);
}
if (leitura=='F'|| leitura=='f'){
digitalWrite(led3,LOW);
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);}
}
}
Quero acender cada led individualmente, mas quando apertar o "X", todos os 3 pisquem. Eu coloquei um delay ali de 1 segundo, então ele liga, passa um segundo, desliga e não acontece mais nada. Queria que ficasse piscando até eu desligá-lo.
O programa na verdade é bem maior e eu estava usando o switch case, pensei que não continuava por causa do "break" mas mudei agora pro if e não dá certo.
Sou iniciante nisso.
Obg desde já.
Tags:
Mari,
https://www.youtube.com/watch?v=e3UOgfn5-_k&feature=youtu.be
Acho que é só deletar uma parte do código. Tente com isso:
#define led1 5
#define led2 6
#define led3 7
char leitura;
void setup() {
Serial.begin (9600);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
Serial.println ("Digite algo");
}
void loop() {
if (Serial.available ()>0) {
leitura=Serial.read();
Serial.print ("Tecla digitada :");
Serial.println (leitura);
if (leitura=='L'|| leitura=='l'){
digitalWrite(led1, HIGH);}
if (leitura=='H'|| leitura=='h'){
digitalWrite(led2, HIGH);}
if (leitura=='Q'|| leitura=='q'){
digitalWrite(led3, HIGH);}
if (leitura=='X'|| leitura=='x'){ // <------------------ Aqui
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led1, HIGH);
delay(1000);
}
if (leitura=='F'|| leitura=='f'){
digitalWrite(led3,LOW);
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);}
}
}
Olá Carlos,
Os 3 leds teriam que ficar piscando sem precisar apertar o F para desligar.
As letras L, H e Q acendem eles individualmente, o F desliga todos (ainda vou colocar letras para desligar cada um), e o X deixam eles oscilando sozinho, infinitamente, até serem desligados pelo F.
Mari desculpa, acho que entendi mal, você quer que os leds pisquem, é isso?
Abs.
Exato.
Tou tentando aqui e não consigo.
Mari, sua lógica falha no seguinte aspecto: os leds só são comandados tanto para acendimento quanto para desligamento mediante um comando digitado. Do jeito que vc fez, vc precisará ficar digitando contantemente as teclas, pois a cada loop, a variável "leitura" é zerada e ficará aguardando um novo pressionamento de tecla. É por isso que não funciona. Repare que as condicionais IF que vc construiu usam a variável "leitura". Não pode!
Vc precisará manter guardada numa variável a última tecla pressionada e construir um novo grupo de condicionais IF para executar as ações desejadas de acordo com aquilo que foi pressionado
// Mari analisando sua pergunta cheguei a seguinte conclusão:
// nesse caso abaixo você tanto ativa quanto desativa o piscar com a letra 'X' ou 'x'
// Para tirar dúvidas olha esse exemplo: http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
#define led1 5
#define led2 6
#define led3 7
char leitura;
boolean pisca = false;
long intervalo = 1000;
long millisAnterior = 0;
void setup() {
Serial.begin (9600);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
Serial.println ("Digite algo");
}
void loop() {
unsigned long millisAtual = millis();
if (Serial.available ()>0) {
leitura=Serial.read();
Serial.print ("Tecla digitada :");
Serial.println (leitura);
if (leitura=='L'|| leitura=='l'){
digitalWrite(led1, HIGH);
}
if (leitura=='H'|| leitura=='h'){
digitalWrite(led2, HIGH);
}
if (leitura=='Q'|| leitura=='q'){
digitalWrite(led3, HIGH);
}
if (leitura=='X'|| leitura=='x'){ // <------------------ Aqui
// verifica em que estado a váriavel booleana está
if(pisca) {
// se estiver ativada então vai desativar o piscar e desligar todos
pisca = false;
digitalWrite(led3,LOW);
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);
} else {
// se estiver desativada vai iniciar a sequencia de piscar os leds sem atrasar seu código
pisca = true;
}
}
if (leitura=='F'|| leitura=='f'){
pisca = false; // aqui tbm rsrs
digitalWrite(led3,LOW);
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);
}
}
if(millisAtual - millisAnterior > intervalo) {
millisAnterior = millisAtual;
if(pisca) {
digitalWrite(led1, !digitalRead(led1));
digitalWrite(led2, !digitalRead(led2));
digitalWrite(led3, !digitalRead(led3));
}
}
}
Deu certo!!!
Muito Obrigado.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por