Um projeto de arduino: como fazer chamativas luzes de natal ornamentos

Esta é a próxima parte da nossa série Arduino aprendizagem, e desta vez nós vamos ser aprender e usar Arrays para fazer um ornamento pequeno da árvore de Natal com várias seqüências de piscar. Este seria um projeto ideal para manter as crianças ocupadas, se você gostaria de ensinar-lhes solda básica - basta montar os LEDs em um pedaço de cartão, e você pode obter energia a partir de uma bateria de 9V padrão.

É também uma lição-chave em iniciante de programação Arduino, mas se você não planeja realmente usando isso como um ornamento Eu sugiro fortemente Maquetagem-lo de qualquer maneira.

Nota: Este é um tutorial nível muito iniciante e certamente ganhou t ser quebrar qualquer novo terreno - que s??? apenas um dispositivo para ensinar os conceitos de uso Arrays e loops para lidar com uma grande número de LEDs (Ou outros dispositivos de saída).

? Se você haven t já, agora seria um bom momento para seguir junto com os outros artigos da série:

Para este projeto, você vai precisar de pelo menos 8 ou 9 LEDs em vermelho ou verde, um resistência para cada um deles, um placa de ensaio e alguns Fios de montagem. O kit inicial de Ooomlout, que eu recentemente me comprado e é retratado neste tutorial, oferece ótimo custo-benefício e tem mais LEDs e resistores do que você? Nunca vai precisar, assim como vem com uma placa de ensaio limpo e caso Arduino para manter as coisas arrumado.

? Aqui é a coisa final:

luzes arduino natal

E um vídeo dele em ação.

Aqui? S uma vista da fiação do Fritzing. ? Ele é muito básico - basta conectar o cabo positivo dos LEDs para os pinos 2-gt; qualquer que seja (Até ao pino 13), e conectar as pernas negativos à linha chão com um resistor. O valor I? Ve usado aqui é de 560 Ohms. Isso? S-lo para a fiação.

luzes arduino natal

No lado do software, pense sobre como você pode escrever a todos esses LEDs no código. Você poderia fazê-lo como este:

int LED1 LED = 2- // primeiro no pino 2INT LED2 = 3- // segundo no pino 3 // etc etcvoid laço () {digitalWrite (LED1, ALTA) -delay (100) -digitalWrite (LED1, LOW) -delay (100) -digitalWrite (LED2, HIGH) - // etc}

Você deve ser capaz de ver que com 9 LEDs, este é rapidamente se tornar cansativo. A resposta encontra-se com Arrays, que se você pode? t lembrar o nosso Programação 101 sobre tipos de dados básicos - são basicamente apenas listas.Os princípios de computador Programação 101 - Variáveis ​​e tipos de dadosOs princípios de computador Programação 101 - Variáveis ​​e tipos de dadosTendo introduzido e falou um pouco sobre Programação Orientada a Objetos antes e onde seu xará vem, eu pensei que é hora de passar os princípios absolutos de programação de uma maneira específica não-linguagem. Este...consulte Mais informação

A sintaxe se parece com isso (colocar isso como a primeira linha no seu código):

leds int [] = {} - 2,3,4,5,6,7,8,9,10

Os colchetes indicam que a? Leds? variável vai ser um ordem. Os colchetes coloque a lista de números de pinos que nossa matriz irá conter.

Agora, para usar uma matriz, é preciso abordá-la pelo número de índice. o índice começa em 0, e será sempre, portanto, ir até 1 menor que o número total de coisas dentro dele (assim com 9 itens, o último teria um índice de 8).

Você escrevê-lo como este:

leds [0]


Que no nosso caso, iria buscar o número 2, porque aquele é o que? S no índice 0 em nossa matriz.

Seguindo até agora? Ótimo. Isso por si só isn t suficiente para nós - embora? Nós também precisa de alguma maneira para iterar sobre cada elemento da nossa gama LEDs Para isso, vamos utilizar um loop. A sintaxe de fazer isso é assim:

para (condição inicial Variável em que repetimos novo- mudança de variável de cada iteração)

Por exemplo:

para (int i = 0- ilt; 9- i ++)

que diz

  • iniciar este ciclo com uma variável, Eu, que tem um valor de zero
  • continuar looping somente enquanto i é menos do que 9?(Assim: 0,1,2,3,4,5,6,7,8)
  • cada vez, adicionar 1 a i (I ++ é uma forma abreviada de dizer i = i + 1)

Então, basicamente, o loop vai ser repetido tantas vezes quanto temos LEDs, e cada vez que? S repetida, teremos uma variável, Eu, que podemos usar no entanto nós gostamos.

Nós vamos estar usando essa estrutura de duas vezes para começar. Uma vez dentro da função de configuração para fazer todos os nossos pinos voltar para o modo de saída, como este:

void setup () {for (int i = 0-ilt; 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 indivíduo como saída, criamos um laço ‘for` a repetir-se 9 vezes, cada vez estabelecendo outro pino.

Agora, você deve ser capaz de ver como poderíamos fazer exatamente a mesma coisa no loop principal do programa para transformar cada LED em sequência:

nulos circuito () {para (int i = 0-ILT; 9-i ++) {digitalWrite (diodo emissor de luz [i], ALTA) -delay (100) -digitalWrite (LEDs [i], baixa) -}}

Tente isso. Você pode baixar o código completo para o projeto de hoje a partir daqui, se você? Em vez d não digitá-lo novamente (embora eu encorajá-lo a, uma vez que ajuda o processo de aprendizagem).

Ok, então agora temos uma seqüência de iluminação bastante chato. Vamos programa de outro. Apenas por diversão, vamos? S torná-lo completamente aleatória. Substitua o código loop principal com este:

nulos circuito () {int randomLed = aleatório (0,8) -digitalWrite (diodo emissor de luz [randomLed], ALTA) -delay (50) -randomLed = aleatório (0,8) -digitalWrite (diodo emissor de luz [randomLed], LOW) -}

Em vez de usar um ‘para` loop para iterar sobre cada LED, nós escolhemos um número aleatório de 0-9 em vez disso, e flash que diante.

Vou deixá-lo lá para hoje, como você agora deve ser armado com conhecimento suficiente para programar todas as novas seqüências e experiência com loops. Para provar o quão fácil isso tudo é, eu desafiei a minha mulher para pensar de uma sequência ela? Gostaria de ver, e depois obtidos?ela para programá-lo a si mesma, dada apenas o código e lições você teve até agora. Ela veio com isso, então veja se você pode combinar que, para trabalhos de casa!

Perguntas, sugestões, problemas - por favor, entrar em contato nos comentários.


Artigos relacionados