Hallo, ten eerste fijne kerstdagen.
Ik ben met een projectje bezig, onderdelen zijn besteld (aliexpress) en terwijl ik wacht op de onderdelen.
leek het me strak plan om al vast de code te schrijven, maar zit nu beetje vast.
korte nachtjes ivm googlen en fora's lezen maar kom niet verder.
project:
Vervangen van 40 st. 12V 5W halogeen lampjes (plafonlamp) naar 40st ws2812B leds.
omdat die lamp aan het plafon hangt is een knopje niet echt een optie, dus maar met afstandbediening doen. ir ontvanger en a.b. van oude led strip opgeofferd. testopstelling op breadboard (maar dan met ws2801 strip, had ik nog liggen) ir codes van de knoppen opgeschreven, code bij elkaar gejat, en hoppa werkt.
Ontvanger -> ir code binnen -> case uitvoeren (case is aparte void, B.v. alles blauw)
aan, uit, feller, minder fel, alles groen, alles rood, alles blauw, helft blauw, alle kleuren (rainbowfill) enz.
dit zijn (zeg maar) statische weergaven, wil graag ook beetje beweging in die lamp, knipperen, fades, blink, enz.
maar dan krijg je een voidje met een loop er in....... en dat werkt prima.
Maaaaaaaar........
als je die die weergave kiest kan je drukken op de ab wat je wil maar uitzetten of andere weergave kiezen gaat niet (ja lamp echt alles uit zetten. hard switch)
geprobeerd om in die loop iets op te nemen dat ie nog ff checkt of er een ir signaal binnen komt.
maar geen succes tot nu toe. HELP???
code die ik nu heb hier onder, een schema van de opstelling in de attachment (zitten 24 cases in de code heb er een aantal uit gelaten). code zal niet optimaal zijn, en zal beter kunnen. maar goed ik ben geen pro, kloot maar wat aan
Afstandbediening app (android) die ook werkt klik hier
hoop dat jullie me in de juiste richting kunnen wijzen.
mvg
Mark
// ir sectie
#include <IRremote.h>
int RECV_PIN = 3;
#define code1 255
#define code2 32895
#define code3 16575
#define code4 49215
#define code5 8415
#define code6 41055
#define code7 24735
#define code8 57375
#define code9 4335
#define code10 36975
IRrecv irrecv(RECV_PIN);
decode_results results;
// fastled
#include "Arduino.h"
#include <FastLED.h>
#define NUM_LEDS 40
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(9600); // you can comment this line
// ir
irrecv.enableIRIn(); // Start the receiver
irrecv.blink13(true);
// Ledstrip
FastLED.addLeds<WS2801, BGR>(leds, NUM_LEDS);
// lamp aan warmwit
aan();
}
void loop() {
static int brn = 255;
FastLED.setBrightness(brn);
ir();
}
void ir() {
static int brn = 255;
FastLED.setBrightness(brn);
if (irrecv.decode(&results)) {
unsigned int value = results.value;
switch(value) {
case code1:
brn = brn + 10;
if (brn >= 255) {
brn = 255;
}
Serial.println(brn);
FastLED.show();
break;
case code2:
brn = brn - 10;
if (brn <= 5) {
brn = 5;
}
Serial.println(brn);
FastLED.show();
break;
case code3:
uit();
break;
case code4:
aan();
break;
case code5:
rood();
break;
case code6:
groen();
break;
case code7:
blauw();
break;
case code8:
wit();
break;
case code9:
magenta();
break;
}
Serial.println(value); // you can comment this line
irrecv.resume(); // Receive the next value
}
}
void aan() {
fill_solid( leds, NUM_LEDS, CRGB( 255, 147, 41));
FastLED.show();
}
void aan2() {
fill_solid( leds, (20,40), CRGB::NavajoWhite);
fill_rainbow(leds, 20, 0, 12.75);
FastLED.show();
}
void haan2() {
fill_solid( leds, (20,40), CRGB::Black);
fill_rainbow(leds, 20, 0, 12.75);
FastLED.show();
}
void uit() {
fill_solid( leds, NUM_LEDS, CRGB::Black);
FastLED.show();
}
void rood() {
fill_solid( leds, NUM_LEDS, CRGB::Red);
FastLED.show();
}
void groen() {
fill_solid( leds, NUM_LEDS, CRGB::Green);
FastLED.show();
}
void blauw() {
fill_solid( leds, NUM_LEDS, CRGB::Blue);
FastLED.show();
}
void hblue() {
fill_solid( leds, NUM_LEDS, CRGB::Black);
fill_solid( leds, (0,20), CRGB::Blue);
FastLED.show();
}
void wit() {
fill_solid( leds, NUM_LEDS, CRGB::White);
FastLED.show();
}
void magenta() {
fill_solid( leds, NUM_LEDS, CRGB::Magenta);
FastLED.show();
}