Anuncio
Microsoft está apostando por Windows 10, finalmente se da cuenta del sueño de tener aplicaciones que se ejecutan multiplataforma. En combinación con el soporte oficial para Arduino, tiene una nueva herramienta poderosa a su disposición: la capacidad de crear fácilmente aplicaciones universales de Windows que tienen una conexión de hardware al mundo real.
Aquí le mostramos cómo comenzar, incluso si nunca antes ha programado una aplicación de Windows.
Antes de seguir leyendo, mira la demostración de lo que vamos a hacer.
Debo señalar que no he usado Visual Studio, ni siquiera he tocado C #, desde hace aproximadamente 10 años. Llego a esto desde la perspectiva de una nueva instalación de Visual Studio, y me he olvidado de todo lo que sé.
Si ya tiene bastante experiencia con la programación de aplicaciones de Windows, o incluso está buscando una manera simple de comenzar a programar en Windows sin estas cosas de Arduino, pruebe Ryan guía para hacer una aplicación simple de Visual Basic Cómo puedes hacer tu propia aplicación simple con VBA ¿Quiere saber cómo hacer su propia aplicación VBA para resolver problemas? Use estos consejos para crear su propio software VBA. Lee mas . Los principiantes de programación absoluta pueden querer ver mi Programación 101 Los fundamentos de la programación de computadoras 101 - Variables y tipos de datosHabiendo presentado y hablado un poco sobre la Programación Orientada a Objetos antes y dónde se llama proviene de, pensé que es hora de que revisemos los conceptos básicos absolutos de la programación en un lenguaje no específico camino. Esta... Lee mas (y parte 2 Los fundamentos absolutos de la programación para principiantes (Parte 2)En la parte 2 de nuestra guía absoluta de programación para principiantes, cubriré los conceptos básicos de funciones, valores de retorno, bucles y condicionales. Asegúrate de haber leído la parte 1 antes de abordar esto, donde expliqué el ... Lee mas ) artículo primero.
Deberías estar familiarizado con algunos proyectos Arduino para principiantes 15 grandes proyectos de Arduino para principiantes¿Interesado en proyectos Arduino pero no está seguro por dónde comenzar? Estos proyectos para principiantes le enseñarán cómo comenzar. Lee mas (y tal vez incluso lea nuestro Arduino Guide Comenzando con Arduino: una guía para principiantesArduino es una plataforma de creación de prototipos de electrónica de código abierto basada en hardware y software flexible y fácil de usar. Está destinado a artistas, diseñadores, aficionados y cualquier persona interesada en crear objetos o entornos interactivos. Lee mas ), pero esta será probablemente la primera vez que intente crear un software real para interactuar con él.
Descargas
Primero: debes unirte al Programa Windows Insider para obtener la última versión preliminar de Visual Studio 2015y la última versión de Vista previa de Windows 10. Haz eso ahora, es gratis. Windows 10 es una vista previa del desarrollador y no debe instalarse como su sistema operativo principal. Está lleno de errores como el infierno.
- Disfruta el Programa Windows Insidery descargue Windows 10 Technical Preview
- Obtenga la vista previa de Visual Studio 2015 Community Edition [Ya no está disponible].
Estudio visual es el entorno de desarrollo propio de Microsoft que usaremos para crear una aplicación de Windows C #.
¿Por qué C #? Con fuertes similitudes con Java, es un lenguaje de programación relativamente fácil para los principiantes para poner en marcha una aplicación que funciona, pero potente lo suficiente como para continuar creando algunas aplicaciones impresionantes (incluso juegos: C # es el lenguaje de programación de Unity de elección; consulte nuestro programa gratuito libro electronico, Guía para principiantes para programar un juego con Unity Programación de un juego con la unidad: una guía para principiantesEn el panorama evolutivo del desarrollo de juegos independientes, Unity se ha convertido en una especie de estándar de facto: su bajo costo, facilidad de uso y amplio conjunto de características lo hacen ideal para el desarrollo rápido de juegos. Lee mas ).
Si aún no lo ha hecho, descargue el IDE Arduino del oficial Arduino.cc sitio e instale el firmata estándar en el tablero Lo encontrarás debajo Ejemplos -> Firmata -> Firmata estándar. Esto simplemente lo convierte en un dispositivo serie "tonto", que hará lo que nuestra aplicación le diga: no habrá ninguna aplicación lógica en el tablero en sí, solo una interfaz entre nuestra aplicación y cualquier sensor o dispositivo de salida conectado al Arduino
En términos de cableado, puede pegar un LED directamente al pin 13 y GND como se muestra a continuación, o usar el LED integrado. También necesitará una resistencia variable (he usado un potenciómetro lineal de 10k) que va a A0 (obviamente, con las patas apropiadas en GND y + 5v).
Finalmente, descargue el paquete de cableado remoto desde GitHub [ya no está disponible]. Esta es la capa que necesitamos agregar que permitirá que nuestra aplicación de Windows hable con Arduino.
Crear una aplicación
Continúa y abre Visual Studio. Si es la primera vez que lo ejecuta, se le dará la opción de iniciar sesión. Ignora eso si quieres. Escoger Visual C# como la opción de desarrollo y continuar; De cualquier manera, lleva unos minutos preparar Visual Studio para el primer uso.
Crea un nuevo proyecto, usando la plantilla Visual C# -> Aplicación en blanco (Windows Universal). Llamé a la mía "Prueba Arduino", pero no importa.
En este punto, encontré un error acerca de tener que cambiar Windows 10 al modo desarrollador si realmente quería ejecutar la aplicación. Continúe y haga esto, aunque si encuentra que su compilación de Windows 10 se está bloqueando en esa configuración, es un error conocido y deberá use el editor de políticas de grupo para habilitar el modo desarrollador.
A continuación, haga clic derecho en cualquier lugar del Explorador de la solución (eso es lo correcto) y seleccione Añadir -> Proyecto existente.
Navegue hasta donde descargó los archivos de cableado remoto de Github; si se ha descomprimido, debería ser una carpeta llamada desarrollo de cableado remoto. Allí dentro encontrarás Microsoft Maker.win10; y dentro de eso encontrarás otras 3 carpetas. A su vez, agregue cada uno navegando dentro de esas tres carpetas y buscando el archivo del proyecto.
Si recibe algún error sobre "No se encontró el archivo XAML 8.2", tiene la versión incorrecta de Visual Studio o todavía no tiene instaladas las herramientas de desarrollador. Vuelva al comienzo de este artículo y asegúrese de haber descargado e instalado los dos archivos de Visual Studio vinculados.
Estos 3 proyectos que acaba de agregar son solo capas diferentes de la interfaz de Arduino. Desde el explorador de soluciones, si hace clic derecho y selecciona Dependencias -> Construir dependencias, puede ver qué capas dependen de qué (De serie no depende de nada; Firmata depende de serie; Cableado Remoto depende de ambos). El único cambio que debe hacer aquí es seleccionar su proyecto en el menú desplegable y marcar cada casilla para indicar que su proyecto depende de todos estos otros proyectos.
Un último paso: desde el explorador de soluciones nuevamente, haga clic derecho en el Referencias elemento debajo de su proyecto y seleccione Añadir referencia. Desde la izquierda, navega hasta Windows universal, luego marque la casilla junto a Microsoft Visual C ++ AppLocal Runtime Package. No cierre el diálogo todavía.
Luego navegue a Proyectos (también en el mismo cuadro de diálogo, de la lista de la izquierda), y marque la casilla junto a cada uno de los tres Microsoft Fabricante proyectos
Eso fue más difícil de lo que debería ser, pero solo necesitas hacerlo una vez; ahora podemos divertirnos un poco con la programación. Prometo que no da tanto miedo.
Programación
Si tienes problemas para seguir, el código completo está disponible en Pastebin. Sin embargo, sugiero leer las notas a continuación, de modo que pueda explicar qué hace realmente el código.
Primero, necesitamos agregar un poco de código que dice que necesitamos un puerto USB para comunicarnos con el Arduino. Encuentra el Package.appxmanifest archivo del explorador de soluciones y haga doble clic para editarlo. Necesitamos pegar algo de código aquí: técnicamente, estaremos "insertando un nodo secundario" porque es un archivo XML, pero solo reemplaza todo
El código exacto variará si está utilizando Bluetooth, o si está apuntando a Win8.1 en lugar de 10, pero lo siguiente es para una conexión USB de Windows 10.
Ve a la Construir menú -> Reconstruir solución, y asegúrese de no recibir ningún error.
Desde el explorador de soluciones, expanda el MainPage.xaml nodo. Al hacer doble clic en eso, se cargará el diseñador de formularios al que volveremos más adelante, pero por ahora se abre MainPage.xaml.cs, que contiene la lógica principal detrás de nuestra aplicación.
Agregue dos líneas en la primera sección, para indicar que estaremos "usando" los bits Arduino.
usando Microsoft. Maker.serial; usando Microsoft. Fabricante. Cableado remoto;
También agregué una línea para decir que usaremos Sistema. Diagnósticos; lo que nos permite usar el Depurar. Línea de escritura() función para enviar mensajes de depuración al IDE.
En primer lugar, definamos algunas variables que utilizaremos en todo momento. Agregue estas líneas justo antes del public MainPage () declaración de función.
Conexión USB; Dispositivo remoto arduino; UInt16 lastvalue;
A continuación, acceda a la función MainPage (): esto se llama constructor, y es una función que se llama inmediatamente cuando se crea nuestra aplicación, por lo que la usamos para configurar todo.
Primero, agregue una línea para establecer la conexión serial USB a un dispositivo USB específico (el Arduino).
conexión = nuevo UsbSerial ("VID_2341", "PID_0043");
Tenga en cuenta que las ID de USB de un Arduino Uno estándar ya están codificadas en el bloque, pero puede verificar esto desde Administrador de dispositivos -> Puertos (COM y LPT) -> Arduino Uno -> Detalles pestaña -> Identificadores de hardware.
Luego agregue las siguientes líneas justo después de eso.
arduino = nuevo dispositivo remoto (conexión); conexión. ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig. SERIAL_8N1);
Algunas cosas están sucediendo aquí. Primero, estamos creando un objeto RemoteDevice (recuerde, esa es la capa que nos da un montón de comandos Arduino) y le damos el nombre de variable "arduino". La siguiente línea se adjunta al evento ConnectionEstablished, por decir "Una vez que la conexión USB se haya establecido con éxito, ejecute la función llamada OnConnectionEstablish ()".
La final solo le dice a la conexión que comience ya, a una velocidad de 57600 baudios, usando el 8N1 patrón de bits.
También deberá crear esa función OnConnectionEstablished () ahora, así que muévase fuera de la función MainPage () y simplemente haga una función en blanco de la siguiente manera.
privado vacío OnConnectionEstablished () { // LÓGICA AQUÍ. }
Vuelva al diseñador de formularios que mencioné anteriormente (si ha olvidado cómo: haga doble clic en MainPage.xaml del explorador de soluciones). Crea dos botones. Para hacer esto, abra la pestaña Caja de herramientas que encontrará anclada verticalmente en el lado izquierdo de la pantalla. Arrastre dos botones a la página, luego etiquete uno En y uno Apagado.
Seleccione el primer botón, luego en el cuadro Propiedades en la parte inferior derecha, asígnele el nombre "OnButton". Haga clic en el ícono de rayo pequeño: esta es la lista de eventos y acciones que se utiliza para especificar qué sucede cuando interactúan los elementos del formulario. Escriba "OnButtonClick" en el Hacer clic campo.
Cuando presione Intro, creará automáticamente el código para ese evento de botón en particular y cargará la vista de código estándar. Vuelva al diseñador de formularios por ahora y haga lo mismo para el botón Desactivar, pero esta vez llámelo "OffButton" y "OffButtonClick". Mientras esté allí, continúe y nombre el formulario de la ventana principal detrás de él como "Página"; lo usaremos más adelante. Ahora debería tener algo parecido a la captura de pantalla a continuación:
Vuelva al diseñador nuevamente por un momento, y nuevamente para cada uno de los botones, configure el está habilitado propiedad a Falso. Puede hacerlo escribiendo la propiedad directamente en la vista de código XAML, o puede encontrar que casilla de verificación en el cuadro Propiedades (haga clic en la llave si todavía está en la vista de acciones), está debajo de expandido Común categoría de propiedades.
Esto no es esencial, pero es una buena práctica deshabilitar los botones hasta que estemos seguros de que Arduino está enchufado y conectado.
Para volver a habilitarlos, agregue lo siguiente a la función OnConnectionEstablished (). No se preocupe demasiado por el significado exacto del código por el momento, es la forma en que se supone que debe manejar las actualizaciones de formularios en las aplicaciones modernas de Windows para garantizar un buen rendimiento. Una vez que nos hemos conectado al Arduino, configuramos el Está habilitado propiedad de los botones a verdadero.
private void OnConnectionEstablished () {// habilita los botones on off var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normal, nuevo Windows. UI.Core. DispatchedHandler (() => {OnButton. IsEnabled = verdadero; OffButton. IsEnabled = verdadero; })); arduino.pinMode (14, PinMode. TÉRMINO ANÁLOGO); arduino AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Depurar. WriteLine (arduino.analogRead (14)); }
También verá una declaración pinMode () más familiar, para decir que tenemos una entrada analógica en el pin 14 (hay 13 pines digitales, por lo que A0 comienza a contar desde 14). Luego tenemos otra declaración de evento: cuando se actualiza el valor del pin analógico, llame a la función MyAnalogPinUpdateCallback.
Finalmente, necesitamos editar los eventos de clic del botón y decidir qué sucede cuando cambia la entrada analógica. Comencemos con los botones. Podemos interactuar con el Arduino usando nombres de funciones similares al código Arduino normal, de la siguiente manera:
arduino.digitalWrite (13, PinState. ALTO);
Pegue eso para el evento onButton, y esto para el offButton:
arduino.digitalWrite (13, PinState. BAJO);
Simple. La entrada analógica del Arduino es un poco más complicada, pero esto es lo que se me ocurrió.
public void MyAnalogPinUpdateCallback (pin de byte, valor UInt16) {if (value-lastvalue> 5 || lastvalue-value> 5) {
Depurar. WriteLine ("Pin A" + pin + "ahora es" + valor); acción var = Despachador. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normal, nuevo Windows. UI.Core. DispatchedHandler (() => {byte num = Convert. ToByte (valor / 4); Página. Fondo = nuevo SolidColorBrush (Windows. UI.Color. FromArgb (255, num, num, Convertir. ToByte (255 números))); })); } lastvalue = value; }
Tenga en cuenta que estoy almacenando el valor anterior que recibimos del pin en una variable llamada lastValue; Esto nos permite verificar cuánto cambia el valor y solo reaccionar si la diferencia es significativa (un tipo de suavizado de señal). Si cambia en cualquier dirección más de 5 (0-1024 es el rango completo de valores), entonces reaccionamos cambiando el valor de color de fondo RGB del elemento de página.
Dado que solo tenemos un número con el que trabajar, y tenía prisa, puse las cosas un poco aquí con los 3 números necesarios para hacer R, G y B. Probablemente se te ocurra algo mucho más bonito.
Terminado
Eso es todo: ejecuta el código y deberías ver algo similar a la captura de pantalla anterior. Los botones encenderán y apagarán el LED, y la resistencia variable cambiará el fondo. Si tuvo problemas, no olvide el el código completo está aquí.
Ahora que puedes escribir tus propias aplicaciones de Windows 10 que interactúan con Arduino, ¿qué harás? Tal vez un controlador de domótica Guía de automatización del hogar con Raspberry Pi y ArduinoEl mercado de la automatización del hogar está inundado de sistemas de consumo caros, incompatibles entre sí y costosos de instalar. Si tienes un Raspberry Pi y un Arduino, básicamente puedes lograr lo mismo en ... Lee mas ? Házmelo saber en los comentarios.
James tiene una licenciatura en Inteligencia Artificial y está certificado por CompTIA A + y Network +. Es el desarrollador principal de MakeUseOf, y pasa su tiempo libre jugando VR paintball y juegos de mesa. Ha estado construyendo computadoras desde que era un niño.