Wednesday, 19 February 2014

Arduino + LED inteligente

Hola a todos,
Hoy les dejo un video de un Arduino Uno controlando una tira de led RGB.
Entren y pueden encontrar los materiales para hacerlo :) 
Saludos 

Requerimientos:

  • Arduino Uno
  • ULN2003AG
  • Sound Detector Module
  • Tira de Leds
  • Transformador de 12V

Diagrama:

Código:

  1. /**
  2.  * Cristian Marquez www.cristianmarquez.com.ar
  3.  * RGB controller with networking, potentiometer and android client
  4.  **/
  5. //External Libraries
  6. #include <SPI.h>
  7. #include <Ethernet.h>
  8. //Network
  9. byte mac[] = {
  10.   0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  11. IPAddress ip(192,168,0,177);
  12. EthernetServer server(80);
  13. IPAddress gateway(192,168,0,1);
  14. IPAddress subnet(255, 255, 255, 0);
  15. //LED
  16. int redLedPin = 3;
  17. int greenLedPin = 5;
  18. int blueLedPin = 6;
  19. //Sensors
  20. int soundDetectorAnalogPin=A0;
  21. int soundDetectorDigitalPin=8;
  22. int potentiometerAnalogPin=A1;
  23. void setup()
  24. {
  25.   Serial.begin(9600); //Just for debugging
  26.   Ethernet.begin(mac, ip);
  27.   server.begin();
  28.   pinMode(soundDetectorDigitalPin, INPUT);
  29.   pinMode(redLedPin, OUTPUT);    
  30.   pinMode(greenLedPin, OUTPUT);    
  31.   pinMode(blueLedPin, OUTPUT);    
  32. }
  33. void loop()
  34. {
  35.   if (digitalRead(soundDetectorDigitalPin)==1){
  36.     int rand = random(1,11);
  37.     switch (rand)
  38.     {
  39.     case 1:
  40.       //red
  41.       turnLights(random(100, 255),0,0);
  42.       delay(150);
  43.       break;
  44.     case 2:
  45.       //green
  46.       turnLights(0,random(100, 255),0);
  47.       delay(150);
  48.       break;
  49.     case 3:
  50.       //blue
  51.       turnLights(0,0,random(100, 255));
  52.       delay(150);
  53.       break;
  54.     case 4:
  55.       //red+green
  56.       turnLights(random(100, 255),random(100, 255),0);
  57.       delay(150);
  58.       break;
  59.     case 5:
  60.       //red+blue
  61.       turnLights(random(100, 255),0,random(100, 255));
  62.       delay(150);
  63.       break;
  64.     case 6:
  65.       //green+blue
  66.       turnLights(0,random(100, 255),random(100, 255));
  67.       delay(150);
  68.       break;
  69.     case 7:
  70.       //red+green+blue
  71.       turnLights(random(100, 255),random(100, 255),random(100, 255));
  72.       delay(150);
  73.       break;
  74.     case 8:
  75.       //yellow
  76.       turnLights(255,255,0);
  77.       delay(150);
  78.       break;
  79.     case 9:
  80.       //white
  81.       turnLights(255,255,255);
  82.       delay(150);
  83.       break;
  84.     case 10:
  85.       //violet
  86.       turnLights(238,130,238);
  87.       delay(150);
  88.       break;    
  89.     }
  90.   }
  91.   else{
  92.     turnLights(0,0,0);
  93.   }
  94. }
  95. void useSerial()
  96. {
  97.   while (Serial.available() > 0) {
  98.     // look for the next valid integer in the incoming serial stream:
  99.     int red = Serial.parseInt();
  100.     // do it again:
  101.     int green = Serial.parseInt();
  102.     // do it again:
  103.     int blue = Serial.parseInt();
  104.     if (Serial.read() == '\n') {
  105.       turnLights(red,green,blue);
  106.     }
  107.   }
  108. }
  109. void useEthernet()
  110. {
  111.   EthernetClient client = server.available();
  112.   if (client) {
  113.     // an http request ends with a blank line
  114.     boolean currentLineIsBlank = true;
  115.     while (client.connected()) {
  116.       if (client.available()) {
  117.         char c = client.read();
  118.         // if you've gotten to the end of the line (received a newline
  119.         // character) and the line is blank, the http request has ended,
  120.         // so you can send a reply
  121.         if (== '\n' && currentLineIsBlank) {
  122.           // send a standard http response header
  123.           client.println("HTTP/1.1 150 OK");
  124.           client.println("Content-Type: text/html");
  125.           client.println();
  126.           // print the current readings, in HTML format:
  127.           client.print("Temperature: ");
  128.           break;
  129.         }
  130.         if (== '\n') {
  131.           // you're starting a new line
  132.           currentLineIsBlank = true;
  133.         }
  134.         else if (!= '\r') {
  135.           // you've gotten a character on the current line
  136.           currentLineIsBlank = false;
  137.         }
  138.       }
  139.     }
  140.     // give the web browser time to receive the data
  141.     delay(1);
  142.     // close the connection:
  143.     client.stop();
  144.   }
  145. }
  146. void turnLights(int red, int green, int blue)
  147. {
  148.   red = constrain(red, 0, 255);
  149.   green =  constrain(green, 0, 255);
  150.   blue =  constrain(blue, 0, 255);
  151.   analogWrite(redLedPin, red);
  152.   analogWrite(greenLedPin, green);
  153.   analogWrite(blueLedPin, blue);
  154. }

2 comments:

  1. hola cristian disculpa quisiera saber como conectas exactamente el Sound Detector Module ya que en tu imagen no lo encuentro y en tu vídeo no logro visualizarlo
    gracias.

    ReplyDelete
  2. Pesimo, esto no tiene sentido.

    ReplyDelete

Chau Blog (.com.ar)

Bueno, post corto porque me embolé. Resulta que se me vence el dominio en Nic Argentina, organismo que se especializa en hacer las cosas d...