Um guia para iniciantes sobre como usar um Raspberry Pi com um breadboard para criar um Simon

A placa de ensaio permite que você crie circuitos sem precisar soldar nada. É uma ótima ferramenta para experimentar com eletrônicos, mas pode ser um pouco intimidante. Construir um projeto pode ajudá-lo a se manter motivado enquanto aprende.

Existem muitos jogos simples que podem ajudá-lo a criar grandes projetos para iniciantes usando Raspberry Pi. Um dos jogos fáceis com que você pode começar é o Simon. Jogo Simon é Jogo da memória Uma série de luzes piscam em ordem aleatória e o jogador deve se lembrar da sequência. Conforme o jogador avança, o comprimento da sequência aumenta.

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

Componentes necessários

Para começar, você precisará do seguinte:

  • Raspberry Pi.
  • Sistema operacional flash do cartão MicroSD SO Raspbian nela.
  • 4 x LEDs em cores diferentes.
  • 4 x resistores elétricos (qualquer coisa de 220 ohms a 1 kOhm).
  • 4 botões x.
  • 1 x placa experimental
  • Cabos de conexão para conectar tudo.

Você pode usar qualquer Raspberry Pi para este projeto, mas os modelos Pi Zero não se conectam às placas de ensaio facilmente sem alguma solda. Seja qual for o modelo usado, você também precisará de uma fonte de alimentação, monitor, teclado e mouse.

Se você não configurou um Raspberry Pi antes, pode aprender como preparar tudo para este tutorial em Guia para iniciantes do Raspberry Pi.

Você escreverá o código Python neste tutorial e pode usar qualquer editor de texto para escrevê-lo, mas pode encontrar um editor de código mais fácil. Existem vários deles já instalados no Raspberry Pi OS, e Thonny foi projetado para ser amigável para iniciantes. Qualquer que seja o uso, você precisará salvar e executar o código para seguir este tutorial.

Primeiros passos com a placa experimental

O Raspberry Pi tem duas linhas de pinos de entrada / saída de uso geral (GPIO). Esses pinos permitem conectar vários componentes externos ao Raspberry Pi. Alguns pinos enviam informações, outros economizam energia e alguns aterram seus dispositivos eletrônicos.

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

Começaremos adicionando um LED à nossa placa de ensaio.

Comece anexando o pino GPIO à sua placa. Não importa qual pino, contanto que seja o pino GPIO e não um pino de alimentação ou aterramento. Acima está um diagrama de pinos GPIO, que o ajudará a decidir qual pino usar. Este tutorial usa o Pin ID 18, também chamado de GPIO 24.

O pino fornecerá alguma energia à placa de ensaio e permitirá que o Raspberry Pi se comunique com os componentes da placa. Em seguida, conecte o pino ID 6 no Pi ao caminho de aterramento da placa de ensaio. Isso irá aterrar a placa e permitir que os circuitos elétricos sejam criados.

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

A energia que vem do Raspberry é muito alta para conectar diretamente o LED. O uso de um resistor reduz a energia e evita que o LED acenda. Conecte um lado do resistor à mesma linha em que o pino GPIO está conectado e a extremidade ao outro lado da placa. Em seguida, coloque o lado positivo do LED após o resistor. O terminal negativo do LED pode ser conectado diretamente ao lado negativo. O resultado final deve ser semelhante ao gráfico acima. Verifique cuidadosamente seus fios e opere seu Pi. A lâmpada deve estar acesa.

Agora, você criou um circuito com seu Raspberry Pi que pode controlar usando o código.

Usando código Python para controlar LEDs

Este tutorial o conduz através das etapas do código, mas se você quiser reverter para o código final, ele está disponível em Pastebin.

No momento, a energia vai para o LED, mas queremos controlar quando ele liga e desliga. O seguinte código Python nos permitirá falar com o conselho.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
GPIO.setup(red, GPIO.OUT)
GPIO.output(red, GPIO.LOW)

As primeiras linhas são o que configuram as coisas. A biblioteca Raspberry Pi GPIO é importada. Onde nos permite como GPIO Consulte a variável RPi.GPIO como GPIO para economizar menos escrita. O modo de pino GPIO está configurado em BORDA. Você não precisa usar essa configuração, mas pode ser mais fácil referir-se aos pinos em sua disposição nas linhas GPIO.

Finalmente, definimos os avisos como falsos. Isso desativará os avisos desnecessários.

As últimas três linhas controlam o LED. O LED vermelho está conectado ao terminal GPIO 18. Em vez de lembrá-lo, ele armazenará o parâmetro vermelho Lugar, colocar. Depois disso, ele conta configuração GPIO Nosso programa envia as informações para o pino vermelho. Finalmente, definimos GPIO.output para pino vermelho para baixo. Quando você executa este programa, a luz se apaga. Para ligá-lo novamente, ative GPIO. BAIXO para GPIO. ALTO , E execute o programa novamente.

Salve o código e clique em تشغيل Para vê-lo em ação. Se não houver um botão Executar no editor de código, salve-o com qualquer nome (meunomedoarquivo) e execute o comando python meunomedoarquivo.py Na janela do Terminal. Você precisará ir para o mesmo diretório do novo arquivo Python primeiro.

Adicione mais de uma lâmpada LED

Para criar Simon, precisamos de quatro lâmpadas de cores diferentes. As mesmas etapas que você usou para configurar o LED vermelho podem ser usadas para configurar os outros três. Sua fiação deve ser semelhante ao diagrama esquemático abaixo:

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

Seu código deve ser semelhante a este:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.output(red, GPIO.HIGH)
GPIO.output(yellow, GPIO.HIGH)
GPIO.output(green, GPIO.HIGH)
GPIO.output(blue, GPIO.HIGH)

Depois de testar os LEDs, defina GPIO.saída على GPIO. BAIXO Para desligar cada LED novamente.

Embora a cor dos fios que você usa não importe, tente usar cores significativas para ajudá-lo a ler o conteúdo da placa com mais facilidade. Por exemplo, fios pretos são freqüentemente usados ​​para fios terra. Para este circuito, você pode querer combinar a cor do fio com a cor da luz LED.

Controle as luzes com botões

Comece adicionando um botão ao seu quadro. O botão precisará ser conectado ao conector de aterramento e ao pino GPIO. O circuito deve ser assim:

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

Para obter o botão para controlar o LED, precisamos adicionar algum código ao nosso código. A configuração do botão é semelhante à configuração do LED, exceto que o pino GPIO é configurado para ser entrada, não saída. Este código também configura o resistor de surto interno no Pi, que é necessário para fazer o botão se comportar corretamente.

GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Agora precisamos de um código que verifique se o botão foi pressionado ou não.

game = True
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

Queremos que nosso software continue a verificar se o botão está pressionado, então o comando de repetição deve ser usado enquanto. Como a iteração nunca será falsa, o código continua rodando e verificando o botão até que encerremos o programa manualmente pressionando o botão de pausa ou usando um atalho de teclado Ctrl + C.

Então, para tornar mais fácil sinalizar a entrada que o pino GPIO nos envia, salvamos esta informação no parâmetro estado do botão vermelho. Se a entrada do nosso botão mudar para 0, saberemos que o botão foi pressionado.

Se o botão for pressionado, o LED vermelho acenderá. Então, após um segundo, o LED apagará. Para adicionar esta duração, usamos a função tempo.sono (1). Para fazer isso, você precisará importar a biblioteca de tempo no topo do seu código.

Depois de ligar um botão, você pode adicionar mais três botões, um para cada LED. Seu código deve ser semelhante a este:

import random 
import time
import RPi.GPIO as GPIO
GPIO.setmode (GPIO.BOARD)
GPIO.setwarnings(False)
red = 18
yellow = 22
green = 24
blue = 26
GPIO.setup(red, GPIO.OUT)
GPIO.setup(yellow, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
GPIO.setup(32, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(36, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
GPIO.setup(40, GPIO.IN, pull_up_down=GPIO.PUD_UP) 
game = True 
while game:
 redButtonState = GPIO.input(32)
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 yellowButtonState = GPIO.input(36)
 if yellowButtonState == 0: 
 GPIO.output(yellow, GPIO.HIGH)
 time.sleep(1) 
 GPIO.output(yellow, GPIO.LOW)
 greenButtonState = GPIO.input(38)
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 blueButtonState = GPIO.input(40)
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

Sua placa de experiência deve ser semelhante a esta ilustração:

Um guia para iniciantes sobre como usar um Raspberry Pi com uma placa de ensaio para criar um jogo Simon - tutoriais do Raspberry Pi

Todos os aparelhos eletrônicos já estão prontos. Se você tiver qualquer problema, verifique se há erros no seu código. Lembre-se, você pode baixar o código completo em Pastebin Se você ficar preso!

Crie o jogo

Este projeto já cobriu todos os princípios básicos que você precisa saber para começar com uma placa de ensaio. Mas transformar essas habilidades em um jogo realmente mostrará o que você pode fazer!

No Simon, o jogador vê uma série de luzes piscando e precisa se lembrar do padrão. Ele começa facilmente com apenas uma luz. Cada nível adiciona uma luz aleatória ao padrão para tornar o jogo mais difícil.

Crie o padrão

Esta etapa é bastante simples. Uma matriz manterá nosso padrão de luz (de cinto de segurança) Uma segunda matriz armazenará pinos GPIO para nossas lâmpadas (luzes) Em cada iteração do jogo, uma nova luz aleatória será adicionada ao final do Conjunto de Padrões. Vamos usar a função random.randent () Para escolher um número entre 0 e 3, que são 4 LEDs.

pattern = []
lights = [red, yellow, green, blue]
while game:
 pattern.append(random.randint(0,3))

Em seguida, temos que acender as luzes para mostrar o padrão.

while game:
 pattern.append(random.randint(0,3))
 
 for x in pattern:
 GPIO.output(lights[x], GPIO.HIGH)
 time.sleep(1)
 GPIO.output(lights[x], GPIO.LOW)
 time.sleep(0.5)

É importante parar entre duas lâmpadas. Torna mais fácil ver se a mesma luz está sendo usada consecutivamente no padrão.

Obtenha a opinião do jogador

Em seguida, o jogo deve esperar que o jogador adivinhe a disposição das luzes. O software deve verificar todas as luzes do padrão e esperar que o jogador pressione o botão. Isso requer iterações escalonadas:

for x in pattern:
 
 waitingForInput = True
 
 while waitingForInput:
 redButtonState = GPIO.input(32)
 yellowButtonState = GPIO.input(36)
 greenButtonState = GPIO.input(38)
 blueButtonState = GPIO.input(40)
 
 if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)
 
 if yellowButtonState == 0:
 GPIO.output(yellow, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(yellow, GPIO.LOW)
 
 if greenButtonState == 0:
 GPIO.output(green, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(green, GPIO.LOW)
 
 if blueButtonState == 0:
 GPIO.output(blue, GPIO.HIGH)
 waitingForInput = False
 time.sleep(1)
 GPIO.output(blue, GPIO.LOW)

A maior parte do código acima reutiliza o código que escrevemos para teste de botão.

Verifique a entrada do jogador

A partir daqui, é muito fácil verificar se um jogador inseriu o padrão correto. Cada vez que ele pressiona um botão, o jogo pode verificar se este é o botão correto. Para fazer isso, adicione uma frase if Outros por entrada de botão:

if redButtonState == 0:
 GPIO.output(red, GPIO.HIGH)
 waitingForInput = False
 if x != 0:
 game = False
 time.sleep(1)
 GPIO.output(red, GPIO.LOW)

variável x Que repetir para Ele tem o seguinte número de luz. O LED vermelho está na primeira posição, ou o número 0. Se o jogador pressionar o botão LED vermelho quando tivermos 0 em nosso padrão, ele está certo! Do contrário, ele perde no jogo. Irá criar a variável jogo على falso Para parar o loop do jogo e encerrar o programa.

Parabéns! Criei um jogo do zero!

Criar um jogo adiciona mais código a este projeto do que apenas LEDs e botões. Trabalhar em um projeto concluído que você possa mostrar aos seus amigos e familiares pode ajudá-lo a se manter motivado.

Este jogo é bastante simples. Desafie-se a melhorar o design básico. As luzes podem piscar se um jogador perder. Você pode querer desafiar-se a adicionar sons ao jogo. Sua imaginação é o único limite!

Bem, sua imaginação e os dispositivos que você deve usar. Agora você pode ver Melhores projetos para criar uma smart TV com um Raspberry Pi

Ir para o botão superior