GithubHelp home page GithubHelp logo

control-leds-rgb-con-windows-10's Introduction

Escritorio con luces RGB controladas desde Bluetooth

Hace apenas unas semanas publiqué un proyecto que te serviría de guía para mostrar como comunicar un Arduino Mega por medio de Bluetooth con una aplicación de Android hecha en Xamarin.

Si ese proyecto te interesa, puedes verlo en este repositorio.

Con ese proyecto en mente, se me ocurrió agregar un nuevo reto. Ahora probar como hacer lo mismo pero desde una aplicación universal de Windows 10 instalada en una Raspberry Pi con este SO y por medio de una comunicación I2C.

Lo interesante de este proyecto es la enorme cantidad de matices que esto puede tomar, la bella comunicación entre Raspberry y Arduino como un genial complemento y obviamente la comunicación I2C.

Si deseas conocer más de Windows 10 IoT Core en una Raspberry, este enlace es para ti.

Si deseas conocer más de la comunicación por medio de I2C, nada como su artículo de Wikipedia.

¿Comenzamos?

El hardware requerido

La lista de Hardware que necesitas es la siguiente:

  1. Un Arduino Mega
  2. Una Raspberry Pi, puede ser 2 o 3
  3. Tres tiras de led RGB análogas
  4. Nueve transistores TIP120 (tres por cada tira de leds que vayas a utilizar)
  5. Una pantalla para desplegar información en la Raspberry, puedes usar cualquier monitor de computadora.
  6. Una tarjeta de prototipado y ¡muchos cables!

Ensamblado

Para armar tu prototipo, lo que debes hacer es seguir el siguiente diagrama (Hecho con Fritzing).

El código de Arduino

El proyecto de Arduino se basa en la misma base del proyecto del escritorio luminoso. Pero debido a que el protocolo de comunicación I2C opera de una manera muy diferente al Bluetooth la funcionalidad debe ser adaptada a este nuevo panorama. La estructura del mensaje será la siguiente.

l,r,g,b

Donde:

l = lado o la tira de led que modificará su valor, cuenta con tres valores; l, c, r. r = valor del color rojo de la tira de leds asignada, cuenta con valores de 0 a 255. g = valor del color verde de la tira de leds asignada, cuenta con valores de 0 a 255. b = valor del color azul de la tira de leds asignada, cuenta con valores de 0 a 255.

El flujo de información es simple, después de que el mensaje sea recibido lo primero que procesará es el valor de la tira asignada, después obtendrá los valores de cada color y por último enviados.

void receiveEvent(int howMany)
{
  char pos = (char)Wire.read();

  data = "";
  while( Wire.available())
  {
    data += (char)Wire.read();
  }

  switch(pos)
  {
  case 'l':
    redLeft = (getStringPartByNr(data, ',', 0)).toInt();
    greenLeft = (getStringPartByNr(data, ',', 1)).toInt();
    blueLeft = (getStringPartByNr(data, ',', 2)).toInt();
    analogWrite(redLightLeft, redLeft);
    analogWrite(greenLightLeft, greenLeft);
    analogWrite(blueLightLeft, blueLeft);
    break;

  case 'c':
    redCenter = (getStringPartByNr(data, ',', 0)).toInt();
    greenCenter = (getStringPartByNr(data, ',', 1)).toInt();
    blueCenter = (getStringPartByNr(data, ',', 2)).toInt();
    analogWrite(redLightCenter, redCenter);
    analogWrite(greenLightCenter, greenCenter);
    analogWrite(blueLightCenter, blueCenter);
    break;

  case 'r':
    redRight = (getStringPartByNr(data, ',', 0)).toInt();
    greenRight = (getStringPartByNr(data, ',', 1)).toInt();
    blueRight = (getStringPartByNr(data, ',', 2)).toInt();
    analogWrite(redLightRight, redRight);
    analogWrite(greenLightRight, greenRight);
    analogWrite(blueLightRight, blueRight);
    break;
  }
}

Creo que el diagrama es sumamente explícito pero en caso de que tengas alguna duda solo levanta un issue con tu duda y la aclararé tan pronto como pueda.

control-leds-rgb-con-windows-10's People

Contributors

aminespinoza avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.