O clássico jogo Nervo Teste é para testar a coordenação motora e a habilidade de concentração.
O objetivo é passar a argola pelo arame até a outra extremidade. A cada contato o alarme é acionado e a falta é registrada na barra de leds. Com três faltas o jogador é eliminado!
Um jogo interessante e divertido para feira de ciências.
O circuito está montado com uma placa Digispark (Attiny85), uma barra com 8 leds RGB WS2812 e um Buzzer.
O arame tortuoso é conectado ao GND e a argola é conectada no pino digital 0.
Segue o esquema elétrico e o código fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | /*--------------------------------------------------------- Programa : NERVO TESTE Autor : Fellipe Couto [ http://www.efeitonerd.com.br ] Data : 29/09/2021 ---------------------------------------------------------*/ #include <Adafruit_NeoPixel.h> //https://github.com/adafruit/Adafruit_NeoPixel #define NERVO_PIN 0 //Pino de conexão do gancho nervo teste #define BUZZER 1 //Pino de conexão do buzzer #define RGB_PIN 2 //Pino de conexão da barra de leds #define RGB_PIXELS 8 //Número de leds rgb Adafruit_NeoPixel pixels(RGB_PIXELS, RGB_PIN); //Barra leds RGB WS2812 int touchCount = 0; //Controle de tentativas void setup() { //Configura os pinos pinMode(NERVO_PIN, INPUT_PULLUP); pinMode(BUZZER, OUTPUT); //Inicializa a barra de leds RGB WS2812 pixels.begin(); //Primeiro led em verde pixels.setPixelColor(0, 0, 8, 0); //Led, R, G, B pixels.show(); } void loop() { //Houve toque if (digitalRead(NERVO_PIN) == LOW) { touchCount++; touchLevel(touchCount); delay(1000); } } void touchLevel(int level) { int n = RGB_PIXELS; if (level == 1) { n = 4; tone(BUZZER, 3300, 100); } else if (level == 2) { n = 7; tone(BUZZER, 3200, 200); } else { tone(BUZZER, 2800, 1000); } for (int i = 1; i < n; i++) { if (i < 4) { pixels.setPixelColor(i, 8, 2, 0); //Led, R, G, B (Laranja claro) } else if (i < 7) { pixels.setPixelColor(i, 8, 1, 0); //Led, R, G, B (Laranja) } else { pixels.setPixelColor(i, 90, 0, 0); //Led, R, G, B (Vermelho) } pixels.show(); delay(20); } if (n == RGB_PIXELS) { delay(1000); for (int i = RGB_PIXELS - 1; i >= 0; i--) { tone(BUZZER, 3000, 50); pixels.setPixelColor(i, 10, 0, 0); //Led, R, G, B (Vermelho) pixels.show(); delay(100); } while (1) { for (int i = 0; i < RGB_PIXELS; i++) pixels.setPixelColor(i, 20, 0, 0); //Led, R, G, B pixels.show(); delay(500); for (int i = 0; i < RGB_PIXELS; i++) pixels.setPixelColor(i, 10, 0, 0); //Led, R, G, B pixels.show(); delay(500); } } } |
Muito bom!!!! Adorei
ResponderExcluirQue bom que gostou! :) Obrigado pela visita ao blog!
ExcluirTem o desenho dela montada no protoboard?
ResponderExcluirBoa tarde, Alexandre!
ExcluirRespondi a sua mensagem que me enviou pelo e-mail.
faz um tutorial pra nois ai?
ResponderExcluirOlá! Não entendi muito bem. Qual informação a mais sobre o projeto que gostaria?
Excluir