Pages: [1]   Go Down
Author Topic: Ikea Dioder - Ansteuerung mit iPhone/iPad/Android  (Read 876 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 2
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
/***************************************/
/*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.
« Last Edit: February 11, 2013, 12:45:35 pm by gloob » Logged


Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21839
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 106
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Switzerland
Offline Offline
Faraday Member
**
Karma: 111
Posts: 5226
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 269
Posts: 21839
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: