• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Miganie diody LED przy ustalonej wartości
#1
Witam, mój problem polega na tym, że chcę sterować diodą LED za pomocą pilota od TV. Załączanie diody, regulacja jasności i wyłącznie mam na tą chwilę ogarnięte, lecz chcę, żeby przy zadanej wartości dioda zaczęła mrugać, sygnalizując np. 1/2 jasności, następnie 3/4, po czym można by dalej zmieniać jasność na "-" jak i na "+". próbowałem różnych komend i warunków, lecz nie mogę znaleźć nic działającego :/.
Poniżej wklejam kod z arduino, a w liniach 40-47 jest moje kombinowanie, które nie działa. Czy moje myślenie jest dobre?

Kod:
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;

#define diodaPin 5

int jasnosc = 0;

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn();

 pinMode(diodaPin, OUTPUT);
}

void loop() {

 
 if (irrecv.decode(&results)) {

   switch (results.value) {
     case 0x10410:
       if (jasnosc < 255) {
         jasnosc = jasnosc + 5;
       }
       Serial.println(jasnosc);
       delay(20);
       analogWrite(diodaPin, jasnosc);
       break;

     case 0x10411:
       if (jasnosc > 0) {
         jasnosc = jasnosc - 5;
       }
       Serial.println(jasnosc);
       delay(20);
       analogWrite(diodaPin, jasnosc);
       break;
if (jasnosc==60); //linia 40
do{
 analogWrite(diodaPin, LOW);
 delay(500);
 analogWrite(diodaPin, HIGH);
 delay(500);
 }
while (jasnosc == 60); //linia 47
   }
   irrecv.resume();
 }
}
Pozdrawiam, Krystian.


 Pojawiło się rozwiązanie problemu. Wystarczy sama funkcja if (bez do...while). 
Kod:
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;

#define diodaPin 5

int jasnosc = 0;

void setup() {
 Serial.begin(9600);
 irrecv.enableIRIn();

 pinMode(diodaPin, OUTPUT);
}

void loop() {

 if (jasnosc == 245)
 {
   digitalWrite(diodaPin, LOW);
   delay(50);
   analogWrite(diodaPin, jasnosc);
   delay(50);
 }

 if (irrecv.decode(&results)) {

   switch (results.value) {
     case 0x10410:
       if (jasnosc < 255) {
         jasnosc = jasnosc + 5;
       }
       Serial.println(jasnosc);
       delay(20);
       analogWrite(diodaPin, jasnosc);
       break;

     case 0x10411:
       if (jasnosc > 0) {
         jasnosc = jasnosc - 5;
       }
       Serial.println(jasnosc);
       delay(20);
       analogWrite(diodaPin, jasnosc);
       break;
   }
   irrecv.resume();
 }
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości