Go Down

Topic: Ikea Dioder - Ansteuerung mit iPhone/iPad/Android (Read 960 times) previous topic - next topic

gloob

Feb 11, 2013, 05:28 pm Last Edit: Feb 11, 2013, 06:45 pm by gloob Reason: 1
Quote
PROBLEM GELÖST.
Vielleicht kann ja jemand den Code nutzen um seine Ikea Dioder mittels OSC zu steuern.



Hallo,

Ich habe vor meine Ikea Dioder leisten mit einem Arduino und mehreren ULN2003A zu steuern.

Angeschlossen habe ich sie nach folgenden Schema auf einer Webseite: http://ikennd.ac/blog/2011/09/arduino-dioder-part-one/

Immer wenn ich versuche eine weiße Farbe einzustellen, also alle Werte für Rot, grün und blau dann leuchten sie nur ganz schwach. Hat jemand eine Idee? Liegt es am ULN2003A? Angeschlossen ist das ganze an einen Arduino Mega mit Ethernet Shield an den Pins 2-4.

Code: [Select]
/***************************************/
/*libraries*/
/***************************************/
#include <SPI.h>
#include <Ethernet.h>
#include <ArdOSC.h>

/***************************************/
/*defines*/
/***************************************/
#define SERVER_PORT 9000
#define DESTINATION_PORT 8000
#define PIN_R 2
#define PIN_G 3
#define PIN_B 4

/***************************************/
/*variables*/
/***************************************/
OSCServer server;
OSCClient client;

byte myMac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte myIp[]  = {192, 168, 1, 177};

int rgb_r=0;
int rgb_g=0;
int rgb_b=0;

int hsv_h=0;
int hsv_s=255;
int hsv_v=0;

/***************************************/
/*setup*/
/***************************************/
void setup(){

 //start serial
 Serial.begin(115200);

 //set pin modes
 pinMode(PIN_R, OUTPUT);  
 pinMode(PIN_G, OUTPUT);
 pinMode(PIN_B, OUTPUT);
 
 //start ethernet
 Ethernet.begin(myMac ,myIp);

 //start OSC server
 server.begin(SERVER_PORT);

 //set callback function & oscaddress
 server.addCallback("/1/push1",&func_onoff);
 server.addCallback("/1/hue",&func_hue);
 server.addCallback("/1/saturation",&func_saturation);
 server.addCallback("/1/value",&func_value);
}

/***************************************/
/*loop for ever*/
/***************************************/
void loop(){
 if(server.aviableCheck()>0){
   //Serial.println("alive! ");
 }
 
 HSV2RGB(hsv_h, hsv_s, hsv_v, rgb_r, rgb_g, rgb_b);
 setLedColor(rgb_r, rgb_g, rgb_b);
}

/***************************************/
/*additional functions*/
/***************************************/
void setLedColor(int red, int green, int blue) {
 analogWrite(PIN_R,red);
 analogWrite(PIN_G,green);
 analogWrite(PIN_B,blue);
}

// hue         0...360
// saturation  0...255
// value       0...255
void HSV2RGB(int h, double s, double v, int &r_int, int &g_int, int &b_int) {
 double r=0;
 double g=0;
 double b=0;

 if(s==0)
 {
   r_int = v;
   g_int = v;
   b_int = v;
   return;
 }
 
 s /= 255;
 v /= 255;

 double hf=h/60.0;

 int i=(int)floor(h/60.0);
 double f = h/60.0 - i;
 double pv = v * (1 - s);
 double qv = v * (1 - s*f);
 double tv = v * (1 - s*(1 - f));

 switch (i)
 {
 case 0:
   r = v;
   g = tv;
   b = pv;
   break;
 case 1:
   r = qv;
   g = v;
   b = pv;
   break;
 case 2:
   r = pv;
   g = v;
   b = tv;
   break;
 case 3:
   r = pv;
   g = qv;
   b = v;
   break;
 case 4:
   r = tv;
   g = pv;
   b = v;
   break;
 case 5:
   r = v;
   g = pv;
   b = qv;
   break;
 }

 r_int=constrain((int)255*r,0,255);
 g_int=constrain((int)255*g,0,255);
 b_int=constrain((int)255*b,0,255);
}




EDIT:

Ich hab jetzt nochmal getestet. Immer wenn ich 3 PWM Ausgänge am Megaansteuere werden alle 3 relativ schwach wenn der gesetzte Wert überall gleich ist.
Setze ich unterschiedliche PWM Werte (50,60,70) setzt immer dejenige Pin aus der den geringen PWM Wert erhält. Kann es sein das mein Mega ein Problem hat oder ist es ein generelles Problem?

EDIT2:

Ich konnte das Problem lösen, indem ich 12V an den Vin Pin angelegt habe. Scheinbar bricht die Spannung teilweise zusammen wenn 3 Pins auf HIGH gesetzt werden.

uwefed

Quote
EDIT2:
Ich konnte das Problem lösen, indem ich 12V an den Vin Pin angelegt habe. Scheinbar bricht die Spannung teilweise zusammen wenn 3 Pins auf HIGH gesetzt werden.


Wo hattest Du die 12V vorher angeschlossen?

grüße Uwe

gloob

Vorher waren die 12V nur direkt an der Beleuchtung angeschlossen und nur die Masse vom Netzteil am Mega. Der Mega wurde über USB versorgt.

pylon

Quote
Vielleicht kann ja jemand den Code nutzen um seine Ikea Dioder mittels OSC zu steuern.


Mit dem geposteten Code geht das aber nicht, der compiliert nicht mal (server.aviableCheck) und ist nicht vollständig.

uwefed


Vorher waren die 12V nur direkt an der Beleuchtung angeschlossen und nur die Masse vom Netzteil am Mega. Der Mega wurde über USB versorgt.

Müßte aber so funktionieren.
Grüße Uwe

Go Up