![](images/umpiremask_1.jpg)
- // Arduino Umpire Mask
- // pkvi
- #include "Adafruit_NeoPixel.h"
- // Neopixel Data Pins
- #define PINSTRIP 3
- #define PINPIXEL 4
- // LED Count and Setup
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(15,
- PINSTRIP, NEO_GRB + NEO_KHZ800);
- Adafruit_NeoPixel pixels = Adafruit_NeoPixel(6,
- PINPIXEL, NEO_GRB + NEO_KHZ800);
- // Strike Count
- int strikes = 0;
- // Ball Count
- int balls = 0;
- // Bluetooth Data
- char call = 0;
- void setup() {
- Serial.begin(9600);
- strip.begin();
- strip.show();
- pixels.begin();
- colorWipe(strip.Color(255, 0, 0), 50);
- }
- void loop() {
- // Clear Strip
- colorWipe(strip.Color(0, 0, 0), 50);
- if (Serial.available() > 0) {
- call = Serial.read();
- if (call == '1') {
- colorWipe(strip.Color(255, 0, 0), 50);
- strike();
- delay(1000);
- }
- else if (call == '2') {
- colorWipe(strip.Color(0, 255, 0), 50);
- ball();
- delay(1000);
- }
- else if (call == '3') {
- reload();
- }
- }
- }
- void strike() {
- if (strikes == 0) {
- // Red Strike Count
- pixels.setPixelColor(5, pixels.Color(255, 0, 0));
- strikes = 1;
- }
- else if (strikes == 1) {
- pixels.setPixelColor(4, pixels.Color(255, 0, 0));
- }
- pixels.show();
- }
- void ball() {
- if (balls == 0) {
- // Green Ball
- pixels.setPixelColor(0, pixels.Color(0, 255, 0));
- balls = 1;
- }
- else if (balls == 1) {
- pixels.setPixelColor(1, pixels.Color(0, 255, 0));
- balls = 2;
- }
- else if (balls == 2) {
- pixels.setPixelColor(2, pixels.Color(0, 255, 0));
- }
- pixels.show();
- }
- void reload() {
- colorWipe(strip.Color(255, 0, 0), 50);
- pixels.setPixelColor(0, pixels.Color(0, 0, 0));
- pixels.setPixelColor(1, pixels.Color(0, 0, 0));
- pixels.setPixelColor(2, pixels.Color(0, 0, 0));
- pixels.setPixelColor(4, pixels.Color(0, 0, 0));
- pixels.setPixelColor(5, pixels.Color(0, 0, 0));
- strikes = 0;
- balls = 0;
- pixels.show();
- }
- void colorWipe(uint32_t c, uint8_t wait) {
- for (uint16_t i = 0; i < strip.numPixels(); i++) {
- strip.setPixelColor(i, c);
- strip.show();
- delay(wait);
- }
- }