Propaganda
A Microsoft está apostando no Windows 10, finalmente realizando o sonho de ter aplicativos que executam várias plataformas. Combinado com o suporte oficial ao Arduino, você tem uma nova e poderosa ferramenta à sua disposição: a capacidade de criar facilmente aplicativos universais do Windows que possuem uma conexão de hardware com o mundo real.
Aqui está como começar, mesmo que você nunca tenha programado um aplicativo do Windows antes.
Antes de continuar lendo, confira a demonstração do que vamos fazer.
Devo observar que não utilizo o Visual Studio, nem sequer toquei em C #, há cerca de 10 anos. Estou abordando isso da perspectiva de uma nova instalação do Visual Studio e esquecendo tudo o que sei.
Se você já é bastante experiente em programação de aplicativos para Windows ou mesmo procura uma maneira simples de começar a programar no Windows sem esse material do Arduino, experimente o guia para criar um aplicativo simples do Visual Basic Como você pode criar seu próprio aplicativo simples com o VBA Deseja saber como criar seu próprio aplicativo VBA para resolver problemas? Use estas dicas para criar seu próprio software VBA. consulte Mais informação . Iniciantes em programação absoluta podem querer conferir Programação 101 Noções básicas de programação de computadores 101 - Variáveis e tipos de dadosTendo introduzido e falado um pouco sobre Programação Orientada a Objetos antes e onde seu homônimo vem, pensei que era hora de passarmos pelo básico absoluto da programação em um idioma não específico da linguagem maneira. Este... consulte Mais informação (e parte 2 Os princípios absolutos da programação para iniciantes (parte 2)Na parte 2 do nosso guia para iniciantes em programação, falarei sobre o básico de funções, valores de retorno, loops e condicionais. Certifique-se de ler a parte 1 antes de abordar isso, onde expliquei o ... consulte Mais informação ) primeiro artigo.
Você deve estar familiarizado com alguns projetos Arduino para iniciantes 15 grandes projetos de Arduino para iniciantesInteressado em projetos do Arduino, mas não sabe por onde começar? Esses projetos iniciantes o ensinarão como começar. consulte Mais informação (e talvez até leia nossa Guia do Arduino Introdução ao Arduino: Guia para iniciantesO Arduino é uma plataforma de prototipagem eletrônica de código aberto baseada em hardware e software flexível e fácil de usar. Destina-se a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. consulte Mais informação ), mas provavelmente será a primeira vez que você tenta criar um pouco de software para interagir com ele.
Transferências
Primeiro: você precisa participar do Programa Windows Insider para obter a última edição prévia do Visual Studio 2015e a versão mais recente do Visualização do Windows 10. Faça isso agora - é grátis. O Windows 10 é uma visualização do desenvolvedor e não deve ser instalado como seu sistema operacional principal. É buggy pra caramba.
- Junte-se a Programa Windows Insidere baixe a Visualização técnica do Windows 10
- Obtenha a visualização do Visual Studio 2015 Community Edition [Não está mais disponível].
Estúdio visual é o próprio ambiente de desenvolvimento da Microsoft que usaremos para criar um aplicativo C # Windows.
Por que c #? Com fortes semelhanças com Java, é uma linguagem de programação relativamente fácil para iniciantes, com um aplicativo em funcionamento, mas poderoso o suficiente para que você possa criar alguns aplicativos impressionantes (até jogos: C # é a linguagem de script de escolha da Unity - confira nosso eBook, Guia do iniciante para programar um jogo com o Unity Programando um jogo com unidade: um guia para iniciantesNo cenário em evolução do desenvolvimento de jogos independentes, o Unity emergiu como um padrão de fato: seu baixo custo, facilidade de uso e amplo conjunto de recursos o tornam ideal para o desenvolvimento rápido de jogos. consulte Mais informação ).
Se você ainda não o fez, baixe o Arduino IDE do oficial Arduino.cc site e instale o firmata padrão no quadro. Você encontrará em Exemplos -> Firmata -> Firmata Padrão. Isso apenas o transforma em um dispositivo serial “burro”, que fará o que o aplicativo solicitar - não haverá aplicativo lógica na placa, apenas uma interface entre nosso aplicativo e quaisquer sensores ou dispositivos de saída conectados ao Arduino.
Em termos de fiação, você pode fixar um LED diretamente no pino 13 e GND conforme abaixo, ou usar o LED integrado. Você também precisará de um resistor variável (usei um potenciômetro linear de 10k) entrando em A0 (com as pernas apropriadas no GND e + 5v também, obviamente).
Por fim, baixe o pacote Remote Wiring do GitHub [No Longer Available]. Essa é a camada que precisamos adicionar que permitirá que nosso aplicativo do Windows fale com o Arduino.
Criar um aplicativo
Vá em frente e abra o Visual Studio. Se é a primeira vez que você o executa, você tem a opção de fazer login. Ignore isso se quiser. Escolher Visual C # como opção de desenvolvimento e continuar; de qualquer maneira, leva alguns minutos para preparar o Visual Studio para o primeiro uso.
Crie um novo projeto, usando o modelo Visual C # -> Aplicativo em branco (Windows Universal). Chamei o meu de "Teste do Arduino", mas isso não importa.
Nesse ponto, encontrei um erro ao mudar o Windows 10 para o modo de desenvolvedor se realmente desejava executar o aplicativo. Vá em frente e faça isso, embora se você perceber que a versão do Windows 10 está falhando nessa configuração, é um bug conhecido e será necessário use o editor de política de grupo para ativar o modo de desenvolvedor.
Em seguida, clique com o botão direito do mouse em qualquer lugar do Solution Explorer (é isso mesmo) e selecione Adicionar -> Projeto existente.
Navegue até o local em que você baixou os arquivos de fiação remota no Github - se tiver sido descompactado, deve ser uma pasta chamada desenvolvimento de fiação remota. Lá dentro você encontrará Microsoft Maker.win10; e dentro disso você encontrará outras 3 pastas. Por sua vez, adicione cada um navegando dentro dessas três pastas e localizando o arquivo do projeto.
Se você receber algum erro sobre o "arquivo XAML 8.2 não encontrado", você tem a versão errada do Visual Studio ou ainda não possui as ferramentas de desenvolvedor instaladas. Volte ao início deste artigo e verifique se baixou e instalou os dois arquivos vinculados do Visual Studio.
Esses três projetos que você acabou de adicionar são apenas camadas diferentes da interface do Arduino. No gerenciador de soluções, se você clicar com o botão direito do mouse e selecionar Dependências -> Construir dependências, você pode ver quais camadas dependem de quais (Serial não depende de nada; Firmata depende de serial; RemoteWiring depende de ambos). A única alteração que você precisa fazer aqui é selecionar seu projeto no menu suspenso e marcar cada caixa para indicar que seu projeto depende de todos esses outros projetos.
Uma última etapa: no Solution Explorer novamente, clique com o botão direito do mouse no Referências item no seu projeto e selecione Adicionar Referência. À esquerda, navegue até Windows Universale marque a caixa ao lado de Pacote de tempo de execução do Microsoft Visual C ++ AppLocal. Não feche a caixa de diálogo ainda.
Em seguida, navegue até Projetos (também na mesma caixa de diálogo, na lista à esquerda) e marque a caixa ao lado de cada um dos três Microsoft criador projetos.
Isso foi mais difícil do que deveria ser, mas você só precisa fazer isso uma vez; agora podemos nos divertir com a programação - prometo que não é tão assustador.
Programação
Se você tiver problemas para acompanhar, o código completo está disponível no Pastebin. No entanto, sugiro fortemente a leitura das notas abaixo, para que eu possa explicar o que o código realmente faz.
Primeiro, precisamos adicionar um pouco de código que diga que precisamos de uma porta USB para se comunicar com o Arduino. Encontre o Package.appxmanifest arquivo do gerenciador de soluções e clique duas vezes para editá-lo. Precisamos colar algum código aqui - tecnicamente, estaremos "inserindo um nó filho" porque é um arquivo XML, mas apenas substituímos todo
O código exato variará se você estiver usando o Bluetooth ou segmentando o Win8.1 em vez de 10, mas o seguinte é para uma conexão USB do Windows 10.
Vou ao Construir menu -> Solução de reconstrução, e verifique se você não recebeu nenhum erro.
No explorador de soluções, expanda o MainPage.xaml nó. Clicar duas vezes nele carregará o criador de formulários para o qual retornaremos mais tarde, mas, por enquanto, abriremos MainPage.xaml.cs, que contém a principal lógica por trás do nosso aplicativo.
Adicione duas linhas na primeira seção, para indicar que "usaremos" os bits do Arduino.
usando a Microsoft. Maker.serial; usando a Microsoft. Criador. RemoteWiring;
Também adicionei uma linha para dizer que usaremos Sistema. Diagnóstico; o que nos permite usar o Depurar. WriteLine () para gerar mensagens de depuração para o IDE.
Primeiro, vamos definir algumas variáveis que usaremos o tempo todo. Adicione essas linhas imediatamente antes do public MainPage () declaração de função.
Conexão UsbSerial; RemoteDevice arduino; UInt16 lastvalue;
Em seguida, pule para a função MainPage () - isso é chamado de construtor, e é uma função que é chamada imediatamente quando nosso aplicativo é criado, por isso usamos para configurar tudo.
Primeiro, adicione uma linha para estabelecer a conexão serial USB a um dispositivo USB específico (o Arduino).
conexão = novo UsbSerial ("VID_2341", "PID_0043");
Observe que os IDs USB de um Arduino Uno padrão já estão codificados no bloco, mas você pode verificar isso em Gerenciador de Dispositivos -> Portas (COM e LPT) -> Arduino Uno -> Detalhes guia -> IDs de hardware.
Em seguida, adicione as seguintes linhas logo após isso.
arduino = novo RemoteDevice (conexão); conexão. ConnectionEstablished + = OnConnectionEstablished; connection.begin (57600, SerialConfig. SERIAL_8N1);
Algumas coisas estão acontecendo aqui. Primeiro, estamos criando um objeto RemoteDevice - lembre-se, essa é a camada que nos fornece vários comandos do Arduino - e o nome da variável "arduino". A próxima linha está anexada ao evento ConnectionEstablished, para dizer “Uma vez que a conexão USB tenha sido estabelecida com sucesso, execute a função chamada OnConnectionEstablish ()”.
A final apenas diz à conexão para iniciar já, a uma taxa de transmissão de 57600, usando o Padrão de bits 8N1.
Você também precisará criar a função OnConnectionEstablished () agora. Portanto, saia da função MainPage () e faça uma função em branco da seguinte maneira.
private void OnConnectionEstablished () { // LÓGICA AQUI. }
Volte para o criador de formulários que mencionei anteriormente (se você esqueceu como: clique duas vezes em MainPage.xaml do gerenciador de soluções). Crie dois botões. Para fazer isso, abra a guia Caixa de ferramentas que você encontrará afixada verticalmente no lado esquerdo da tela. Arraste dois botões para a página e identifique um Em e um Fora.
Selecione o primeiro botão e, na caixa Propriedades, no canto inferior direito, nomeie-o como "OnButton". Clique no ícone pequeno relâmpago - esta é a lista de eventos e ações usada para especificar o que acontece quando os elementos do formulário são interagidos. Digite "OnButtonClick" no campo Clique campo.
Quando você pressiona enter, ele cria automaticamente o código para esse evento específico do botão e carrega a visualização de código padrão. Volte para o designer de formulários por enquanto e faça o mesmo com o botão Desligar, mas desta vez chame-o de "OffButton" e "OffButtonClick". Enquanto você estiver lá, vá em frente e nomeie o formulário da janela principal como "Página" - usaremos isso mais tarde. Agora você deve ter algo parecido com a captura de tela abaixo:
Volte ao designer novamente por um momento e, novamente, para cada um dos botões, defina o está ativado propriedade para Falso. Você pode fazer isso digitando a propriedade diretamente na visualização de código XAML ou pode encontrar que na caixa Propriedades (clique na chave inglesa se você ainda estiver na exibição de ações) - está abaixo do expandido Comum categoria de propriedades.
Isso não é essencial, mas é uma boa prática desativar os botões até termos certeza de que o Arduino está conectado e conectado.
Para reativá-los, adicione o seguinte à função OnConnectionEstablished (). No momento, não se preocupe muito com o significado exato do código; é assim que você deve lidar com as atualizações de formulário nos aplicativos modernos do Windows para garantir um bom desempenho. Depois de nos conectarmos ao Arduino, definimos o Está ativado propriedade dos botões para true.
private void OnConnectionEstablished () {// ativa os botões liga / desliga var action = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normal, novo Windows. UI.Core. DispatchedHandler (() => {OnButton. IsEnabled = true; OffButton. IsEnabled = true; })); arduino.pinMode (14, PinMode. ANALOG); arduino. AnalogPinUpdatedEvent + = MyAnalogPinUpdateCallback; Depurar. WriteLine (arduino.analogRead (14)); }
Você também verá uma declaração pinMode () mais familiar, para dizer que temos uma entrada analógica no pino 14 (existem 13 pinos digitais, então A0 começa a contar a partir de 14). Temos outra declaração de evento - quando o valor do pino analógico for atualizado, chame a função MyAnalogPinUpdateCallback.
Finalmente, precisamos editar os eventos de clique no botão e decidir o que acontece quando a entrada analógica é alterada. Vamos começar com os botões. Podemos interagir com o Arduino usando nomes de funções semelhantes aos códigos regulares do Arduino, da seguinte maneira:
arduino.digitalWrite (13, PinState. ALTO);
Cole isso no evento onButton e isso no offButton:
arduino.digitalWrite (13, PinState. BAIXO);
Simples. A entrada analógica do Arduino é um pouco mais complicada, mas aqui está o que eu criei.
public void MyAnalogPinUpdateCallback (byte pin, valor UInt16) {if (valor-último-valor> 5 || último-valor-valor> 5) {
Depurar. WriteLine ("Pino A" + pino + "agora é" + valor); ação var = Dispatcher. RunAsync (Windows. UI.Core. CoreDispatcherPriority. Normal, novo Windows. UI.Core. DispatchedHandler (() => {byte num = Converter. ToByte (valor / 4); Página. Segundo plano = novo SolidColorBrush (Windows. UI.Color. FromArgb (255, num, num, Convert. ToByte (255-num))); })); } lastvalue = value; }
Observe que estou armazenando o valor anterior que recebemos do alfinete em uma variável chamada lastValue; isso nos permite verificar quanto o valor é alterado e reagir apenas se a diferença for significativa (uma espécie de suavização de sinal). Se ele mudar em qualquer direção mais de 5 (0-1024 é o intervalo completo de valores), reagimos alterando o valor da cor de fundo RGB do elemento Page.
Como temos apenas um número para trabalhar, e eu estava com pressa, eu enganei um pouco as coisas aqui com os três números necessários para criar R, G e B. Você provavelmente pode criar algo muito mais bonito.
Acabado
É isso aí - execute o código e você verá algo semelhante à captura de tela acima. Os botões acendem e apagam o LED, e o resistor variável muda o fundo. Se você teve problemas, não esqueça o o código completo está aqui.
Agora que você pode escrever seus próprios aplicativos do Windows 10 que interagem com o Arduino, o que você fará? Talvez um controlador de automação residencial Guia de automação residencial com Raspberry Pi e ArduinoO mercado de automação residencial é inundado por sistemas de consumo caros, incompatíveis entre si e com instalação dispendiosa. Se você tem um Raspberry Pi e um Arduino, basicamente pode conseguir a mesma coisa em ... consulte Mais informação ? Deixe-me saber nos comentários.
James é bacharel em Inteligência Artificial e possui certificação CompTIA A + e Network +. Ele é o principal desenvolvedor do MakeUseOf e passa seu tempo livre jogando paintball e jogos de tabuleiro em VR. Ele está construindo PCs desde que era criança.