Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA
Biblioteca gratuita / Esquemas de dispositivos radioeletrônicos e elétricos

Arduino. Operações de E/S digitais. Enciclopédia de rádio eletrônica e engenharia elétrica

Biblioteca técnica gratuita

Enciclopédia de eletrônica de rádio e engenharia elétrica / Designer de rádio amador

Comentários do artigo Comentários do artigo

Tendo carregado o ambiente de desenvolvimento do Arduino IDE, você pode ver que no espaço em branco do futuro programa exibido na janela que se abre, existem duas funções: setup () e loop (). A função setup() inicia qualquer programa. Ele o executa uma vez imediatamente após a alimentação ser aplicada à placa e também a cada vez após pressionar o botão RESET na placa, que coloca o microcontrolador em seu estado inicial. Dentro desta função são configurados os modos de operação das portas, inicializados a interface serial e demais dispositivos periféricos, tanto dentro do microcontrolador quanto externos a ele conectados. Esta função, mesmo que esteja vazia, deve estar presente no programa.

A função loop() contém um loop infinito que o microcontrolador executa repetidamente, até que a energia seja desligada. Ele interroga sensores externos, envia comandos para atuadores, realiza cálculos e outras operações. Como exemplo, vamos pegar um programa simples que, com um período de um segundo, acende e depois apaga o LED embutido na placa Arduino, marcado nela com a letra L e conectado ao pino digital D13.

Este programa é um dos exemplos padrão fornecidos com o Arduino IDE. Na tabela. 1 apresenta seu texto na forma em que está anexado. Observe que, no jargão do Arduino, o código-fonte do programa é chamado de "sketch" - um esboço.

Tabela 1

Arduíno. Operações de E/S Digital

Fragmentos de programa relacionados a um bloco são delimitados por chaves { e }. A seguir, nos referiremos a eles como colchetes de operadores. O texto do programa pode conter um comentário explicando sua essência e nuances de trabalho. Um comentário de várias linhas é limitado a combinações de caracteres /* (no início) e */ (no final). Os caracteres // iniciam um comentário terminando no final da mesma linha. Durante a tradução (transformação do texto do programa em uma linguagem de programação compreensível para uma pessoa em código de máquina executável pelo microcontrolador), esta parte do texto é completamente ignorada.

A única linha executável no corpo da função setup()

pinMode (13, OUTPUT);

define o pino D13 da placa Arduino para o modo de saída.

A função loop() começa com a linha

gravação digital(13, ALTO);

Define o nível lógico alto da saída D13. No Arduino UNO, é igual à tensão de alimentação (+5 V) relativa ao fio comum. Isso acenderá o LED.

É seguido pela linha

atraso (1000);

Isso faz com que o programa executável não salte para a próxima linha pelo tempo especificado entre colchetes em milissegundos. Após uma pausa, o programa coloca a saída D13 em um nível lógico baixo correspondente ao potencial do fio comum, que apaga o LED. Esta operação é descrita pela linha

digitalwrite(13, BAIXO);

A seguir, o programa mantém novamente uma pausa de 1 s, após a qual repete desde o início toda a sequência de operações descritas no corpo da função loop(). Isso continua até que o microcontrolador seja desligado.

A função delay() deve ser usada com cuidado. Se algum evento importante ocorrer durante o intervalo de tempo especificado nele (por exemplo, um sensor é acionado por um curto período de tempo), o programa não responderá a esse evento.

Vale lembrar que a corrente máxima fornecida pelo pino do Arduino, funcionando como saída, é de 40 mA, enquanto a corrente total de todas as saídas não deve ultrapassar 300 mA. Isso é suficiente para alimentar LEDs comuns, você também pode conectar diretamente um relé reed de baixa tensão ou um motor de vibração de baixa potência de um telefone celular à saída. Você não conseguirá conectar nada mais potente sem um amplificador, e isso é perigoso - você pode estragar o microcontrolador.

As entradas analógicas A0-A5 podem ser utilizadas como entradas e saídas digitais juntamente com D0-D13 se necessário, referindo-se a elas respectivamente pelos números 14 a 19.

Agora vamos modificar um pouco o programa. Para um algoritmo tão simples, essas modificações não são fundamentais, mas em casos mais complexos, tais mudanças são importantes. Em primeiro lugar, vamos substituir o comentário em inglês por russo. Por exemplo, a linha que liga o LED será comentada da seguinte forma: "Ligue o LED". Você não deve escrever: "Definimos um nível alto na linha D13", isso já está claro no texto do programa.

Claro, um comentário detalhado em cada linha geralmente é redundante, mas não se deve ter preguiça de escrevê-lo. Depois de algum tempo, os detalhes do programa serão esquecidos, até mesmo o próprio autor, apenas um comentário o ajudará a entender rapidamente sua essência.

A seguir, alteraremos o programa para que o LED conectado não ao pino D13, mas ao pino D12 do Arduino, pisque. Como não há LED conectado ao D12 na placa, é necessário um LED externo com um resistor em série. Conecte-o de acordo com o diagrama mostrado na Fig. 1. O resistor adicional é selecionado de forma que o LED de corte de corrente esteja entre 5 ... 10 mA. Isso fornecerá um brilho bastante brilhante para a maioria dos LEDs. A placa Arduino UNO com um LED externo conectado é mostrada na fig. 2.

Arduíno. Operações de E/S Digital
Arroz. 1. Diagrama de conexão do LED

Arduíno. Operações de E/S Digital
Arroz. 2. Placa Arduino UNO com LED externo conectado

É aconselhável fazer vários LEDs com resistores adicionais. Eles serão úteis não tanto para fazer um autômato de efeitos de iluminação, mas para verificar rapidamente os níveis de tensão nas saídas da placa e monitorar sua mudança de acordo com o programa que está sendo depurado.

Para controlar um LED conectado não ao D13, mas ao D12, neste caso, bastaria corrigir todos os números de 13 a 12 no texto do programa. Além dos comentários, o número 13 aparece no texto do programa apenas três vezes, por isso não é difícil mudá-lo. No entanto, à medida que o volume do programa aumenta, a situação muda fundamentalmente. Uma coisa é substituir três números e outra é substituir várias dezenas de números idênticos em lugares diferentes de um longo programa. Além disso, pode acontecer que em algum lugar esse número signifique algo completamente diferente e você não precise alterá-lo.

Para facilitar tais alterações, declaramos uma variável no início do programa e atribuímos a ela um valor correspondente ao número da saída desejada:

int LED PIN = 12;

Além disso, sempre que ocorrer o número de saída 13, iremos substituí-lo pelo nome dessa variável. Se agora você precisar alterar novamente a conexão do LED, bastará alterar apenas um número na descrição da variável LEDPIN.

O programa modificado é mostrado na Tabela. 2. Deve ser carregado na memória do microcontrolador da placa Arduino. Para fazer isso, selecione "Arquivo→Carregar" no menu principal do IDE. Se o programa digitado na janela de edição não tiver sido salvo em um arquivo com antecedência, o IDE solicitará que você especifique o nome do arquivo no qual ele será salvo. Após algum tempo, necessário para que a IDE do Arduino traduza o programa em códigos de máquina compreensíveis ao microcontrolador, os leds "Rx" e "Tx" começarão a piscar na placa, sinalizando a recepção e transmissão de mensagens através da interface serial do microcontrolador.

Tabela 2

Arduíno. Operações de E/S Digital

Se tudo foi feito corretamente, um relatório sobre o carregamento correto aparecerá na parte inferior da janela do programa. Ele exibirá informações sobre quanto dos 32 KB disponíveis da memória do programa do microcontrolador o programa carregado ocupou e quanta RAM é necessária para acomodar as variáveis. O LED conectado ao pino D12 começará a piscar com um período de 2 s.

Se você conectar uma linha de cinco LEDs aos pinos D8-D12 do Arduino (Fig. 3) e carregar o programa mostrado na Tabela. 3, acenderá alternadamente por 500 ms cada um desses LEDs e o LED conectado ao D13, instalado na placa. Este programa poderia ser muito mais longo se o problema fosse resolvido "na testa", simplesmente repetindo o número necessário de vezes nas linhas de função setup() com diferentes números numéricos de saídas, configurando-as para saída e em a função loop() - uma sequência de linhas incluindo o próximo LED que pausa e desliga. As instruções de loop for ajudaram a encurtar o programa.

Arduíno. Operações de E/S Digital
Arroz. 3. Uma linha de cinco LEDs

Tabela 3

Arduíno. Operações de E/S Digital

Os parênteses após a palavra-chave for indicam o valor inicial da variável do loop - LEDPIN=8, a condição de execução do corpo do loop - LEDPIN<14 e a operação realizada com a variável do loop após cada execução de seu corpo - LEDPIN++, o que significa que o valor da variável é incrementado em um. Se necessário, os parâmetros do loop for podem ser facilmente alterados.

O corpo do loop entre colchetes do operador segue a condição. No primeiro caso (na função setup()), consiste em uma única linha que será executada seis vezes com valores de LEDPIN de 8 a 13. No segundo caso (na função loop()), o loop A instrução especifica uma sequência de três linhas a serem executadas seis vezes com os mesmos valores da variável.

Além de controlar dispositivos externos em qualquer sistema, é necessário receber informações de diversos sensores. Sem eles, mesmo o robô mais complexo será apenas um brinquedo mecânico, incapaz de mudar seu comportamento dependendo das condições externas.

Com uma tensão de alimentação de 5 V, e no Arduino UNO é exatamente isso, as entradas digitais do microcontrolador são garantidas para serem percebidas como uma tensão logicamente alta (correspondente a uma unidade lógica) de mais de +3 V, e como um logicamente baixo (correspondente a um zero lógico) - uma tensão inferior a +1,5 V Valores intermediários (incluindo quando a entrada não está conectada em nenhum lugar) fornecem um resultado imprevisível e caótico, dependendo da instância do microcontrolador, sua tensão de alimentação, temperatura e outros fatores. Portanto, é desejável que a entrada digital sempre tenha uma tensão de nível lógico alto ou baixo conhecido.

O sensor mais simples é um botão comum sem fixação, conectado conforme mostrado na fig. 4 a um dos pinos externos da placa Arduino, neste caso ao D7. Ao soltar o botão SB1, o nível de tensão na entrada do microcontrolador será baixo (o resistor R1 fornecerá), quando pressionado, será alto. Se você alterar o botão e o resistor de lugar (Fig. 5), os níveis também mudarão de lugar. Agora, o resistor R1 fornecerá um nível alto quando o botão for liberado e pressioná-lo definirá um nível baixo.

Arduíno. Operações de E/S Digital
Arroz. 4. Diagrama de conexão do sensor

Arduíno. Operações de E/S Digital
Arroz. 5. Diagrama de conexão do sensor

A resistência do resistor R1 não deve ser muito pequena, pois a corrente que passa por ele quando o botão é pressionado é consumida da fonte de alimentação e reduz a eficiência do dispositivo. No caso da alimentação de um computador de mesa ou da rede elétrica, isso não é tão importante, mas com a versão de bateria do Arduino, a baixa resistência do resistor R1 reduzirá muito a possível vida útil da bateria do dispositivo.

Observe que o microcontrolador possui resistores internos para executar a função do resistor R1. Eles são desativados por padrão. Porém, para conectar, digamos, um resistor interno na entrada D2, basta adicionar a linha na função setup()

pinMode(2, INPUT_PULLUP);

Considere a entrada digital usando o exemplo dado na Tabela. 4 programas que apagam o LED conectado ao pino 13 quando você pressiona o botão conectado ao pino D7. É baseado no operador condicional

if (doença)

{

/*Ações se a condição for atendida*/

}

outro

{

/*Ações se a condição não for atendida*/

}

Tabela 4

Arduíno. Operações de E/S Digital

Serve para selecionar uma ação dependendo se a condição especificada nela é atendida ou não. Se nada precisar ser feito se a condição não for atendida, o fragmento else {...} pode ser omitido. O uso de declarações condicionais dá flexibilidade ao programa. Dependendo do estado dos sensores externos, eles alteram a ordem do programa e o comportamento do dispositivo equipado com um microcontrolador.

Na verdade, a verificação do estado do botão é realizada por um operador lógico

digitalRead(MAS) = ALTO

Neste caso, compara o valor retornado pela função de leitura do estado do pino BUT ao qual o botão está conectado com a constante lógica HIGH, e se forem iguais, assume o valor TRUE (true), caso contrário - FALSE (falso). Observe que a operação de teste de igualdade é indicada por dois sinais de igual em uma linha. E um sinal de igual denota a operação de atribuir um valor a uma variável. Não os confunda, isso leva a erros difíceis de encontrar.

Usando o exemplo do programa que acabamos de considerar, é fácil ver a que leva o uso impreciso da função delay(). Se você "descomentar" (remover as duas linhas sólidas anteriores) a função delay( 10000) na penúltima linha do programa, depois de cada execução do corpo da função loop(), o programa aguardará 10 segundos antes de continuar sua trabalhar. Naturalmente, todos os botões pressionados durante esse período serão ignorados.

A capacidade do Arduino de se comunicar com um computador pessoal por meio de uma interface serial é muito útil. Ele pode ser usado não apenas para baixar o programa para o microcontrolador, mas também para troca bidirecional de informações durante sua execução. Por meio dessa interface, o Arduino pode transferir as informações coletadas para o computador para processamento ou armazenamento complexo e receber comandos e dados iniciais dele. Dois dispositivos microcontroladores também podem interagir dessa maneira. A porta serial do microcontrolador utiliza os pinos digitais da placa D0 e D1, portanto ao organizar e utilizar a comunicação através da porta serial, eles não podem ser utilizados para mais nada.

Por exemplo, considere o programa mostrado na Tabela. 5, que envia informações sobre o estado da saída D12 para o computador. Se o nível for alto, o programa envia o código de símbolo H para o computador e, se for baixo, o código de símbolo L. Qualquer programa que possa funcionar com a porta COM do computador pode receber essa informação. O Arduino IDE possui um monitor de porta serial integrado que permite ao computador exibir mensagens de texto recebidas da placa Arduino e enviar mensagens digitadas pelo usuário no teclado do computador.

Tabela 5

Arduíno. Operações de E/S Digital

A linha Serial.begin(9600) na função setup() inicializa a porta serial do microcontrolador e define a taxa de transmissão para 9600 baud. Você também pode definir outras taxas de transmissão padrão: 1200, 2400, 4800, 9600, 19200, 38400, 57600 ou 115200 Baud. Neste caso, a velocidade definida no microcontrolador deve corresponder à velocidade para a qual está configurada a porta COM do computador ou outro dispositivo com o qual as informações devem ser trocadas. A velocidade permitida na qual a recepção confiável de informações é garantida depende do comprimento do cabo que conecta o Arduino ao computador. Por exemplo, usando um cabo USB padrão de 1,8 m de comprimento, o computador receberá informações do Arduino mesmo na velocidade de 115200 baud. E se você adicionar um cabo de extensão de cinco metros a esse cabo, a velocidade permitida cairá para 4800 baud.

A função Serial.print() envia informações para a porta serial, onde o nome da variável cujo valor Send deve ser enviado, ou a string de caracteres a ser transferida, é indicado entre parênteses. Para distingui-lo de um nome de variável, a cadeia de caracteres é colocada entre aspas. Há uma modificação nesta função Serial.println(). A diferença é que, tendo passado as informações entre colchetes (se houver), complementa-as com caracteres de retorno de carro e avanço de linha. Inicia uma nova linha e combinação de caracteres na string fornecida.

Usando o programa acima, é fácil garantir que, se nenhum sinal externo for aplicado à saída do microcontrolador configurada como uma entrada, seu estado pode ser qualquer um e mudar aleatoriamente durante a operação. Você também pode determinar o valor real da tensão, que o microcontrolador deixa de perceber como um nível lógico baixo e passa a percebê-lo como um nível alto.

A seguir, considere um programa (Tabela 6) que liga e desliga o LED da placa de acordo com comandos recebidos do computador pela porta serial. Deve-se ter em mente que as informações são transmitidas pela porta serial em bytes. O receptor da porta serial, operando independentemente do processador do microcontrolador, recebe esses bytes e os armazena em seu buffer de 64 bytes.

Tabela 6.

Arduíno. Operações de E/S Digital

Para que o programa determine se há bytes recebidos no buffer, existe uma função Serial.available() que retorna o número deles. Se estiverem, o programa usando o Serial. read() lê um byte do buffer e atribui seu valor (o código de caractere recebido) a uma variável C char. Em seguida, as declarações condicionais comparam o código com os padrões e, se corresponderem, ligam ou desligam o LED.

Você pode enviar comandos usando o mesmo monitor de porta serial que foi usado para receber informações. Na parte superior de sua janela (Fig. 6) existe uma linha para inserir os caracteres transmitidos. Depois de inserir um símbolo ou sua sequência no teclado, pressione o botão da tela "Enviar". Na placa Arduino, o LED “Rx” deve piscar brevemente, indicando que o microcontrolador recebeu informações. Obviamente, a transmissão manual de códigos é fácil, mas está longe de ser o melhor método de gerenciamento. Normalmente, um programa especial de controle de computador é escrito para isso.

Arduíno. Operações de E/S Digital
Arroz. 6. Janela do programa

Assim, usando a placa do microcontrolador Arduino, você pode criar com relativa facilidade vários dispositivos eletrônicos simples. Se nos limitarmos à entrada-saída digital, podem ser efeitos de iluminação automáticos, o alarme anti-roubo mais simples, medidores de vários parâmetros com sensores digitais. Além disso, é fácil fazer com que o dispositivo interaja com o computador. Naturalmente, os recursos do Arduino estão longe de serem limitados aos descritos neste artigo. Esta placa também pode trabalhar com sinais analógicos, que serão discutidos mais adiante.

Os programas para Arduino mencionados no artigo podem ser baixados em ftp://ftp.radio.ru/pub/2016/08/diginout.zip.

Autor: D. Lekomtsev

Veja outros artigos seção Designer de rádio amador.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

Inaugurado o observatório astronômico mais alto do mundo 04.05.2024

Explorar o espaço e seus mistérios é uma tarefa que atrai a atenção de astrônomos de todo o mundo. No ar puro das altas montanhas, longe da poluição luminosa das cidades, as estrelas e os planetas revelam os seus segredos com maior clareza. Uma nova página se abre na história da astronomia com a inauguração do observatório astronômico mais alto do mundo - o Observatório do Atacama da Universidade de Tóquio. O Observatório do Atacama, localizado a uma altitude de 5640 metros acima do nível do mar, abre novas oportunidades para os astrônomos no estudo do espaço. Este local tornou-se o local mais alto para um telescópio terrestre, proporcionando aos investigadores uma ferramenta única para estudar as ondas infravermelhas no Universo. Embora a localização em alta altitude proporcione céus mais claros e menos interferência da atmosfera, construir um observatório em uma montanha alta apresenta enormes dificuldades e desafios. No entanto, apesar das dificuldades, o novo observatório abre amplas perspectivas de investigação para os astrónomos. ... >>

Controlando objetos usando correntes de ar 04.05.2024

O desenvolvimento da robótica continua a abrir-nos novas perspectivas no campo da automação e controle de diversos objetos. Recentemente, cientistas finlandeses apresentaram uma abordagem inovadora para controlar robôs humanóides utilizando correntes de ar. Este método promete revolucionar a forma como os objetos são manipulados e abrir novos horizontes no campo da robótica. A ideia de controlar objetos por meio de correntes de ar não é nova, mas até recentemente, implementar tais conceitos permanecia um desafio. Pesquisadores finlandeses desenvolveram um método inovador que permite aos robôs manipular objetos usando jatos de ar especiais como “dedos de ar”. O algoritmo de controle do fluxo de ar, desenvolvido por uma equipe de especialistas, é baseado em um estudo aprofundado do movimento dos objetos no fluxo de ar. O sistema de controle do jato de ar, realizado por meio de motores especiais, permite direcionar objetos sem recorrer a esforços físicos ... >>

Cães de raça pura não ficam doentes com mais frequência do que cães de raça pura 03.05.2024

Cuidar da saúde de nossos animais de estimação é um aspecto importante da vida de todo dono de cachorro. No entanto, existe uma suposição comum de que cães de raça pura são mais suscetíveis a doenças em comparação com cães mestiços. Uma nova pesquisa liderada por pesquisadores da Escola de Medicina Veterinária e Ciências Biomédicas do Texas traz uma nova perspectiva para esta questão. Um estudo conduzido pelo Dog Aging Project (DAP) com mais de 27 cães de companhia descobriu que cães de raça pura e mestiços tinham geralmente a mesma probabilidade de sofrer de várias doenças. Embora algumas raças possam ser mais suscetíveis a certas doenças, a taxa geral de diagnóstico é praticamente a mesma entre os dois grupos. O veterinário-chefe do Dog Aging Project, Dr. Keith Creevy, observa que existem várias doenças bem conhecidas que são mais comuns em certas raças de cães, o que apóia a noção de que cães de raça pura são mais suscetíveis a doenças. ... >>

Notícias aleatórias do Arquivo

jaqueta inteligente Levi's 05.12.2018

Muitos provavelmente tiveram que pelo menos uma vez se encontrar em uma situação em que, ao chegar ao trabalho ou em outro lugar, descobriram que haviam esquecido o smartphone em casa. Para evitar que isso aconteça, a fabricante de roupas Levi's, juntamente com o Google, introduziu um novo recurso para as jaquetas "inteligentes" da marca, criadas como parte do projeto Jacquard. Chama-se Always Together, que significa "Sempre Juntos" em inglês.

A função Always Together é automática e envolve a inclusão de uma luz indicadora e vibração toda vez que o sensor localizado na jaqueta estiver a uma certa distância do smartphone amarrado a ela. Uma notificação também é enviada para o smartphone, para que o proprietário não precise perder tempo procurando o dispositivo pelo apartamento ou ativando manualmente o modo Find Your Phone.

O primeiro produto desenhado por Jacquard foi colocado à venda em setembro de 2017, há mais de um ano. Esta é a Levi's Commuter Trucker Jacket, uma jaqueta jeans "inteligente" de US$ 350 destinada principalmente a ciclistas. Graças aos microssensores costurados no tecido, desenvolvidos pela Google Advanced Technology and Projects (ATAP), os usuários podem, por exemplo, controlar um player multimídia ou um aplicativo de navegação. O projeto Jacquard continua sendo aprimorado e, no futuro, as capacidades da plataforma serão expandidas.

Outras notícias interessantes:

▪ O laser levará o míssil para longe do alvo

▪ A visão noturna está disponível para todos

▪ O carro reconhece o proprietário pela impressão digital

▪ Painéis solares para FlixBus

▪ Drivers MOSFET de canal único Infineon 1EDN7511B e 1EDN8511B

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site Biografias de grandes cientistas. Seleção de artigos

▪ artigo Direitos - não dê, direitos - pegue. expressão popular

▪ artigo Onde vivem as formigas que podem contar o número de passos dados? Resposta detalhada

▪ artigo Vulcão Popocatépetl. milagre da natureza

▪ artigo Contornos para antenas HF. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Melhoria do receptor do detector. Enciclopédia de rádio eletrônica e engenharia elétrica

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024