Índice:
- Etapa 1: coletar materiais
- Etapa 2: fazer circuitos
- Etapa 3: projetando a luva
- Etapa 4: Solda
- Etapa 5: codificação
- Etapa 6: Mudanças
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Esta cyberglove trata de fazer o movimento certo no momento certo.
As luzes vão do seu braço (cotovelo) para a sua mão e quando as luzes chegam à sua mão você tem que pressionar os dedos na mini fotocélula.
Se você pressionar a mão na mini fotocélula no momento certo, os leds ficam verdes. Caso contrário, os leds ficam vermelhos.
Etapa 1: coletar materiais
- Uma luva
- Tecido para deixar a luva mais longa
- WS2812B tira LED
- Fios
- Arduino
- Mini photosell
Etapa 2: fazer circuitos
Primeiro conecte a faixa de led ao arduino. Você pode fazer isso conectando o + 5v ao 5v no arduino. O Din deve ser conectado a A0 no arduino e o GND deve ser conectado ao GND no arduino.
Você também deve conectar a mini fotocélula ao arduino conectando-se ao fio 5v da faixa de led e da mesma fonte conectando-se com um fio ao PIN 6 no arduino. O outro lado da mini fotocélula deve ser conectado ao fio GND da tira de led
Etapa 3: projetando a luva
A luva deve ter o tamanho certo para caber nas faixas de led. Os leds devem ser alinhados para serem mais agradáveis de olhar.
Para este jogo, você deve usar o braço e deseja mover-se livremente. Isso pode ser realizado colocando o arduino na luva. Usei velcro como fecho para prender o arduino na luva. Então, para estabelecer mais estabilidade, você pode colocar uma corda ao redor da luva e ao redor do arduino.
A mini fotocélula foi costurada dentro da luva para ficar no lugar.
Por último, você tem que esconder os fios para que pareça melhor. Isso pode ser feito com tecido que será costurado em cima dos fios.
Etapa 4: Solda
Agora você pode tornar os fios de conexão do circuito seguros por meio de solda.
Etapa 5: codificação
// Um programa básico de teste de tira NeoPixel para o dia a dia.
// MELHORES PRÁTICAS DO NEOPIXEL para uma operação mais confiável: // - Adicione 1000 uF CAPACITOR entre as conexões + e - das tiras NeoPixel. // - MINIMIZE O COMPRIMENTO DA FIAÇÃO entre a placa do microcontrolador e o primeiro pixel. // - O DATA-IN da tira NeoPixel deve passar por um RESISTOR de 300-500 OHM. // - EVITE conectar NeoPixels em um CIRCUITO AO VIVO. Se for necessário, SEMPRE // conecte GROUND (-) primeiro, depois + e depois os dados. // - Ao usar um microcontrolador de 3,3 V com uma faixa NeoPixel alimentada por 5 V, // um CONVERSOR DE NÍVEL LÓGICO na linha de dados é FORTEMENTE RECOMENDADO. // (Ignorá-los pode funcionar bem em sua bancada de trabalho, mas pode falhar em campo)
#include #ifdef _AVR_ #include // Obrigatório para berloques Adafruit de 16 MHz #endif
// Qual pino do Arduino está conectado aos NeoPixels? // Em um Trinket ou Gemma, sugerimos alterá-lo para 1: #define LED_PIN 6
// Quantos NeoPixels estão anexados ao Arduino? #define LED_COUNT 60
// Declara nosso objeto de tira NeoPixel: tira Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Cor branca, para bool padrão clickedCorrectly = false; // Argumento 1 = Número de pixels na faixa NeoPixel // Argumento 2 = número do pino Arduino (a maioria são válidos) // Argumento 3 = Sinalizadores de tipo de pixel, somados conforme necessário: // NEO_KHZ800 800 KHz bitstream (a maioria dos produtos NeoPixel com WS2812 LEDs) // NEO_KHZ400 400 KHz (clássico 'v1' (não v2) pixels FLORA, drivers WS2811) // NEO_GRB Pixels são conectados para GRB bitstream (a maioria dos produtos NeoPixel) // NEO_RGB Pixels são conectados para bitstream (v1 FLORA pixels, não v2) // NEO_RGBW Pixels são conectados para bitstream RGBW (produtos NeoPixel RGBW)
// função setup () - executa uma vez na inicialização --------------------------------
void setup () {// Estas linhas são especificamente para suportar o Adafruit Trinket 5V 16 MHz. // Qualquer outra placa, você pode remover esta parte (mas não há problema em deixá-la): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FIM do código específico do Trinket.
pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // DESLIGA todos os pixels o mais rápido possível strip.setBrightness (10); // Defina o BRILHO para cerca de 1/5 (máx = 255)}
// função loop () - executa repetidamente enquanto a placa estiver ligada ---------------
void loop () {clickedCorrectly = theaterChaseOne (cor); if (clicadoCorretamente) {color = strip. Color (0, 255, 0); } else {color = strip. Color (255, 0, 0); }}
// Algumas funções próprias para criar efeitos animados -----------------
// Luzes de perseguição no estilo letreiro de teatro. Passe uma cor (valor de 32 bits, // a la strip. Color (r, g, b) conforme mencionado acima) e um tempo de atraso (em ms) // entre os quadros. bool theaterChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; for (int index = 0; index 800) {// valor do sensor de luz if (index <16) {// 2 leds antes do fim, então você pode clicar em color = strip. Color (255, 0, 0); // leds de cor vermelha clickedWrong = true; // clica errado e depois os leds ficam vermelhos} else if (! clickedWrong) {// se não estiver errado color = strip. Color (0, 255, 0); // leds de cor verde correct = true; // clica em correto e depois os leds ficam verdes}} strip.clear (); strip.setPixelColor (17 - índice, cor); // luzes led da primeira linha strip.setPixelColor (18 + index, color); // luzes led da segunda linha strip.setPixelColor (53 - index, color); // luzes led da terceira linha strip.show (); atraso (300); } retornar correto; }
Etapa 6: Mudanças
Eu fiz algumas mudanças. Em primeiro lugar, escondi o arduino para que fosse mais confortável usar a "mão Rythm" e, em segundo lugar, mudei um pouco o código. Mudei o código para que quando você pressionar no momento certo a cor fique verde e os LEDs se movam mais rápido. Ao fazer isso, o LED Swill torna-se 10% mais rápido do que antes. Isso torna o jogo mais interessante
É assim que o código é agora:
// Um programa básico de teste de tira NeoPixel para o dia a dia. // MELHORES PRÁTICAS DO NEOPIXEL para uma operação mais confiável: // - Adicione 1000 uF CAPACITOR entre as conexões + e - das tiras NeoPixel. // - MINIMIZE O COMPRIMENTO DA FIAÇÃO entre a placa do microcontrolador e o primeiro pixel. // - O DATA-IN da tira NeoPixel deve passar por um RESISTOR de 300-500 OHM. // - EVITE conectar NeoPixels em um CIRCUITO AO VIVO. Se for necessário, SEMPRE // conecte GROUND (-) primeiro, depois + e depois os dados. // - Ao usar um microcontrolador de 3,3 V com uma faixa NeoPixel alimentada por 5 V, // um CONVERSOR DE NÍVEL LÓGICO na linha de dados é FORTEMENTE RECOMENDADO. // (Ignorar isso pode funcionar bem em sua bancada, mas pode falhar no campo) #include #ifdef _AVR_ #include // Requerido para Adafruit Trinket de 16 MHz #endif // Qual pino do Arduino está conectado aos NeoPixels? // Em um Trinket ou Gemma, sugerimos alterá-lo para 1: #define LED_PIN 6 // Quantos NeoPixels estão anexados ao Arduino? #define LED_COUNT 60 // Declare nosso objeto de tira NeoPixel: tira Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // Cor branca, para bool padrão clickedCorrectly = false; índice interno = 0; intervalo interno = 300; resultado int = 0; anteriorMs longo sem sinal = millis (); // Argumento 1 = Número de pixels na faixa NeoPixel // Argumento 2 = número do pino Arduino (a maioria são válidos) // Argumento 3 = Sinalizadores de tipo de pixel, somados conforme necessário: // NEO_KHZ800 800 KHz bitstream (a maioria dos produtos NeoPixel com WS2812 LEDs) // NEO_KHZ400 400 KHz (clássico 'v1' (não v2) pixels FLORA, drivers WS2811) // NEO_GRB Pixels são conectados para GRB bitstream (a maioria dos produtos NeoPixel) // NEO_RGB Pixels são conectados para bitstream (v1 FLORA pixels, não v2) // NEO_RGBW Pixels são conectados para bitstream RGBW (produtos NeoPixel RGBW) // função setup () - executa uma vez na inicialização -------------------- ------------ void setup () {// Estas linhas são especificamente para suportar o Adafruit Trinket 5V 16 MHz. // Qualquer outra placa, você pode remover esta parte (mas não há problema em deixá-la): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // FIM do código específico do Trinket. Serial.begin (9600); while (! Serial) {; // aguarde a conexão da porta serial. Necessário apenas para porta USB nativa} pinMode (A0, INPUT); strip.begin (); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show (); // DESLIGA todos os pixels o mais rápido possível strip.setBrightness (10); // Defina BRIGHTNESS para cerca de 1/5 (max = 255)} // função loop () - executa repetidamente enquanto a placa estiver ligada --------------- void loop () {currentMs longo sem sinal = millis (); // Obtendo a hora atual int value = analogRead (A0); // Lendo o sensor de luz atual if (value> 900 && result == 0) {// Se o sensor for pressionado e nenhum resultado foi registrado ainda, acione a captura do resultado if (index = interval) {// Verifique se o atual o loop excede o intervalo previousMs = currentMs; // Define o novo intervalo para a hora atual + índice de intervalo + = 1; // Defina os leds um passo adiante no loop if (index> 17) {// Dispara o fim do loop de manipulação index = 0; if (resultado == 2) {// Em um intervalo de resultado correto = (int) max ((intervalo * 0,95), 50); // Acelera em 10%, até intervalo de 50ms / color = strip. Color (0, 255, 0); // Defina os leds como verdes} else if (result == 1) {// Em um intervalo de resultado incorreto = 300; // Reinicia o intervalo color = strip. Color (255, 0, 0); // Defina os leds para vermelho} else {// Em nenhum resultado capturado color = strip. Color (255, 0, 0); // Defina os leds para vermelho} result = 0; // Reinicia o resultado para o próximo loop} theaterChaseOne (color, index); // Acenda os leds para exibição. }} // Algumas funções próprias para criar efeitos animados ----------------- // Luzes de perseguição no estilo letreiro de teatro. Passe uma cor (valor de 32 bits, // a la strip. Color (r, g, b) conforme mencionado acima) e um tempo de atraso (em ms) // entre os quadros. void theaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - índice, cor); // luzes led da primeira linha strip.setPixelColor (18 + index, color); // luzes led da segunda linha strip.setPixelColor (53 - index, color); // luzes led da terceira linha strip.show (); }
Recomendado:
Computador BASIC de mão: 6 etapas (com imagens)
Computador de mão BASIC: Este Instructable descreve meu processo de construção de um pequeno computador de mão rodando BASIC. O computador é construído em torno do chip ATmega 1284P AVR, que também inspirou o nome bobo do computador (HAL 1284). Esta construção é PESADAMENTE inspirada no
Velocidade e direção de controle de gesto de mão DC MOTOR usando Arduino: 8 etapas
DC MOTOR Controle de gesto de mão com velocidade e direção usando Arduino: neste tutorial, aprenderemos como controlar um motor DC com gestos de mão usando arduino e Visuino. Assista ao vídeo! Confira também: Tutorial de gestos de mão
Gadget de dinossauro Chrome controlado por gestos de mão / Como fazer isso / #smartcreativity: 14 etapas
Gadget de dinossauros do Chrome controlado por gestos de mão / Como fazer isso / #smartcreativity: Olá amigos, neste tutorial vou mostrar a vocês um projeto muito exclusivo. Oh, hoje vou mostrar a vocês como controlar o jogo de dinossauros do Chrome com seu gesto de mão muito facilmente. Se você usar esta tecnologia para controlar o cromo DINO, você vai cair
Terceira mão ++: uma mão amiga multiuso para eletrônicos e outros trabalhos delicados: 14 etapas (com fotos)
Terceira mão ++: uma mão amiga multiuso para eletrônicos e outros trabalhos delicados .: No passado, usei as terceiras mãos / ajudas disponíveis em cadeias de lojas de eletrônicos e fiquei frustrado com sua usabilidade. Nunca conseguia colocar os clipes exatamente onde queria ou demorava mais tempo do que deveria para configurá-los
O Tornar-se de uma Mão Ligada: 5 Passos (com Imagens)
O Tornar-se de uma Mão Ligada: Não rápido, mas sujo! Aqui você obtém uma introdução passo a passo, como soldar uma extremidade de robô estático e como planejar um suporte simples de madeira maciça. Aproveite e refaça se quiser