Índice:
- Etapa 1: Materiais e Ferramentas
- Etapa 2: corte a tira de LED em tiras menores
- Etapa 3: Soldar a tela juntos
- Etapa 4: soldando os componentes eletrônicos principais
- Etapa 5: Controlador
- Etapa 6: Camisa
- Etapa 7: Programação
- Etapa 8: Produto Acabado
Vídeo: Pong jogando tela flexível em uma camisa: 8 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Esta é minha fantasia de Halloween para o ano de 2013. Ela está em desenvolvimento há cerca de um ano e levou algumas horas de trabalho para ser criada. A tela tem 14 por 15 pixels, portanto, resolução muito baixa, mas ainda pode fazer algumas coisas divertidas. É fisicamente flexível em todas as direções, embora não possa ser dobrado sem danos. Possui controlador composto por um único botão e pote slide, conectado a um pro mega via USB. Para mantê-lo vivo por muito tempo, ele emprega duas baterias monstruosas de 2200 mAh ligadas em série para obter a voltagem necessária e, em seguida, um regulador de 5 volts para torná-lo utilizável. Todos os eletrônicos são colocados em bolsos na parte interna da camiseta para que possam ser retirados e para que a camiseta possa ser lavada. Ele joga um jogo funcional de pong. Primeiro, ele agrega as palavras "PONG PLAY" em lindas letras azuis usando uma versão modificada da fonte Tom Thumb (pode ser encontrada em https://robey.lag.net/2010/01/23/tiny-monospace-font.html). Após cinco segundos, pode ser dada a opção de pressionar o botão para seguir em frente ou de não pressionar o botão e deixar uma experiência perfeitamente boa para trás. Quando alguém opta por pressionar o botão, o jogo começa. Uma pá vermelha à direita é a pá do computador e a pá verde à direita é a pá do jogador, que é controlada pelo pote deslizante para se mover para cima e para baixo. A bola quica enquanto cada lado tenta marcar um ponto. O jogador pode acertar a bola com a ponta de sua raquete para acelerá-la (um bom recurso) enquanto o computador não pode fazer isso e, em vez disso, acaba travando com um movimento um pouco mais lento do que a bola. Quando um ponto é marcado, um pixel muda para branco na barra lateral de pontuação. Conta em binário a partir da parte inferior. onde o verde ou vermelho é zero e o branco é 1. 21 é a pontuação a ganhar (ou perder dependendo de quem consegue os 21 pontos) e então quando a raquete do jogador lê 10101, o texto "VOCÊ GANHA" é exibido. Mais uma vez no Tom Thumb modificado. O mesmo acontece, mas com "VOCÊ PERDE" exibido em seu lugar. Depois de uma vitória ou derrota, o jogo reinicia ao ponto logo após o Pong Play. Para reiniciar totalmente, o botão de reinicialização na "Caixa Mágica", também conhecido como a-caixa-com-todos-os-eletrônicos-exceto-a-tela, é pressionado.
Etapa 1: Materiais e Ferramentas
As coisas marcadas com * são opcionais, mas recomendadas E, portanto, em nenhuma ordem particular … Materiais: 4 jardas de Adafruit Neopixle 60 pixle por tira de metro 1 T-shirt * 1 par de suspensórios de 1/2 jarda de tecido será mais do que suficiente (Não tecido elástico é preferível) 6 pés USB A macho para USB B cabo macho 1 conector USB A fêmea 3 2 pinos JST conectores fêmea 4 2 pinos JST fio carregador de bateria 2 baterias de 6600 mAh 1 Botão estilo Arcade 1 arduino pro-mega 1 conector FTDI 1 conector USB B fêmea com placa breakout 1 botão liga / desliga (alternar) 1 botão de reset (alternar ou momentâneo) 1 potenciômetro deslizante * 1 botão deslizante do potenciômetro 1 par de conectores de alto amp * 1 caixa de projeto 1 regulador de tensão de 5V 3+ amp pouco de plástico, soldar, arame, fio, * cola quente *, algum tempo, elástico (talvez um pouco mais do que "algum") alguma perseverança (você provavelmente vai precisar de um pouco disso na verdade) um tubo termorretrátil ou fita isolante um pouco de super cola um pouco de ferro em ferramentas de apoio * Helping Hands Normal Hand s (ou alguém com acesso a eles) Ferro de soldar * Pistola de cola quente Dremel ou lixa cinzel Decapadores de fio Cortadores de fio Pistola de grampos Chave de parafuso serra pinos Máquina de costura Tesouras de tecido
Etapa 2: corte a tira de LED em tiras menores
Use o seu utensílio de corte preferido e corte a tira em 14 segmentos, cada um com 15 pixels de comprimento. Corte apenas entre os traços de cobre, etiquetados com algo como "DO" "DIN" "+ 5V" e "GND". Se já estiver soldado sobre o cobre, basta cortá-lo. Tente não cortar muito o cobre exposto, mas se você cortar um pouco, não tem problema. Depois que todas as 14 tiras forem cortadas, apare um pouco da borracha de cada extremidade para retirá-la do caminho para soldar as tiras.
Etapa 3: Soldar a tela juntos
Pegue o fio e corte-o em segmentos de cerca de 3,5 polegadas (9 cm). No meu caso, tenho três cores diferentes para tornar mais fácil manter a linha reta durante a soldagem, mas uma cor funcionaria bem. Você precisará de cerca de 40 desses pequeninos, mas corte mais alguns para o caso. Assim que terminar de cortar o fio, descasque e estanhe as pontas (se você tiver experiência em soldagem, pule para o próximo parágrafo), ou seja, depois de remover um pouco de plástico, coloque um pouco de solda nas pontas de cada fio. Não aqueça a solda e tente mover para o fio, aqueça com o seu ferro de solda da parte inferior do cobre e coloque a solda no topo. Seja paciente e espere o fio quente derreter a solda. É tentador transformar o ferro de soldar na solda para começar (minha impaciência e eu sei exatamente como você se sente), mas a solda não gruda tão bem. Faça o mesmo para os vestígios de cobre expostos em cada extremidade das seções da tira. Se já tiver solda não se preocupe. Para a faixa, você pode querer construir um pequeno monte para torná-la mais fácil mais tarde. Ao trabalhar com a tira, faça-o rapidamente e tente não perder muito tempo aplicando calor na tira. Faça apenas o que for necessário para derreter a solda no traço. Solde um fio em cada traço até o final da primeira tira (sendo a primeira tira aquela com os fios e o conector, solde-o na extremidade exposta). Se você olhar para a tira, verá pequenas setas que vão até o final onde você soldou o fio. Pegue outra tira de modo que as setas apontem na direção oposta, e solde o fio vindo do traço GND ao traço GND do outro, o + 5V ao + 5V e assim por diante. Repita isso certificando-se de que as setas mudem de direção após cada seção de forma que, se você segui-las, ziguezagueasse para cima e para baixo e pudesse ser esticado em uma longa faixa no final. Depois que todas as 14 tiras forem soldadas, coloque-as e alinhe-as de forma que os LEDs formem uma grade. Em seguida, mantenha-os juntos usando um método que pode ser removido posteriormente sem danificar a tira. Usei fita adesiva. É pegajoso o suficiente para manter tudo junto, mas não tão pegajoso a ponto de deixar resíduos. Não recomendo nada que seja permanente, como grampos ou fita adesiva. Depois que tudo estiver colado, solde um fio da tira na parte inferior + 5V para a imediatamente ao lado dele. Repita até que todo o fundo tenha as torneiras de energia em toda a extensão. Isso ocorre para que a tela não fique escura conforme a linha de LEDs avança.
Etapa 4: soldando os componentes eletrônicos principais
Solde a placa breakout USB B (BOB) ao conector USB B. Solde os fios apropriados ao conector USB A. Aconselho olhar para a pinagem do conector encontrada neste site, https://image.pinout.net/pinout_USB_files/pc_usb_connectors_pinout.png. Não se preocupe sobre onde soldar as outras pontas dos fios no conector USB A agora; que será abordado na etapa do controlador. Corte o conector de dados da tira, o conector fêmea, não o conector macho (O conector fêmea é obtido na outra extremidade). Solde os conectores JST machos nas extremidades da bateria de forma que o vermelho vá para o vermelho e o preto vá para o preto. Derreta o tubo termorretrátil sobre os fios expostos (deslizou antes de soldar) para que eles não causassem curto ou usem algo como fita isolante ou cola quente. Solde alguns fios em todos os conectores JST fêmeas. Certifique-se de ter uma extremidade macho conectada para que os pinos não se movam. Tenha cuidado com a polaridade e certifique-se de que os fios combinam com os conectores machos. Solde os fios em um dos conectores de alta tensão (mas não em seu par), mais uma vez, certificando-se de que todas as cores coincidam e que eles estejam conectados para evitar qualquer deslocamento dos pinos. Solde o conector fêmea justo / conjunto de fio de modo que sejam ligados em série, não em paralelo, para que ultrapasse a tensão limite para o regulador de potência. Então, solde o fio positivo no fio negativo do outro conjunto de forma que agora tenhamos um fio positivo não soldado e um fio negativo não soldado e os dois fios soldados são soldados a conectores diferentes. Pegue o fio negativo e guarde-o para ser soldado ao fio negativo em outro lugar. Agora pegue o fio positivo e solde-o no interruptor. Se houver três ou mais pinos (ou mais de uma maneira de estar "ligado"), solde-o no pino do meio. Observe que o "pino do meio" pode não estar fisicamente no meio. A forma de identificá-lo é encontrar o pino que, quando o switch estiver ligado em qualquer estado, estará sempre conectado a outro pino. Se nenhum pino for assim, você tem um botão muito especial; apenas conecte-o a qualquer pino e certifique-se de que o próximo fio soldado ao switch seja conectado a esse fio em pelo menos um estado ligado. Agora solde o fio de entrada positivo no regulador de tensão na extremidade oposta da chave, conforme discutido acima. Solde a tensão positiva para a extremidade positiva do conector de alta corrente não soldado. Pegue o fio de entrada negativa e solde-o na extremidade negativa do conector de alta corrente. Agora vamos soldar a energia em paralelo ao Arduino e ao filtro de linha. Agora pegue os fios de saída do regulador de tensão e solde dois pedaços de fio nas extremidades positiva e negativa para que saiam em forma de Y. Solde um conector de dois pinos nos fios positivo e negativo do conjunto de faixa de led. Não importa o tipo de conector que você usa, pode ser JST ou no meu caso algum cabo de alimentação / áudio ou algo assim (não tenho certeza, e peço desculpas por não ter nenhuma foto). Solde um dos fios de alimentação positivos para a extremidade positiva do conector oposto para a faixa de luz e um dos fios negativos para o outro pino no conector. Faça o mesmo, mas para um conector / conjunto de fio JST macho. O tempo todo, lembre-se de isolar as juntas de solda para evitar curtos. Agora, sobre o que fazer com o conector USB B. Solde o fio positivo em um orifício de 5v no Arduino Pro Mega. Pegue o fio terra e solde-o a um orifício GND. Pegue o D + e solde-o ao pino digital (ou neste caso, orifício) 40. Solde D- ao pino analógico 15. Solde a extremidade de dados do conector fêmea que combina com o conector macho da tira de LED ao pino de dados 6 e o fio terra a um pino GND. Fita adesiva ou fita adesiva funcionam muito bem para prender os fios à placa para que não caiam quando ela for virada para ser soldada. Agora pegue um botão momentâneo e solde um fio de uma extremidade ao pino VCC (ou qualquer pino de saída de tensão) e a outra extremidade ao pino RESET.
Etapa 5: Controlador
A primeira é escolher a forma certa para começar. Tudo depende de como você deseja que o controlador seja estruturado. Eu queria mais um controlador plano, então consegui um pedaço de tábua de 3 1/2 "por 3/4". organize as peças de uma forma que pareça adequada e confortável para trabalhar. Use uma curva francesa, um compasso, um triângulo e uma régua para desenhar onde todas as peças devem ficar. Corte o contorno básico usando a ferramenta de corte de sua escolha. Uma serra de proibição seria melhor, mas usei uma serra de coping, que funcionou muito bem. Lixe as bordas para fazer uma transição suave e, em seguida, lixe os cantos para torná-los mais confortáveis. Perfure o orifício para a chave e, em seguida, lixe, cinzele e / ou remova qualquer parte da parte inferior que o encaixe. Tente não fazer nada com a parte superior e apenas lixe o que você precisa para encaixá-la girando, dobrando ou qualquer outra coisa para fazê-la entrar. Assim que estiver encaixada, prenda-a com a porca de plástico e prenda a trocar. Perfure a área para o botão do potenciômetro passar e cinzele uma área para que ele possa afundar e se encaixar completamente. Faça alguns furos para que um parafuso possa prendê-lo. Dobre os pedacinhos do conector USB A que fazem com que sua largura geral aumente um pouco (veja as fotos). Corte uma parte do conector, verificando progressivamente para ter certeza de que o conector se encaixa. Cole o conector em seu slot. Pegue um pequeno pedaço de plástico e corte-o em um formato que caiba sobre o conector (veja as fotos) e, em seguida, prenda-o na madeira. Corte todas as peças que possam atrapalhar. Aparafuse o potenciômetro e coloque o botão. Solde o fio positivo em uma das extremidades do potenciômetro (não a parte variável) e o fio negativo na extremidade oposta. Solde o pino D ao pino variável na panela. Solde um fio do pino do potenciômetro com o fio positivo a um dos pinos do botão. Solde D + no outro pino do botão. Corte o fio sobressalente e isole as peças que precisam dele.
Etapa 6: Camisa
Encontre uma camisa confortável que deixe a luz passar. Escolhi esta camiseta branca básica. Realmente não importa a cor ou o estilo, desde que a luz possa ser vista brilhando por dentro. No entanto, não recomendo gráficos na frente. Disponha tudo na camisa para ajudá-lo a decidir onde você quer e use uma ferramenta de marcação apagável para desenhar. Eu (ou seja, algumas pessoas que conheço) tenho um lápis feito para marcar tecidos que podem ser lavados facilmente. Meça o tamanho das baterias, caixa do controlador e tela e corte pedaços de papel para combinar. Em seguida, fixe o papel em um pedaço de tecido não elástico. Uma trama funciona bem para isso. Em seguida, corte o retângulo deixando cerca de um quarto de polegada para uma costura em toda a volta. Em seguida, usando o pedaço de papel como guia, passe o ferro nas dobras no tecido. Agora o papel pode ser removido. Na parte do bolso que vai ficar de cima, dobre-o três vezes. Passe o ferro e prenda-o com alfinetes para mantê-lo no lugar. Costure um look ao longo do meio da dobra. Agora pegue o canto e dobre-o de forma que as bordas não costuradas perpendiculares umas às outras fiquem paralelas e costure ao longo da dobra passada mais próxima do canto (as fotos realmente ajudam). Faça isso para o outro canto também. Se por acaso você tiver uma chave seletora saindo de um bolso, faça um orifício de botão na base do bolso onde a chave toca. Em seguida, costure um orifício de botão e corte a parte do meio. Não posso dar instruções detalhadas porque tenho uma ferramenta legal para fazer buracos de botão. Certifique-se de fazer os furos antes de costurar o bolso. Pegue alguns alfinetes e enfie-os na camisa nos cantos das marcações para o bolso. Pegue o bolso e coloque cada canto em um alfinete (na parte interna da camisa), deixando um quarto de polegada para a costura, e prenda na camisa. Depois que o bolso foi preso. remova os alfinetes que não prendem o bolso e costure o bolso à camisa. Repita para todos os bolsos. Para o bolso grande que segura a tela, deixe um espaço para os fios na parte inferior do bolso. Para fazer um furo na camisa marque o local e pegue um ferro na parte de trás (com a parte mais brilhante no tecido) e passe a ferro. Então, para um pequeno orifício (como o que usei para a chave seletora), faça um orifício de botão. Para um buraco maior, marque o contorno e use um ponto em zigue-zague ao longo da linha (ou curva ou sei lá o quê) e corte a parte do meio. Se quiser, pode usar suspensórios para segurar o peso dos bolsos, os dois clipes que prendem os bolsos na frente e as costas prendem as calças. Também ganhei uma manginha de tecido costurada nas partes dos suspensórios que vão tocar minha pele. Duas camisas podem ficar um pouco quentes, então optei por não usar a manga de tecido.
Etapa 7: Programação
E aqui está o código. Algumas partes são bem comentadas, mas a grande maioria não. Se você tiver dúvidas sobre partes diferentes, pode me dar o número da linha (com #include como a linha número um) ou me dar uma cópia da (s) linha (s) e a função na qual ela reside (como loop () ou compMovePaddle ()) e farei o meu melhor para explicá-lo a você, em seguida, adicionarei um comentário ao código explicando-o. #include #define PIN 6 // diz quais são os pinos de entrada para o jogo int buttonPin = 40; // dita a pontuação, mantida em uma matriz bianária porque é mais esier int playerScore [5] = {0, 0, 0, 0, 0}; int compScore [5] = {0, 0, 0, 0, 0}; // determina a direção da bola int bvd = 0; // 0 é para baixo, 1 é para cima int bhd = 0; // 0 é para a direita, 1 para a esquerda // determina a posição das bolas int bvp = 8; bhp int = 6; // verifica se a bola está no modo rápido boolean fast = false; // verifica se é uma pontuação. booleano cIsPoint = false; booleano pIsPoint = false; // posições da raquete int cPaddle = 0; pPaddle int = 0; long anteriorMillis = 0; long previousMillisForComp = 0; // define os tempos de atraso para a bola em movimento rápido e lento o "Int" em normInt e fastInt é para o intervalo int normInt = 50; int fastInt = 10; // usado para verificar se há uma vitória. 1 é a vitória do jogador, -1 na vitória do computador e 0 significa que nada aconteceu ainda que int win = 0; // para se livrar de um bug. usado na instrução addOne e em nenhum outro lugar. int que = 0; // Coisa exibida antes do início, -1 é um escape int pongPlay = {1, 2, 3, 4, 10, 11, 12, 13, 16, 18, 20, 27, 29, 33, 34, 41, 42, 61, 62, 63, 70, 71, 72, 76, 85, 86, 88, 91, 92, 94, 100, 101, 102, 103, 131, 132, 136, 139, 144, 145, 146, 147, 148, 161, 162, 166, 175, 183, 185, 192, 194, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, -1}; // se você ganhar int youWin = {1, 2, 3, 4, 5, 16, 17, 18, 19, 20, 27, 33, 34, 39, 46, 47, 48, 49, 54, 55, 56, 57, 58, 77, 78, 79, 84, 88, 91, 92, 93, 94, 95, 99, 103, 106, 110, 114, 118, 130, 131, 132, 144, 145, 146, 147, 151, 162, 163, 168, 169, 170, 177, 181, 192, 193, 204, 205, 206, 207, -1}; // se você perder int, você perde = {1, 3, 5, 16, 17, 18, 19, 20, 24, 26, 28, 31, 32, 32, 33, 34, 35, 39, 46, 47, 48, 49, 62, 65, 77, 78, 79, 84, 86, 88, 91, 94, 99, 103, 106, 110, 122, 123, 124, 130, 131, 132, 144, 148, 152, 153, 154, 162, 163, 168, 169, 170, 181, 192, 193, 204, 205, 206, 207, 208, -1}; // configura a faixa de led Adafruit_NeoPixel strip = Adafruit_NeoPixel (210, PIN, NEO_RGB + NEO_KHZ800); // configurando, não transforma o pino 40 para entrada, começa a faixa, exibe a // mensagem e a mostra. void setup () {pinMode (buttonPin, INPUT); strip.begin (); para (int i = 0; pongPlay > 0; i ++) {strip.setPixelColor (pongPlay , strip. Color (0, 0, 255)); } strip.show (); atraso (5000); while (digitalRead (buttonPin) == LOW) {// É uma armadilha! (até que o botão seja pressionado.)}} void loop () {clearScreen (); // desenha as pás para mostrar a pontuação de (int i = 0; i <5; i ++) {if (playerScore == 1) {strip.setPixelColor (204-i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (204-i, strip. Color (0, 255, 0)); } if (compScore == 1) {strip.setPixelColor (5 + i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (5 + i, strip. Color (255, 0, 0)); }} // desenha a bola em sua posição inicial strip.setPixelColor (98, strip. Color (255, 255, 255)); strip.show (); // decide se a bola está subindo ou descendo enquanto (pIsPoint == false && cIsPoint == false) {clearScreen (); currentMillis longo sem sinal = millis (); // atribui a posição da pá do jogador pPaddle = checkPaddlePos (); // verifica a próxima posição checkNext (); // movendo a bola if (fast == false) {if (currentMillis - previousMillis> normInt) {previousMillis = currentMillis; moveBall (); }} else if (fast == true) {if (currentMillis - previousMillis> fastInt) {previousMillis = currentMillis; moveBall (); }} // desenha a bola if (bhp% 2! = 0) {strip.setPixelColor (bhp * 15 + 14-bvp, strip. Color (255, 255, 255)); } else if (bhp% 2 == 0) {strip.setPixelColor (bhp * 15 + bvp, strip. Color (255, 255, 255)); } // movimento da pá do computador compMovePaddle (); // desenha as pás drawPaddles (); // realmente coloque tudo no lugar.strip.show (); // verificar se um ponto foi marcado if (pIsPoint == true) {which = 0; bhd = 0; Adicione um(); pausa; } else if (cIsPoint == true) {which = 1; bhd = 1; Adicione um(); pausa; }} if (win == 1) {clearScreen (); for (int i = 0; youWin > 0; i ++) {strip.setPixelColor (youWin , strip. Color (255, 0, 0)); strip.show (); } atraso (5000); para (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } win = 0; } else if (win == -1) {clearScreen (); for (int i = 0; youLose > 0; i ++) {strip.setPixelColor (youLose , strip. Color (0, 255, 0)); strip.show (); } atraso (5000); para (int i = 0; i <5; i ++) {playerScore = 0; compScore = 0; } win = 0; } pIsPoint = false; cIsPoint = false; bvp = 8; bhp = 6; bvd = random (0, 2); // 0 é para baixo, 1 é para cima rápido = falso; } // A IA do jogo void compMovePaddle () {unsigned long currentMillis = millis (); if (currentMillis - previousMillisForComp> 51) {previousMillisForComp = currentMillis; if (bvp> = 13 && 10-cPaddle 0) {cPaddle--; } else if (bvp = 0 && cPaddle <10) {cPaddle ++; } else if (bvp-3> 10-cPaddle && 10-cPaddle> = 0 && cPaddle> 0) {cPaddle--; } else if (bvp <10-cPaddle && 10-cPaddle <= 10) {cPaddle ++; }}} // move a bola void moveBall () {if (bhd == 0) {bhp--; } else if (bhd == 1) {bhp ++; } if (bvd == 0) {bvp--; } else if (bvd == 1) {bvp ++; }} // adiciona um ao array. Se whichOne for 0, ele será adicionado à pontuação do jogador. Se for 1, adiciona aos computadores void addOne () {if (which == 0) {// se é a pontuação do jogador // Adicione um. Esta é a maneira simplista que conheço. for (int i = 0; i <5; i ++) {// loop if (playerScore == 0) {// se esse valor for zero playerScore = 1; // torná-lo 1 quebra; // então vá embora} else {// se for 1 playerScore = 0; // torne-o zero e faça um loop}}} else if (which == 1) {for (int i = 0; i <5; i ++) {if (compScore == 0) {compScore = compScore +1; pausa; } else {compScore = 0; }}} // Verifica se alguém ganhou. if (compScore [0] == 1 && compScore [2] == 1 && compScore [4] == 1) {win = -1; } else if (playerScore [0] == 1 && playerScore [2] == 1 && playerScore [4] == 1) {win = 1; }} // verifica as bolas na próxima posição void checkNext () {// verifica se um ponto foi marcado if (bhp == 13) {pIsPoint = true; } else if (bhp == 0) {cIsPoint = true; } // se um ponto foi marcado, pule o resto das coisas if (pIsPoint == false || cIsPoint == false) {// verifica a bola verticalmente if (bvp + bvd == 15) {bvd = 0; } else if (bvp + bvd == 0) {bvd = 1; } // verifica a bola horizontalmente if (bhp + bhd == 13) {// primeiro no lado do computador if (bvp> = 10-cPaddle && bvp <= 10-cPaddle + 4) {if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; } rápido = falso; } else if (bvp + bvd == 10-cPaddle || bvp + bvd == 10-cPaddle + 5) {if (bvp! = 0 && bvp! = 14) {if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; } else if (bvp == 0 || bvp == 14) {bhd = 1; } rápido = falso; }} else if (bhp + bhd == 1) {// então no lado do jogador if (bvp> = pPaddle && bvp <= pPaddle + 4) {// está batendo na raquete em um local normal? //Quique a bola! if (bhd == 1) {bhd = 0; } else if (bhd == 0) {bhd = 1; }} else if (bvp + bvd == pPaddle || bvp + bvd-5 == pPaddle) {// é bater na raquete no canto if (bvp! = 0 && bvp! = 14) {// é isso não alto ou baixo? //Quique a bola! if (bvd == 0) {bvd = 1; } else if (bvd == 1) {bvd = 0; } bhd = 1; rápido = verdadeiro; } else if (bvp == 0 || bvp == 14) {// está alto ou baixo? //Quique a bola! bhd = 0; fast = true; // defina o valor para depois fazer a bola se mover mais rápido}}}}} int checkPaddlePos () {// lê o pote e decide a posição da raquete de acordo com if (analogRead (A15) <93) {return 0; } else if (analogRead (A15) <186) {return 1; } else if (analogRead (A15) <279) {return 2; } else if (analogRead (A15) <372) {return 3; } else if (analogRead (A15) <465) {return 4; } else if (analogRead (A15) <558) {return 5; } else if (analogRead (A15) <652) {return 6; } else if (analogRead (A15) <745) {return 7; } else if (analogRead (A15) <837) {return 8; } else if (analogRead (A15) <= 931) {return 9; } else if (analogRead (A15) <= 2014) {return 10; }} void drawPaddles () {// desenha as pás no local correto e exibe a pontuação na raquete para (int i = 0; i <5; i ++) {if (playerScore == 1) {tira. setPixelColor (pPaddle + i, strip. Color (255, 255, 255)); } else if ((playerScore == 0)) {strip.setPixelColor (pPaddle + i, strip. Color (255, 0, 0)); } if (compScore == 1) {strip.setPixelColor (199 + cPaddle-i, strip. Color (255, 255, 255)); } else if ((compScore == 0)) {strip.setPixelColor (199 + cPaddle-i, strip. Color (0, 255, 0)); }}} void clearScreen () {for (int i = 0; i <= 210; i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0)); } strip.show (); }
Etapa 8: Produto Acabado
E aí está, a camisa acabada!
Recomendado:
FLEXBALL - uma bola PCB flexível de cem pixels com WiFi: 6 etapas (com imagens)
FLEXBALL - uma bola PCB flexível de cem pixels com WiFi: Olá fabricantes, é o fabricante do moekoe! Flexball é baseado em uma PCB flexível equipada com 100 LEDs endereçáveis WS2812 2020. É controlado por um ESP8285-01f - o menor módulo baseado em ESP da Espressif. Além disso, possui um acelerômetro ADXL345
Jogue o jogo Simon em sua camisa: 5 etapas
Jogue o jogo Simon em sua camisa: Você sempre quis jogar o jogo Simon em sua camisa? Eu também! Neste instrutível, vou mostrar como fazer uma versão do jogo Simon que você pode jogar tocando em sua camisa, usando um Makey Makey
A primeira vez de desenhar uma prancha flexível: 3 etapas
A primeira vez de desenhar uma prancha macia: Escolhendo algo que acabou de ser feito, é necessário fazer uma prancha leve, que deve ser brilhante, dobrável, colorida e remota (todos os materiais comprados em jotrin.com). A primeira solução é pensar em lâmpadas RGB de 3W. Este eu de alta potência
Laptop flexível: 5 etapas (com imagens)
Laptop Flexível: Este foi um pequeno projeto rápido que fiz para manter minhas habilidades de design e prototipagem afiadas e compartilhar algo que não está sob o NDA ou em processo de licenciamento para alguém. Estou enviando para o desafio de dicas profissionais e este é realmente um guia para
Fazendo uma luva funcionar com uma tela de toque: 3 etapas (com fotos)
Como fazer uma luva funcionar com uma tela de toque: você pode fazer isso em apenas alguns minutos sem muito conhecimento. O inverno está chegando (se você estiver no hemisfério norte) e com o inverno vem o frio o tempo, e com o frio vêm as luvas. Mas mesmo no frio seu telefone