Go Down

Topic: dim led (Read 1 time) previous topic - next topic

smallpoul

Hi,
    i want to dim a led strip. How can i limit the dim so that when it goes to 0, It stop, not returning to 255. and when it goes to 255, not returning to 0.

Thanks in advance

smallpoul

The dim function is activate with a web server.

lloyddean

Everything you need is in what you said, or perhaps posting your code will help ...

smallpoul

here a partial of the code where i need help, i could post all the code but it very very long
Code: [Select]
case 'j':
            //+ brightness
                  r = (brightness - r);
                  g = (brightness - g);
                  b = (brightness - b);
                  analogWrite(redPin, r);
                  analogWrite(greenPin, g);
                  analogWrite(bluePin, b);
              Serial.println("+ brightness");
              break;
            case 'k':
            //- brightness
                  r = (brightness + r);
                  g = (brightness + g);
                  b = (brightness + b);
                  analogWrite(redPin, r);
                  analogWrite(greenPin, g);
                  analogWrite(bluePin, b);
              Serial.println("- brightness");
              break;

smallpoul

here all the code:
Code: [Select]
//Michael sketche
//Arduino server for 8 relay, stove and RGB led strip
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//address will look like http://192.168.1.102:84 for the ledserver
//address will look like http://192.168.1.102:85 for the relayserver
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>
boolean reading = false;

// Debug mode
#define DEBUG true

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 2, 16 }; // ip in lan
EthernetServer Ledserver(84); //Led server port
EthernetServer Relayserver(85); //Relay server port

//For arduino input
#define Doorbelloff "76" //Scene for pin 2 LOW (door bell On)
#define Doorbellon "83" //Scene for pin 2 high (door bell OFF)
#define Phoneon "81" //Scene for pin 3 LOW (telephoe ring On)
#define Phoneoff "82" //Scene for pin 3 high (telephoe ring OFF)
#define Doorbell 2
#define Phone    3
boolean DoorbellState = false;
boolean PhoneState = false;
boolean Phonedelay = false;

//Variable for debonce phone ring
unsigned long pressed;
int pwrtime = 600;
unsigned long time;
unsigned long unpressed;


char serverName[] = "192.168.2.19"; //Vera ip address
EthernetClient client;

unsigned long ledstatut;
int r;
int g;
int b;
int brightness = 30;


String readString;

//RGB led pin
const int redPin =   4;
const int greenPin = 5;
const int bluePin =  6;

//////////////////////

void setup(){
  //start Ethernet
  Ethernet.begin(mac, ip);
  Ledserver.begin();

  //Led pin
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
 
  r = constrain(r, 0, 255);
  g = constrain(g, 0, 255);
  b = constrain(b, 0, 255);
 
  analogWrite(redPin, 255);
  analogWrite(greenPin, 255);
  analogWrite(bluePin, 255);
 
  //input
  pinMode(Doorbell, INPUT);
  pinMode(Phone, INPUT);
 
  //relay pin
  pinMode(22, OUTPUT); //output relay pin
  pinMode(23, OUTPUT); //output relay pin
  pinMode(24, OUTPUT); //output relay pin
  pinMode(25, OUTPUT); //output relay pin
  pinMode(26, OUTPUT); //output relay pin
  pinMode(27, OUTPUT); //output relay pin
  pinMode(28, OUTPUT); //output relay pin
  pinMode(29, OUTPUT); //output relay pin
  pinMode(29, OUTPUT); //output relay pin
 
 
  Serial.begin(9600);
  Serial.println("Arduino starting"); // so I can keep track of what is loaded
   if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }
  else{
    Serial.println("Ethernet ready local IP:");
    Serial.println(Ethernet.localIP());
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
}

void loop(){
  Led();
  Relay();
  DoorbellDetection();
  TelephoneDetection();
  }

void Led(){
  // Create a client connection
  EthernetClient client = Ledserver.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string
          readString += c;
          //Serial.print(c);
        }

        //if HTTP request has ended
        if (c == '\n') {

          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Michael led server</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Michael test server</H1>");
         
          client.println("<a href=\"/?on\"\">ON</a>");
          client.println("<a href=\"/?off\"\">OFF</a>");

          client.println("</BODY>");
          client.println("</HTML>");

          delay(1);
          //stopping client
          client.stop();
         
readString = readString.substring(5, readString.length() - 11);
Serial.println(readString); //print to serial monitor for debuging

         
int commaIndex = readString.indexOf(',');
//  Search for the next comma just after the first
int secondCommaIndex = readString.indexOf(',', commaIndex+1);

String firstValue = readString.substring(0, commaIndex);
String secondValue = readString.substring(commaIndex+1, secondCommaIndex);
String thirdValue = readString.substring(secondCommaIndex+1); // To the end of the string

r = firstValue.toInt();
g = secondValue.toInt();
b = thirdValue.toInt();
ledstatut = r + b + g;

  analogWrite(redPin, 255 -  r);
  analogWrite(greenPin, 255 - g);
  analogWrite(bluePin, 255 - b);

Serial.println(r);
Serial.println(g);
Serial.println(b);

          //clearing string for next read
          readString="";

        }
      }
    }
  }
}



void Relay(){

  EthernetClient client = Relayserver.available();

  if (client) {

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected()) {
      if (client.available()) {

        if(!sentHeader){
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
        }

        char c = client.read();

        if(reading && c == ' ') reading = false;
        if(c == '?') reading = true; //found the ?, begin reading the info

        if(reading){
          Serial.print(c);

           switch (c) {
            case '1':
              //relay pin 22 on
              digitalWrite(22, HIGH);
              Serial.println("Relay 1 on");
              break;
            case '2':
              //relay pin 22 off
              digitalWrite(22, LOW);
              Serial.println("Relay 1 off");
              break;
            case '3':
              //relay pin 23 on
              digitalWrite(23, HIGH);
              Serial.println("Relay 2 on");
              break;
            case '4':
            //relay pin 23 off
              digitalWrite(23, LOW);
              Serial.println("Relay 2 off");
              break;
            case '5':
              //relay pin 24 on
              digitalWrite(24, HIGH);
              Serial.println("Relay 3 on");
              break;
            case '6':
            //relay pin 24 off
              digitalWrite(24, LOW);
              Serial.println("Relay 3 off");
              break;
            case '7':
              //relay pin 25 on
              digitalWrite(25, HIGH);
              Serial.println("Relay 4 on");
              break;

Go Up