[#CODING4FUN] XBoxOne Controller and USB Rocket Launcher

Hola!

Hoy empiezo por el final, primero el video con el output

Luego un poco de explicación sobre como montar esto. He partido sobre la base de mi post sobre cómo controlar con C# un mando de XBoxOne. Luego con un poco de código para controlar el lanza missiles, he llegado a conectar ambos dispositivos.

La solución completa incluye 3 proyectos, donde el 1ro se encarga de controlar el Rocket Launcher, luego la app WPF para coordinar las señales del mando y el lanza missiles. Por ultimo tengo un PCL que se encarga de traducir los valores Int32 del mando en comandos más basicos del tipo: up, down, left or right.

image

En realidad el trabajo no ha sido muy complicado, lo único que tuve que tener en cuenta es los valores que envía el controller. Despues de ver que el GamePad se mueve en el rango de un Int32, lo mejor fue definir los valores de LeftFar > Left > Center > Right > RightFar, con los valores entre -20000 > -10000 > 0 > 10000 > 20000. De esta forma una clase MoveControler me ayudaba a traducir la posición del joystick del mando en estos valores.

El ejemplo es bastante simple, ya que utilizo las classes que he creado en posts anteriores para controlar el lanza misiles. Por ejemplo

En este ejemplo he dejado fuera las “esquinas”, tengo que actualizar la clase RocketController para que soporte esto de forma elegante Winking smile

Por cierto, el código completo se puede descargar desde aqui: http://1drv.ms/1pQDQQx

Importante: he eliminado los packages NuGet para que el código no sea muy pesado, por favor descarga los mismos nuevamente para poder compilar la solución.

References

https://elbruno.com/2014/06/27/coding4fun-xboxone-game-controller-c-fun-time/

http://1drv.ms/1pQDQQx

Saludos @ Home

El Bruno

image image image Google
Advertisements

[#CODING4FUN] No more boring costumes, you only need an #Arduino, a motion sensor and a LED Strip!

Hello!

If your wife isn’t close to and you get to make the Space Cadet from your girl costume, likely that you leave a little bit of mold. In my case it was simple; Arduino, a motion sensor, led and Visual Studio 2013.

Note: I never tire of repeating how useful that is Visual Micro for creating projects.

Here’s a video of the final result, as the motion sensor “moves” being sent different values for the brightness of the led Strip. This with a 9V battery and then you have to put it in the guise of Space Cadet.

The source code is as follows:

Iimportant: only 32 lines of code!

image

References:

Saludos @ Home

El Bruno

image image image Google

[#CODING4FUN] No mas disfrazes aburridos, si tienes un #Arduino, un sensor de movimiento y una tira de LEDs !!!

Hola!

Si tu mujer no está cerca y te toca hacer el disfraz de cadete espacial de tu niña, es probable que te salgas un poco del molde. En mi caso fue simple; Arduino, un sensor de movimiento, un led y Visual Studio 2013.

Nota: No me canso de repetir lo útil que es Visual Micro para crear proyectos.

He aquí un video del resultado final, a medida que el sensor de movimiento “se mueve” se envía diferentes valores para el brillo de la tira de LEDs. Esto con una batería de 9V y luego me toca ponerlo dentro del disfraz de cadete espacial.

El código fuente es el siguiente:

Importante: solo 32 líneas de código!

image

Referencias:

[#PEBBLE] HowTo: Connect the Pebble Watch to #Windows8.1

Hola!

¿Conoces a Pebble Watch? pues es un smart watch bastante smart que fue bastante famoso en KickStarter hace un año, por ser bastante barato y muy extensible. Ahora que los wearable devices están marcando tendencia, es momento de comenzar a abrir camino y ver como podemos usar las tecnologías que conocemos para crear apps.

En el caso de Pebble el SDK no está disponible para Windows, solo para MAC y Linux, ya que las apps oficiales son para iOS y Android. Pero eso no quita que no podamos conectar el smart watch a nuestro Windows 8.1 y luego comenzar a interactuar con el mismo.

Asi que primero lo primero, accedemos a la lista de devices bluetooth, buscamos el Pebble y lo agregamos.

image

Como todo device bluetoothm, tendremos que validar el código de emparejamiento.

image

Y listo! Ya tenemos el Pebble emparejado con Windows. En la lista de devices, podemos además ver el puerto COM que está utilizando (esto es importante para la creación de un canal de comunicación luego).

image

Y por ahora es todo, aquí mi Pebble con un hola mundo más que simple pero customizado Open-mouthed smile

image

Saludos @ Home

El Bruno

image image image Google

[#EVENT] Descarga de los materiales del evento #Coding4Fun en el #MVPOpenDay

Hola!

Como siempre, después de una excelente sesión, me toca compartir las slides que use en la sesión.

Antes de que alguien se haga muchas ilusiones, las slides han servido de referencia nada más, solo hay fotos del Valentino y la Martina. Algúna mia con robots y partes del coche de F1, pero poco más ;D. Los temas que intenté tocar fueron varios, USB Hacking, Leap Motion Development, Code Search y algo de Face Recognition. Como siempre, el momento fue genial y gracias a todos los que se acercaron por allí.

Aquí dejo un par de links de referencia

Y la descarga del código desde aquí. (recuerden que he eliminado las claves y licencias de productos)

Source Code

 

Saludos @ Home

El Bruno

image image image Google

[#OPINION] Arduino vs Netduino (for dummies of a dummy)

image

Hi,

a couple of days than in the forums of netduino and Arduino I’ve seen a couple of people asking about the differences between both platforms. I’m not an expert, nor much less, only mine is at hobby level; but I hope give a small clarification that serve any.

First things first, if you’re looking the difference between both platforms, understand that you know something about them. Arduino is a hardware with an Atmel AVR micro platform and various I/O ports. In wikipedia there is much information on Arduino that I recommend reading here. As an open platform, there are many implementations, it is possible to see a list athttp://en.wikipedia.org/wiki/List_of_Arduino_compatibles .

Netduino is a special implementation of Arduino it is programmed using .Net micro Framework .And here we have the first difference between the two: C vs C#.

Clarification: in reality though most commented and used of Arduino is in Java, the official version is programmed with a simplified version of C; which is pretty low. If you don’t have experience in these environments, you will bring more than one headache. We could equally say that the comparison is always the classic C# vs Java.

In addition to the difference of the programming platform Arduino has a much larger community.Although this does not mean that the forums of Netduino is small, an example of which is constant activity that have the Netduino forums. This is also important to keep in mind, the community and examples of Arduino is much more extensive than the community of Netduino .

Now, if what buscas.es “power” with Netduino there are certain plates that can reach the 200 MHz / 8 MB that are real “beasts” in the world of micro-programming. So this mention because examples of control an IO port or control a light sensor, are fine. However the real solutions tend to be much more complex, where layers of services, interconnected devices, etc. are used At this point, Netduino has the advantage of having all the power of the best 2012 programming language: C# .

On both platforms you can use free tools to schedule and both are Open Source (mostly, except for specific implementations). I think the breaking point would put it in so professional you want to make your products. For example, if you want to create a solution it would be advantage as the garbage collector, event programming, etc.; Netduino is the choice. If on the other hand, want to make a “Hello World“, because with Arduino and €50 can do you quickly.

Saludos @ Home

El Bruno

image image image

[#EVENT] #RoboBuilder, un robot humanoide controlado con un #Kinect para la 2da parte del evento de Robotics

image

Buenas,

es cierto que lo mejor de los eventos de tecnología no pasa durante los mismos sino después de los mismos. Y así fue que después de un par de cervezas me hice de unas amistades que en un día normal no haría. Sumado a la memoria de pez que tengo, hoy me encuentro con un par de correos donde veo que la 2da parte del evento de Robotics está poniendo el listón bastante alto.

Entre las cosas pendientes, tenemos una demo de Robotics Studio con Kinect, y claro … a alguien se le ocurrió meter a RoboBuilder en el medio. Si no conoces a RoboBuilder, es como una especie de Lego con esteroides, ya que consiste en un set de construcción que te permite armar un humanoide, un perro, y una especie de araña de Halo4, y otras formas más con varios sensores y servomotores. Luego, obviamente puedes programar y controlar los mismos usando un software propietario.

image

Lo bueno es que como he sido un niño muy bueno, estas navidades Papa Noel / Santa Claus me traerá uno de regalo. Hace ya bastante tiempo que le tenía ganas, porque creo que me permitirá hacer bastantes más cosas que el Lego, especialmente si lo unimos con el Kinect y … con algún concepto de T1000.

Aquí quedan un par de videos, donde muestran las capacidades de Robobuilder, inclusive con Kinect

http://youtu.be/qZGrOzdXj6I

El video que sigue te puede quemar los ojos y dañar los oídos, lo siento.

http://youtu.be/a9Ktv-W2ljc

Finalmente la demo con Kinect.

http://youtu.be/jrFZDG9R-E0

 

Saludos @ Home

El Bruno

image image image

[#EVENT] WebCast: Robotics, Kinect y otras cosas con los amigos de #SecongNug

image

Buenas,

otra vez me toca un evento de los divertidos con los amigos de SecondNug. Esta vez con cacharitos varios, un Kinect, un par de robotitos,un coche radio controlado, etc. y … … … C#

El evento será el próximo martes 20 de noviembre y la información oficial de evento se puede encontrar aquí.

image

El registro lo pueden hacer desde https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032536336&Culture=es-ES&community=0

Saludos @ La Finca

El Bruno

image image image

[#GADGETS] HowTo: Integrate the USB Email Notifier to display the states of Lync 2013 Beta (III)

image

Buenas,

today close series where I discuss how using C# can check the status of the lights of a USB Email Notifier little more than U$ S 8.00.

First real example which was to build an application showing the alerts for a Server Builds with Team Foundation Server 2012. As once long ago already built something similar with the Lance missiles USB and Team Foundation Server 2008, because today I will do something different.

Some time ago I caught my attention this post by Scott Hanselman , which says it has been aBusyLight on the door of his Office so your family will know if you are in a call, Conference, etc. In addition to feel quite identified with your situation, it struck me that nobody has created a “cheap” solution for this. Well, here is some u $S 20 and with the satisfaction of having done self.

The only thing we need is a notifier light and a couple of USB extensions, for example

The following is to create a WPF application where use of Lync presence controls. In this case I’m using LYNC 2013 BETA, so I had to also download the SDK in Beta mode from here. The good thing about this SDK, is that in addition to the classical object model, we also have a set of WPF controls that allow us to create an application like that we can see the next image in a few minutes:

image

The WPF code

   1: <Window x:Class="ElBruno.LyncLightNotifier.MainWindow"
   2:         xmlns:controls="clr-namespace:Microsoft.Lync.Controls;assembly=Microsoft.Lync.Controls"
   3:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   4:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   5:         Title="El Bruno - LYNC 2013 Light Alert"
   6:         Height="264"
   7:         Width="405">
   8:     <Grid>
   9:         <Grid.RowDefinitions>
  10:             <RowDefinition />
  11:             <RowDefinition />
  12:         </Grid.RowDefinitions>
  13:         <Grid.ColumnDefinitions>
  14:             <ColumnDefinition Width="187*" />
  15:             <ColumnDefinition Width="384*" />
  16:         </Grid.ColumnDefinitions>
  17:         <Grid.Background>
  18:             <ImageBrush ImageSource="Lync.png" />
  19:         </Grid.Background>
  20:         <StackPanel Orientation="Vertical"
  21:                     Margin="10,0,0,10"
  22:                     HorizontalAlignment="Stretch"
  23:                     VerticalAlignment="Center"
  24:                     Height="106"
  25:                     Grid.Column="1"
  26:                     Grid.Row="1">
  27:             <controls:MyPresenceChooser x:Name="myPresence"
  28:                                         HorizontalAlignment="Stretch" />
  29:             <controls:MyStatusArea x:Name="myStatus" />
  30:         </StackPanel>
  31:     </Grid>
  32: </Window>

Now as I have not invested much time in seeing how the SDK, in the first 10 minutes I found an event that indicate me the state change. Therefore, the following code is almost just as damaging to the world of programming such as killing the last Unicorn or making a couple of miles in my car (the last is harmful for Ecology).

   1: using System;
   2: using System.Timers;
   3: using System.Windows;
   4: using System.Windows.Threading;
   5: using ElBruno.LightNotifier;
   6: using Microsoft.Lync.Controls;
   7:  
   8: namespace ElBruno.LyncLightNotifier
   9: {
  10:     public partial class MainWindow
  11:     {
  12:         private readonly Timer _timer = new Timer(1000);
  13:         public MainWindow()
  14:         {
  15:             InitializeComponent();
  16:             Loaded += MainWindowLoaded;
  17:             Unloaded += MainWindowUnloaded;
  18:         }
  19:  
  20:         void MainWindowUnloaded(object sender, RoutedEventArgs e)
  21:         {
  22:             _timer.Elapsed -= TimerElapsed;
  23:             _timer.Stop();
  24:         }
  25:  
  26:         void MainWindowLoaded(object sender, RoutedEventArgs e)
  27:         {
  28:             _timer.Elapsed += TimerElapsed;
  29:             _timer.Enabled = true;
  30:         }
  31:  
  32:         void TimerElapsed(object sender, ElapsedEventArgs e)
  33:         {
  34:             Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(CheckLyncState));
  35:         }
  36:         void CheckLyncState()
  37:         {
  38:             var state = myPresence.AvailabilityState;
  39:             var lightController = new LightController();
  40:             lightController.TurnLight(state == ContactAvailability.DoNotDisturb);
  41:         }
  42:     }
  43: }

Well, the solution is quite simple: a timer every second verifying the LYNC 2013 State and if it is Do Not Disturb, as the notifier light turned on. Lines 32 to 41 will make you happy.

If a picture is worth a thousand words, the next value should be worth 2 or 3 monosyllables

Video: http://youtu.be/Tah42D8Vozw

The full application code can be downloaded from http://sdrv.ms/PkgQ4L .

References:

Saludos @ La Finca

El Bruno

image image image

[#GADGETS] HowTo: Integrar el USB Email Notifier para mostrar los estados de Lync 2013 Beta (III)

image

Buenas,

hoy cierro la serie donde comento como utilizando C# podemos controlar el estado de las luces de un USB Email Notifier de poco más de U$S 8.00.

En primer lugar el ejemplo real que estaba armando era una aplicación que mostraba las alertas para un servidor de Builds con Team Foundation Server 2012. Como alguna vez hace tiempo ya armé algo parecido con el lanza misiles USB y Team Foundation Server 2008, pues hoy haré algo diferente.

Hace un tiempo me llamo la atención este post de Scott Hanselman, donde comenta como ha puesto un BusyLight en la puerta de su oficina para que su familia sepa si está en una call, conferencia, etc. Además de sentirme bastante identificado con su situación, me llamó la atención de que nadie haya creado una solución “barata” para esto. Pues bien, aquí está por unos U$S 20 y con la satisfacción de haberlo hecho uno mismo.

Lo único que necesitamos es un light notifier y un par de extensiones USB, por ejemplo

Lo siguiente es crear una aplicación WPF donde utilicemos los controles de presencia de Lync. En este caso estoy utilizando LYNC 2013 BETA, con lo que tuve que descargar el SDK también en modo Beta desde aquí. Lo bueno de este SDK, es que además del clásico modelo de objetos, también tenemos una serie de controles WPF que nos permiten crear una aplicación como la que podemos ver la siguiente imagen en pocos minutos:

image

El código WPF

   1: <Window x:Class="ElBruno.LyncLightNotifier.MainWindow"

   2:         xmlns:controls="clr-namespace:Microsoft.Lync.Controls;assembly=Microsoft.Lync.Controls"

   3:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   4:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   5:         Title="El Bruno - LYNC 2013 Light Alert"

   6:         Height="264"

   7:         Width="405">

   8:     <Grid>

   9:         <Grid.RowDefinitions>

  10:             <RowDefinition />

  11:             <RowDefinition />

  12:         </Grid.RowDefinitions>

  13:         <Grid.ColumnDefinitions>

  14:             <ColumnDefinition Width="187*" />

  15:             <ColumnDefinition Width="384*" />

  16:         </Grid.ColumnDefinitions>

  17:         <Grid.Background>

  18:             <ImageBrush ImageSource="Lync.png" />

  19:         </Grid.Background>

  20:         <StackPanel Orientation="Vertical"

  21:                     Margin="10,0,0,10"

  22:                     HorizontalAlignment="Stretch"

  23:                     VerticalAlignment="Center"

  24:                     Height="106"

  25:                     Grid.Column="1"

  26:                     Grid.Row="1">

  27:             <controls:MyPresenceChooser x:Name="myPresence"

  28:                                         HorizontalAlignment="Stretch" />

  29:             <controls:MyStatusArea x:Name="myStatus" />

  30:         </StackPanel>

  31:     </Grid>

  32: </Window>

Ahora bien, como no he invertido mucho tiempo en ver como funciona el SDK, en los primeros 10 minutos no encontré un evento que me indique el cambio de estado. Es por eso que el siguiente código es casi igual de dañino para el mundo de la programación como asesinar al último unicornio o hacer un par de kilómetros en mi coche (lo último es dañino para la ecología).

   1: using System;

   2: using System.Timers;

   3: using System.Windows;

   4: using System.Windows.Threading;

   5: using ElBruno.LightNotifier;

   6: using Microsoft.Lync.Controls;

   7:  

   8: namespace ElBruno.LyncLightNotifier

   9: {

  10:     public partial class MainWindow

  11:     {

  12:         private readonly Timer _timer = new Timer(1000);

  13:         public MainWindow()

  14:         {

  15:             InitializeComponent();

  16:             Loaded += MainWindowLoaded;

  17:             Unloaded += MainWindowUnloaded;

  18:         }

  19:  

  20:         void MainWindowUnloaded(object sender, RoutedEventArgs e)

  21:         {

  22:             _timer.Elapsed -= TimerElapsed;

  23:             _timer.Stop();

  24:         }

  25:  

  26:         void MainWindowLoaded(object sender, RoutedEventArgs e)

  27:         {

  28:             _timer.Elapsed += TimerElapsed;

  29:             _timer.Enabled = true;

  30:         }

  31:  

  32:         void TimerElapsed(object sender, ElapsedEventArgs e)

  33:         {

  34:             Dispatcher.Invoke(DispatcherPriority.Normal, (Action)(CheckLyncState));

  35:         }

  36:         void CheckLyncState()

  37:         {

  38:             var state = myPresence.AvailabilityState;

  39:             var lightController = new LightController();

  40:             lightController.TurnLight(state == ContactAvailability.DoNotDisturb);

  41:         }

  42:     }

  43: }

Pues bien, la solución es bastante simple: un timer que cada segundo verifica el estado en LYNC 2013 y si el mismo es Do Not Disturb, pues enciende el light notifier. Las líneas 32 hasta la 41 te harán feliz.

Si una imagen vale más que mil palabras, el siguiente valor debe valer 2 o 3 monosílabos

Video: http://youtu.be/Tah42D8Vozw

El código de la aplicación completa se puede descargar desde http://sdrv.ms/PkgQ4L.

Referencias:

Saludos @ Home

El Bruno

image image image