Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python Brasil 2024 - Luz, micro:bit, ação! Ilu...

Python Brasil 2024 - Luz, micro:bit, ação! Ilumine seus projetos com MicroPython

Slides do tutorial Luz, micro:bit, ação! Ilumine seus projetos com MicroPython, apresentado durante a Python Brasil 2024 no Rio de Janeiro, por Juliana Karoline de Sousa.

Não há vídeo disponível, o tutorial não foi gravado.

Avatar for Juliana Karoline de Sousa

Juliana Karoline de Sousa

October 17, 2024
Tweet

More Decks by Juliana Karoline de Sousa

Other Decks in Programming

Transcript

  1. ★ Bacharel em Ciência da Computação | UFSCar ★ PyLadies

    São Carlos | co-fundadora e organizadora ★ Grupy-Sanca | co-fundadora e organizadora ★ Omnivector | software engineer ★ IoT, robótica, impressão 3D, MicroPython :3 Juliana Karoline de Sousa
  2. Agenda MicroPython 01 BBC micro:bit 02 Editor Python 03 NeoPixels

    04 Exercícios 05 Projeto final: Pacman 06
  3. O que é um microcontrolador? Circuito integrado Processador, memória e

    periféricos em um único chip Programável Pode armazenar código customizado na memória I/O Portas integradas de entrada e saída para interagir com sensores e atuadores Baixo consumo de energia Pode ser utilizado em projetos alimentados por baterias
  4. O MicroPython é uma implementação enxuta e eficiente do Python

    3 que inclui um pequeno subconjunto da biblioteca padrão e é otimizada para execução em microcontroladores e em ambientes restritos. O que é o MicroPython?
  5. Por que usar o MicroPython? Alto nível Permite escrever código

    orientado a objetos Produtividade Sintaxe mais simples do que C/C++, poucas linhas já são o suficiente Abstração É possível abstrair a camada de hardware de acordo com a aplicação Python Segue a filosofia da linguagem Python
  6. Requisitos: ★ 256k de espaço de código ★ 16k de

    memória RAM Features: ★ Prompt interativo (REPL) ★ List comprehensions e generators ★ Tratamento de exceções ★ Acesso aos protocolos GPIO, PWM, ADC, UART, SPI Características do MicroPython
  7. A BBC micro:bit é um computador de bolso que ensina

    como o software e o hardware funcionam juntos. Baseia-se no conceito de computação física, onde utiliza-se código para interagir com o mundo físico. O que é a BBC micro:bit?
  8. Como utilizar a BBC micro:bit? Coloque o cabo na placa

    e no computador Escreva código .py no editor online Clique em “send to micro:bit” e selecione o dispositivo O arquivo .hex é salvo automaticamente na micro:bit Coloque o cabo na placa e no computador Escreva código .py no editor online Clique em “send to micro:bit” e baixe o arquivo .hex no computador Copie o arquivo .hex para o dispositivo da micro:bit Navegadores suportados (Google Chrome) Outros navegadores (Firefox)
  9. NeoPixels são sequências de LEDs endereçáveis que podem ser controlados

    individualmente utilizando somente um fio para comunicação. O que são NeoPixels?
  10. Exercício #1: Mover o LED aceso com os botões 01

    Defina um index Será utilizado para indicar o LED aceso 02 While True Execute o código dentro de um loop, com um sleep no final 05 Acenda o index Escolha uma cor e use np.show() para acender o LED 04 Verifique os botões Aumente ou diminua o index de acordo com o botão apertado 03 Apague o index Coloque (0, 0, 0) na cor do LED para apagá-lo Dica: use % 12 ao ajustar o index para dar a volta no anel
  11. Exercício #2: Acender LED aleatório ao balançar 01 Defina um

    index Será utilizado para indicar o LED aceso 02 While True Execute o código dentro de um loop, com um sleep no final 05 Acenda o index Escolha uma cor e use np.show() para acender o LED 04 Verifique o gesto Verifique se a placa está sendo balançada e sorteie um index 03 Apague o index Coloque (0, 0, 0) na cor do LED para apagá-lo Dica: use pixels - 1 como intervalo do random
  12. Exercício #3: Mover LED através do rádio 01 Defina um

    grupo Ambas as placas precisam estar no mesmo grupo para funcionar 02 Calcule o index Leia o x do acelerômetro e calcule o index de acordo 03 Acenda o LED indicado Apague o index antigo e acenda o novo index recebido pelo rádio 02 Receba a mensagem Verifique se uma mensagem foi recebida com radio.receive() 03 Envie a mensagem Use radio.send() para transmitir o index para a outra placa Sender Receiver
  13. Exercício #4: Trocando a cor de acordo com o som

    01 Defina um limite Será utilizado para saber se o som é alto o suficiente 02 While True Execute o código dentro de um loop, com um sleep no final 05 Acenda o anel todo Use np.fill() e np.show() para acender o anel de LED 04 Sorteie uma cor Use o random para sortear um valor para cada canal RGB 03 Verifique o som Leia o sound_level() e verifique se é maior que o limite definido Dica: use 255 como intervalo do random
  14. time.ticks_ms() e time.ticks_diff() time.ticks_ms() é uma função que gera um

    contador de tempo, em milisegundos, que começa no momento em que foi instanciado. time.ticks_diff() serve para calcular a diferença de tempo entre dois contadores criados com time.ticks_ms(). tempo_1 = time.ticks_ms() # começou às 10:00:00 tempo_2 = time.ticks_ms() # começou às 10:00:05 time.ticks_diff(tempo_2, tempo_1) # retorna 5000ms
  15. Projeto Final: Jogo do Pacman Pacman Direção do movimento é

    definida pelos botões Fantasma Muda de cor quando o Pacman fica forte Fruta Dá força para o Pacman e permite captura Jogo Roda até o Pacman ser capturado pelo fantasma
  16. Projeto Final #1: Pacman 01 __init__(self, pixels) Configura a posição,

    a cor, velocidade, direção e força 02 next_position(self) Calcula a próxima posição baseado na direção 04 show() Atualiza o index com a nova posição calculada 03 move(self) Move a cada 1000ms, na direção definida pelos botões
  17. Projeto Final #2: Ghost 01 __init__(self, pixels) Configura a posição,

    as cores, velocidade e direção 02 next_position(self) Calcula a próxima posição baseado na direção 04 randomize_position() Calcula uma nova posição aleatória quando é capturado 03 move(self) Move a cada 1500ms, seguindo no sentido horário 05 set_color() Decide se vai ficar azul ou verde de acordo com a força 06 show() Atualiza o index com a nova posição calculada
  18. Projeto Final #3: Fruit 01 __init__(self, pixels) Configura a posição,

    a cor, e o contador de tempo 02 hide(self) Esconde a fruta após o Pacman ter capturado e inicia contador 03 randomize_position() Calcula uma nova posição aleatória quando é capturado 04 show() Atualiza o index com a nova posição calculada
  19. Projeto Final #4: Game 01 __init__(self, pixels) Configura os NeoPixels

    e instancia Pacman, Ghost e Fruit 02 check_fruit_collision(self ) Verifica se o Pacman capturou a fruta para ficar forte 04 check_ghost_collision(self) Verifica se o Pacman capturou um fanstama 03 check_strong(self) Verifica se já esgotou o tempo que o Pacman fica forte 05 got_ghost() e end() Fica feliz quando o Pacman estava forte e triste quando fraco 06 run() Implementa a lógica do jogo
  20. Conclusão Com a biblioteca NeoPixel, é possível usar a mesma

    abordagem para controlar sequências de LED independente do tamanho delas. Ideias de projetos: ★ Acender luzes de escadas com sensor de presença ★ Acender luzes externas com sensor de luminosidade O que você implementaria?