Blog

RSS
NetDuino 1 C#- jueves, 01 de mayo de 2014

Hablando con un amigo, salió el tema de que tenia un netduino de los antiguos y recordaba un ejemplo que les dieron en un taller donde lo compraron, pero argumentaba que era un poco precario pues en la demo encendían/apagaban el led de la placa con "thread.Sleep"... rápidamente me puse a reír y le explique que como en sus hermanos mayores también dispone de timers!

Tengo un ejemplo posteado en VB, pero tal y como me comprometí en la conversación lo posteo en C# aunque estoy seguro que existen 101 ejemplos que explican lo mismo, pues este es solo un "hola mundo" para microframework.

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;
 
namespace NetduinoApplication1
{
    public class Program
    {
        static OutputPort onboardLed = new OutputPort(Pins.ONBOARD_LED, false);
        static Timer firstTimer = new Timer(new TimerCallback(tictac), null, 250, 250);
 
        public static void Main()
        {
            Thread.Sleep(Timeout.Infinite);
        }
 
        static Boolean onOff;
        public static void tictac(object status)
        {
            onboardLed.Write(onOff);
            onOff = !onOff;
        }
    }
}

Aunque es de lo mas básico, espero que ayude algún que otro rezagado.
Saludos,
PepLluis,

Tags :  Netduino
Comentarios ( d)
Controlando un robot con WinRT, WinForms y Surface Pro- jueves, 16 de enero de 2014

Tal y como os contábamos en noviembre, la BCNCONDEV fue un buen escenario para sacar ese tiempo extra que nos hace falta para juguetear con alguno de esos artilugios que nos chiflan.

Tuvimos la suerte de compartir cancha con Pablo, para darnos la suficiente cuerda y retarnos a mover el Magic Robot con los sensores de la Surface… para los incrédulos hemos recuperado este video como muestra de nuestra gesta!

Gracias Pablo! por tu aportación.

Enlaces relacionados:

http://msmvps.com/blogs/peplluis/archive/2013/11/20/pete-brown-s-gadgeteer-robot-from-a-windows-form.aspx

http://msmvps.com/blogs/peplluis/archive/2013/11/09/the-barcelona-developers-conference-is-back.aspx

http://msmvps.com/blogs/peplluis/archive/2013/11/12/barcelona-developers-con-retro-makers-y-robotics.aspx

Tags :  MagicRobot
Comentarios ( d)
Feliz Navidad- sábado, 14 de diciembre de 2013

Bon Nadal, Feliz Navidad, Merry Christmas, Joyeuses Fêtes, Buon Natale


Tio

Tags :  Navidad
Comentarios ( d)
Pete Brown's Gadgeteer Robot from a Windows Form.. :-)- miércoles, 20 de noviembre de 2013

Talking about the Pete Brown's Gadgeteer robot, several people ask me how to do a simple winform listener because they have the limit of express versions or simply don't have developer licence to test app's for the store.

Just in five minuts... everybody can jump driving a winform app and the Magic Robot using the Gadgeteer!

using System.Net;
using System.Net.Sockets;

 

namespace RobotServiceSample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            StartListener();
 
            button1.MouseLeave += MouseLeave;
            button2.MouseLeave += MouseLeave;
            button3.MouseLeave += MouseLeave;
            button4.MouseLeave += MouseLeave;
            button5.MouseLeave += MouseLeave;

            button1.MouseEnter += button1_Click;
            button2.MouseEnter += button2_Click;
            button3.MouseEnter += button3_Click;
            button4.MouseEnter += button4_Click;
            button5.MouseEnter += button5_Click;
 

            button1.Click += button1_Click;
            button2.Click += button2_Click;
            button3.Click += button3_Click;
            button4.Click += button4_Click;
            button5.Click += button5_Click;
        }

        private TcpListener _listener;
        private Thread _listenerThread;
        private void StartListener()
        {
            _listenerThread = new Thread(RunListener);
            _listenerThread.Start();
        } 

        TcpClient client;
        private void RunListener()
        {
            _listener = new TcpListener(new IPAddress(new byte[] {192,168,1,101}), 5150);
            _listener.Start();

            textBoxLog.Text += "listening at : " + _listener.LocalEndpoint.ToString()+"\n\r";
            while (true)
            {
                client = _listener.AcceptTcpClient();
                this.Invoke(
                    new Action(
                        () =>
                        {
                            textBoxLog.Text = "";
                            textBoxLog.Text += string.Format("New robot from {0} \n\r", client.Client.RemoteEndPoint);
                        }
                    )); ;
                ThreadPool.QueueUserWorkItem(ProcessClient, client);
            }
        }

        private void ProcessClient(object state)
        {
            TcpClient client = state as TcpClient;
        }

        void MouseLeave(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/panic"));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/right"));
        }
 

        private void button2_Click(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/left"));
        }

        private void button3_Click(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/stop"));
        }

        private void button4_Click(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/backward"));
        }

        private void button5_Click(object sender, EventArgs e)
        {
            sendStream(Encoding.ASCII.GetBytes("/forward"));
        }

         void sendStream(byte[] bytes)
        {
            NetworkStream stream = client.GetStream();
            stream.Write(bytes, 0, bytes.Length);
        }

    }
}

You can find the complete post in 10Rem at : http://10rem.net/blog/2012/09/10/controlling-a-netmf-gadgeteer-robot-from-a-windows-8-app

Enjoy!!
PepLluis,

PS: No doubt in ask if you need the same code for VB

Tags :  Magic Robot
Comentarios ( d)
GadgetoMania- martes, 24 de septiembre de 2013
Gadget

Date 3 October 3, 2013 
Time 11:00 AM - 1:00 PM 

Location : C/ Dr. Junyent 1-3
Vic, 08500 (BCN)

 

Plazas Limitadas, si quieres asistir envíanos tu solicitud a través de la opción de "Contacto".

Description

 - Gadgeteer és una plataforma de hardware obert, que permet que qualsevol persona sense coneixements profunds d’electrònica pugui crear prototips i petits aparells de forma fàcil, sense soldadures nomes assemblant multitud de de elements prefabricats com ara : sensors, càmeres, activadors, pantalles, motors, elements de comunicació, etc., simplement connectant els diferents mòduls a una placa central i programant posteriorment cadascun d’ells per fabricar qualsevol cosa que podem imaginar.

Si ho vols conèixer de prop, en aquesta presentació podràs veure’n exemples en directe i conèixer una amplia comunitat d’usuaris que comparteixen recursos entorn a una nova forma de concebre la tecnologia arreu del món.


 

 - Gadgeteer es una plataforma de hardware abierto, que permite que cualquier persona sin conocimientos profundos de electrónica pueda crear prototipos y pequeños aparatos de forma fácil, sin soldaduras sólo parece multitud de elementos prefabricados como: sensores, cámaras, activadores, pantallas, motores , elementos de comunicación, etc., simplemente conectando los diferentes módulos a una placa central y programando posteriormente cada uno de ellos para fabricar cualquier cosa que podemos imaginar.

Si quieres conocer de cerca, en esta presentación podrás ver ejemplos en directo y conocer una amplia comunidad de usuarios que comparten recursos en torno a una nueva forma de concebir la tecnología en todo el mundo.

Os Espero el próximo Jueves sin falta!!

PepLluis,

Tags :  Gageteer
Comentarios ( d)
Leyendo Distancias con el Sensor HC-SR04- domingo, 09 de junio de 2013

Leyendo el sensor ultrasónico HC-SR04 con Gadgeteer y Visual Basic

Este programa pretende ser un punto de partida la lectura del sensor HC-SR04, pero por supuesto, usted debe proporcionar funciones Adicional como "tomar valores de la media" para hacer un mínimo de precisión.

Imports GT = Gadgeteer
Imports GTM = Gadgeteer.Modules
Imports GTI = Gadgeteer.Interfaces
 
' This program is intended as a starting point reading the HC-SR04 sensor, 
' but of course you must provide adicional functions like "take values from average" to make a minimum of precission.
 
Namespace GadgeteerApp1
    Partial Public Class Program
        'Define GPIO's
        Private Echo As GTI.DigitalInput
        Private Trig As GTI.DigitalOutput
        Private Ticks As Integer = CInt(TimeSpan.TicksPerMillisecond / 1000)
        'Define socket number
        Private soketNum As Integer = 9
        'Main
        Public Sub ProgramStarted()
            Dim socket = Gadgeteer.Socket.GetSocket(soketNum, TrueNothingNothing)
            Echo = New GTI.DigitalInput(socket, Gadgeteer.Socket.Pin.Three, GTI.GlitchFilterMode.Off, GTI.ResistorMode.PullDown, Nothing)
            Trig = New GTI.DigitalOutput(socket, Gadgeteer.Socket.Pin.Four, FalseNothing)
            timer.Start()
            Debug.Print("Program Started")
        End Sub
        ' Just print distance into Debug windows
        Private WithEvents timer As GT.Timer = New GT.Timer(1000)
        Private Sub timer_Tick(timer As Gadgeteer.TimerHandles timer.Tick
            '
            Debug.Print(readSR04.ToString())
        End Sub
 
        'Define Max/Min for SR04 reading distances 
        Private Const Dist_MIN As Integer = 2       'cm
        Private Const Dist_MAX As Integer = 400     'cm
 
        'Define return values if reading fails (out of range)
        Private Const Flag_MIN As Integer = -999
        Private Const Flag_MAX As Integer = 999
 
        'This function returns distance in cm from SR04
        Function readSR04() As Integer
            Dim start As Double = 0
            Dim Distance As Integer = 0
            Dim Fails As Integer = 0
            'send a 10us TTL pulse
            Trig.Write(True)
            Thread.Sleep(10)
            Trig.Write(False)
            'wait for the echoe
            While Not Echo.Read
                Fails += 1
                If Fails > 500 Then
                    Thread.Sleep(0)
                    Exit While
                End If
                start = System.DateTime.Now.Ticks
            End While
            ' calculating distance
            While Echo.Read
                Thread.Sleep(0)
              Distance = CInt(((System.DateTime.Now.Ticks - start) / Ticks) / 58) + Dist_MIN             End While             If Distance < Dist_MAX Then                 If Distance >= Dist_MIN Then                     Return Distance                 Else                     Return Dist_MIN                 End If             Else                 Return Dist_MAX             End If         End Function     End Class End Namespace Saludos,
PepLluis,
Tags :  Gageteer
Comentarios ( d)
Cerberus, Motion Module, VS2012 and VB- sábado, 18 de mayo de 2013

 Code :

Partial Public Class Program

    'Playing with Cerberus and the Motion Module

    Private WithEvents timer As GT.Timer = New GT.Timer(1000)

    Public Sub ProgramStarted()

        timer.Start()

    End Sub


   
Private onSense As Boolean = False
    Private onSenseSeconds As Integer = 10

    Private Sub motion_Sensor_Motion_Sensed(
               sender
As Motion_Sensor,
               state
As Motion_Sensor.Motion_SensorState

               ) Handles motion_Sensor.Motion_Sensed

        If onSense Then Exit Sub
        onSense = True
        led7r.Animate(100, False, True, False)
        led7r.TurnLightOn(7, True)
    End Sub


   
Private Sub timer_Tick(timer As Gadgeteer.Timer) Handles timer.Tick
        PulseDebugLED()
        If onSense Then
            onSenseSeconds += 1
            If onSenseSeconds > 10 Then
                onSenseSeconds = 0
                onSense = False
                led7r.TurnLightOff(7)
            End If
        End If
    End Sub

End Class

 

:-) PepLluis,

Tags :  Cerberus
Comentarios ( d)
AndorraDotNet - Gadgetter WorkSohop- viernes, 26 de abril de 2013

Una vez más y por segunda ocasión... el pasado 5 de Abril Gadgeteer visita el País de los Pirineos.

Y para que conste una muestra de alguna de las conversaciones en las que evidenciamos y pudimos plasmar ese especial interés y curiosidad que se despierta entorno a Microframework y pequeños cacharros electrónicos, sin ninguna duda un escenario único donde la electrónica y la programación se dan la mano.

Carlos, PepLluis y Fernando

Gracias a Luis Franco en representación del grupo de Usuarios AndorraDotNet y su asociación de informáticos, por su amable acogida y esfuerzo para que este tipo de eventos continúen siendo posibles.

Saludos!

Tags :  Gadgeteer Events
Comentarios ( d)
FEZ Panda II – CDC y Debug- viernes, 26 de abril de 2013

Atendiendo a una consulta de Raul,

Después de poner el FEZ Panda II en modo CDC no puede acceder a la tarjeta.

En Microframework debe fijarse el puerto bien sea un puerto Serie o USB para poder realizar el “deployment” y "debug", en versiones anteriores algunos fabricantes intentaron liberar drivers USB que de forma dual pudieran acometer ambas funciones.

En las versiones actuales se ha descartado implementar dicha funcionalidad, pues ha sido una fuente de conflictos por su complejidad.

En el caso que nos ocupa, si nuestra aplicación configura el USB inicialmente asignado al “Debug” como CDC, automáticamente al reiniciar, el driver USB del fabricante utilizado deja de ser reconocido pues nuestra “Panda” necesita otro driver que cumpla con la dualidad descrita.

En esta situación deberemos instalar el nuevo driver.

Debido a ser un tema bastante antiguo, os facilito esta información de memoria, con cariño y generalizando, pero no puedo certificar que vaya a funcionar en vuestro caso especifico.

GHI Interface + CDC

Saludos,
PepLluis,

Tags :  FEZ PANDA II
Comentarios ( d)
Como iniciar la modulacion de Pulsos (VB/G120HDR)- martes, 09 de abril de 2013

El siguiente ejemplo, demuestra la facilidad para generar pulsos modulados utilizando una de las salidas especializadas del procesador. 

En este ejemplo utilizaremos el Led conectado a la salida de pulsos numero 2...

Private BlueLed As PWM = New PWM(Cpu.PWMChannel.PWM_2, 10, 0.1, False)
Public
Sub
    ProgramStarted()
    BlueLed.Start()
   
Debug.Print("Program Started"
)
End Sub

El resultado: el de siempre... un led parpadeando a una fercuencia de 10hz, no por nada somos los blinking mans! jajajaja.

Saludos,
PepLluis,

Tags :  G120HDR
Comentarios ( d)
1 2 3 Siguiente