Arduino Polska Forum
Sterowanie diodą led - pomoc w pisaniu kodu - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: Sterowanie diodą led - pomoc w pisaniu kodu (/watek-sterowanie-diod%C4%85-led-pomoc-w-pisaniu-kodu)



Sterowanie diodą led - pomoc w pisaniu kodu - Bogdan 6 - 09-08-2017

Zmodyfikowałem gotowy program do sterowania diodą led za pomocą pilota na podczerwień działa ściemnianie rozjaśnianie ale włączanie i wyłączanie powoduje tylko włączanie diody

Kod:
#include <IRremote.h>
#define irPin 11      //pin Arduino, do którego został podłączony odbiornik IR
IRrecv irrecv(irPin);
decode_results results;

#define diodaPin 5
int jasnosc = 0;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // uruchamia odbiornik podczerwieni

  pinMode(diodaPin, OUTPUT);
  
}

void loop() {
  if (irrecv.decode(&results)) // sprawdza, czy otrzymano sygnał IR
  {
    switch (results.value) {
      case 0x1045A: // rozjaśnianie
        if (jasnosc < 255) {
          jasnosc = jasnosc + 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x45B: //ściemnianie
        if (jasnosc > 5) {
          jasnosc = jasnosc - 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x10454: //wyłączanie
        digitalWrite(diodaPin, LOW);


      case 0x10482: //włączanie
        digitalWrite(diodaPin, HIGH);
    }

    irrecv.resume(); // resetuje czujnik
  }
}



RE: Sterowanie diodą led - pomoc w pisaniu kodu - adix - 09-08-2017

Kod:
#include <IRremote.h>
#define irPin 11      //pin Arduino, do którego został podłączony odbiornik IR
IRrecv irrecv(irPin);
decode_results results;

#define diodaPin 5
int jasnosc = 0;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // uruchamia odbiornik podczerwieni

  pinMode(diodaPin, OUTPUT);
  
}
bool flag=0;
void loop() {
  if (irrecv.decode(&results)) // sprawdza, czy otrzymano sygnał IR
  {
    switch (results.value) {
      case 0x1045A: // rozjaśnianie
        if (jasnosc < 255) {
          jasnosc = jasnosc + 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x45B: //ściemnianie
        if (jasnosc > 5) {
          jasnosc = jasnosc - 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x10454: //wyłączanie
       flag=!flag;
        digitalWrite(diodaPin, flag);
break;


    }
   delay(800);

    irrecv.resume(); // resetuje czujnik
  }

  
  
}
Tak spróbuj tym samym włączasz i wyłączasz.


RE: Sterowanie diodą led - pomoc w pisaniu kodu - Bogdan 6 - 09-08-2017

Sprawdzę jutro
Dziś trochę poczytałem i naprawiłem program teraz wszystko działa
Kod:
#include <IRremote.h>
#define irPin 11      //pin Arduino, do którego został podłączony odbiornik IR
IRrecv irrecv(irPin);
decode_results results;

#define diodaPin 5
int jasnosc = 0;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // uruchamia odbiornik podczerwieni

  pinMode(diodaPin, OUTPUT);
  digitalWrite(diodaPin, HIGH); // włącza diodę na starcie
}

void loop() {
  if (irrecv.decode(&results)) // sprawdza, czy otrzymano sygnał IR
  {
    switch (results.value) {
      case 0x1045A: // rozjaśnianie ciągłe
        if (jasnosc < 255) {
          jasnosc = jasnosc + 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x45A: // rozjaśnianie skokowe
        if (jasnosc < 255) {
          jasnosc = jasnosc + 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x45B: // ściemnianie płynne
        if (jasnosc > 5) {
          jasnosc = jasnosc - 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x1045B: // ściemnianie skokowe
        if (jasnosc > 5) {
          jasnosc = jasnosc - 5;
        }
        Serial.println(jasnosc);
        analogWrite(diodaPin, jasnosc);
        break;

      case 0x454: // wyłączanie
        digitalWrite(diodaPin, LOW);
        break;

      case 0x10454: // włączanie
        digitalWrite(diodaPin, HIGH);
        break;
    }
    irrecv.resume(); // resetuje czujnik
  }
}



RE: Sterowanie diodą led - pomoc w pisaniu kodu - Bogdan 6 - 09-08-2017

Kluczem do programu okazało się polecenie break;


RE: Sterowanie diodą led - pomoc w pisaniu kodu - adix - 09-08-2017

Owidzisz tego nie zauważyłem ze niema.