Propaganda
Esta é a próxima parte da nossa série de aprendizado do Arduino, e desta vez nós? vou aprender e usar Matrizes para fazer um pequeno enfeite de árvore de Natal com várias sequências piscando. Esse seria um projeto ideal para manter as crianças ocupadas, se você gostaria de ensiná-las sobre solda básica - basta montar os LEDs em um pedaço de cartão e obter energia com uma bateria de 9V padrão.
Também é uma lição importante na programação para iniciantes do Arduino, embora, se você não planeja realmente usá-lo como um ornamento, sugiro enfaticamente que você faça o mesmo.
Nota: Este é um tutorial para iniciantes e certamente vencemos? não está inovando - é? s? apenas um dispositivo para ensinar os conceitos de uso Matrizes e Para loops para lidar com um grande número de LEDs (ou outros dispositivos de saída).
Se você não? já, agora seria um bom momento para acompanhar os outros artigos da série:
- O que é o Arduino e o que você pode fazer com ele O que é o Arduino e o que você pode fazer com ele? O Arduino é um pequeno dispositivo eletrônico notável, mas se você nunca usou um antes, exatamente o que são e o que você pode fazer com um? consulte Mais informação ?
- O que é um Arduino Starter Kit e o que ele contém? O que está incluído no kit inicial do Arduino? [MakeUseOf explica]Eu já introduzi o hardware de código aberto do Arduino aqui no MakeUseOf, mas você precisará mais do que apenas o Arduino real para criar algo com ele e realmente começar. Os "kits iniciais" do Arduino são ... consulte Mais informação
- Mais componentes interessantes para comprar com seu Starter Kit 8 componentes mais legais para seus projetos de ArduinoEntão, você está pensando em adquirir um kit inicial do Arduino, mas quer saber se alguns LEDs e resistores básicos serão suficientes para mantê-lo ocupado no fim de semana? Provavelmente não. Aqui estão mais 8 ... consulte Mais informação
- Começando com o seu Arduino Starter Kit? Instalação de drivers e configuração da placa e porta Introdução ao Arduino Starter Kit - Instalação de drivers e configuração da placa e da portaEntão, você comprou um kit inicial do Arduino e, possivelmente, outros componentes interessantes aleatórios - e agora? Como você realmente começou a programar essa coisa do Arduino? Como você configura... consulte Mais informação
- Fritzing, uma ferramenta gratuita para desenhar diagramas de circuitos Fritzing - A melhor ferramenta para esboçar projetos de eletrônicos [Cross Platform]Apesar de parecer um alcopop, o Fritzing é na verdade um pouco incrível de software livre que você pode usar para criar diagramas de circuitos e componentes para uso em placas eletrônicas de prototipagem rápida, como a fantástica fonte aberta Arduino ... consulte Mais informação
- Um olhar mais atento à estrutura de um aplicativo Arduino e ao programa Blink de exemplo Primeiros passos com o Arduino: um olhar mais atento à placa de circuito e à estrutura de um programaA última vez que deixei você configurou o seu Arduino para trabalhar com Mac ou Windows e fez o upload de um aplicativo de teste simples que piscava no LED integrado. Hoje eu vou explicar o código ... consulte Mais informação
Para este projeto, você? vou precisar de pelo menos 8 ou 9 LEDs em vermelho ou verde, um resistor para cada um deles, um tábua de pão e alguns fios de conexão. O kit inicial da Ooomlout, que comprei recentemente e é retratado neste tutorial, oferece grande valor ao dinheiro e possui mais LEDs e resistores do que você? Sempre será necessário, além de vir com uma placa de ensaio organizada e um gabinete Arduino para manter as coisas arrumadas.
Aqui? é a coisa final:

E um vídeo em ação.
Aqui? s uma visão da fiação de Fritzing. Isto? é muito básico - basta conectar o fio positivo dos LEDs aos pinos 2-> tanto faz (até o pino 13) e conecte as pernas negativas ao chão em linha com um resistor. O valor que eu? usado aqui é de 560 Ohms. Este? s para fiação.

No lado do software, pense em como você pode escrever para todos esses LEDs no código. Você poderia fazer isso assim:
int led1 = 2; // primeiro LED no pino 2. int led2 = 3; // segundo no pino 3. // etc etc void loop () {digitalWrite (led1, HIGH); atraso (100); digitalWrite (led1, LOW); atraso (100); digitalWrite (led2, HIGH); // etc. }
Você poderá ver que, com 9 LEDs, isso ficará rapidamente cansativo. A resposta está em Matrizes, e se você puder? não lembro do nosso Programação 101 sobre tipos de dados básicos 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 caminho. Este... consulte Mais informação - são basicamente apenas listas.
A sintaxe fica assim (coloque-a como a primeira linha no seu código):
int leds [] = {2,3,4,5,6,7,8,9,10};
Os colchetes indicam que os? Leds? variável vai ser uma Matriz. Os chavetas envolvem a lista de números de pinos que nossa matriz manterá.
Agora, para usar uma matriz, precisamos abordá-la pelo número do índice. o índice começa em 0e, portanto, sempre subirá 1 a menos que o número total de itens dentro dele (então, com 9 itens, o último teria um índice de 8).
Você escreve assim:
leds [0]
Qual, no nosso caso, buscaria o número 2, porque isso? s o que? s no índice 0 em nossa matriz.
Seguindo até agora? Ótimo. Só isso não é? o suficiente para nós - precisamos também de uma maneira de iterar sobre cada elemento de nossa matriz de LEDs. Para isso, usaremos um para laço. A sintaxe para fazer isso é assim:
for (variável inicial; condição sob a qual repetimos novamente; mude para variável a cada iteração)
Por exemplo:
para (int i = 0; i <9; i ++)
O que diz
- inicie esse loop com uma variável, Eu, que tem um valor de zero
- continue em loop apenas enquanto eu estiver menos de 9? (so: 0,1,2,3,4,5,6,7,8)
- cada vez, adicione 1 a i (i ++ é uma maneira curta de dizer i = i + 1)
Então, basicamente, o loop será repetido quantas vezes tivermos LEDs, e a cada vez? s repetido teremos uma variável, Eu, que podemos usar como quisermos.
Nós? Vou usar essa estrutura duas vezes para começar. Uma vez dentro da função de configuração para fazer com que todos os nossos pinos passem para o modo de saída, assim:
void setup () {para (int i = 0; i <9; i ++) {pinMode (leds [i], OUTPUT); } }
Você pode ver o que fizemos lá? Em vez de escrever 9 linhas de código para declarar cada pino individual como saída, criamos um loop 'for' para repetir-se 9 vezes, sempre definindo outro pino.
Agora, você poderá ver como podemos fazer exatamente a mesma coisa no loop principal do programa para ativar cada LED em sequência:
loop vazio () {for (int i = 0; i <9; i ++) {digitalWrite (leds [i], HIGH); atraso (100); digitalWrite (leds [i], LOW); } }
Tente isso. Você pode faça o download do código completo do projeto de hoje a partir daqui se vocês? prefiro não digitar novamente (embora eu o incentive, pois ajuda no processo de aprendizado).
Ok, agora temos uma sequência de iluminação bastante chata. Deixei? s programa outro. Apenas por diversão, vamos? s torná-lo completamente aleatório. Substitua o código do loop principal por este:
loop vazio () { int randomLed = aleatório (0,8); digitalWrite (leds [randomLed], HIGH); atraso (50); randomLed = aleatório (0,8); digitalWrite (leds [randomLed], LOW); }
Em vez de usar um loop 'for' para iterar sobre cada LED, escolhemos um número aleatório de 0 a 9 e pisca.
Vou deixar lá por hoje, pois agora você deve estar armado com conhecimento suficiente para programar todas as novas seqüências e experimentar loops. Para provar como tudo isso é fácil, desafiei minha esposa a pensar em uma sequência ela? gostaria de ver e entendeu?ela para programar ela mesma, dado apenas o código e lições que você? até agora. Ela veio com isso, então veja se você consegue igualar isso na lição de casa!
Perguntas, sugestões, problemas - entre em contato 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.