Pith - arduino_beatdet
arduino_beatdet/arduino_beatdet.ino [3.6 kb]
Modified: 23:00:12 56 026 (14 May 026)
16 Days Ago
// Arduino Beatdet Bidet
// vgmlr
// MSGEQ7 Script | J Skoba
// WTV020-SD-16P | Diego J. Arevalo
#include "Servo.h"
#include "Wtv020sd16p.h"
// Servo
Servo sprayarm;
int pos = 45;
// Music Player
int resetPin = 14;
int clockPin = 15;
int dataPin = 16;
int busyPin = 17;
Wtv020sd16p wtv020sd16p(resetPin, clockPin, dataPin, busyPin);
// EQ Pins
int analogPin = A2;
int strobePin = 2;
int resetPin = 3;
int spectrumValue[7];
// LED Pins
int one = 8;
int two = 9;
int thr = 10;
int fou = 11;
// LED Variables
int ledone = 0;
int ledtwo = 0;
int ledthr = 0;
int ledfou = 0;
// Pump Pins
int pumpo = 4;
int pumpt = 5;
int pumph = 6;
int pumpf = 7;
// Pump Variables
int pmpone = 0;
int pmptwo = 0;
int pmpthr = 0;
int pmpfou = 0;
// BlueTeethes
char inbound = 0;
void setup()
{
  Serial.begin(9600);
  wtv020sd16p.reset();
  sprayarm.attach(12);
  sprayarm.write(pos);
  pinMode(analogPin, INPUT);
  pinMode(strobePin, OUTPUT);
  pinMode(resetPin, OUTPUT);
  analogReference(DEFAULT);
  pinMode(one, OUTPUT);
  pinMode(two, OUTPUT);
  pinMode(thr, OUTPUT);
  pinMode(fou, OUTPUT);
  pinMode(pumpo, OUTPUT);
  pinMode(pumpt, OUTPUT);
  pinMode(pumph, OUTPUT);
  pinMode(pumpf, OUTPUT);
  digitalWrite(resetPin, LOW);
  digitalWrite(strobePin, HIGH);
}
void loop()
{
  // Clear Audio
  wtv020sd16p.stopVoice();
  // Wait for Track
  if (Serial.available() > 0)
  {
    // Which Track Number
    inbound = Serial.read();
    if (inbound == '1') {
      // Track 1
      armout();
      wtv020sd16p.playVoice(0);
      spray();
      wtv020sd16p.stopVoice();
      armin();
    }
    else if (inbound == '2') {
      // Track 2
      armout();
      wtv020sd16p.playVoice(1);
      spray();
      wtv020sd16p.stopVoice();
      armin();
    }
    else if (inbound == '3') {
      // Track 3
      armout();
      wtv020sd16p.playVoice(2);
      spray();
      wtv020sd16p.stopVoice();
      armin();
    }
  }
}
// Arm Out
void armout() {
  for (pos = 45; pos <= 97; pos += 1) {
    sprayarm.write(pos);
    delay(15);
  }
}
// Arm In
void armin() {
  for (pos = 97; pos >= 45; pos -= 1) {
    sprayarm.write(pos);
    delay(15);
  }
}
void spray() {
  // Loop 15 Seconds
  for (int t = 0; t < 5000000, t++) {
    // EQ Reset
    digitalWrite(resetPin, HIGH);
    digitalWrite(resetPin, LOW);
    // EQ Store Values and Print
    for (int p = 0; p < 7; p++)
    {
      digitalWrite(strobePin, LOW);
      delayMicroseconds(30);
      spectrumValue[p] = analogRead(analogPin);
      //    Serial.print(" ");
      //    Serial.print(spectrumValue[p]);
      digitalWrite(strobePin, HIGH);
    }
    //  Serial.println();
    // Map Audio to LED and Pumps
    ledone = spectrumValue[0];
    // Constrain Required to Limit Results
    ledone = constrain(ledone, 400, 600);
    // Lower Power to Lower Elevation
    ledone = map(ledone, 400, 600, 0, 190);
    analogWrite(fou, ledone); // 0
    analogWrite(pumpf, ledone); // 0
    //  Serial.print(ledone);
    //  Serial.print(" ");
    ledtwo = spectrumValue[1];
    ledtwo = constrain(ledtwo, 550, 600);
    ledtwo = map(ledtwo, 550, 600, 0, 190);
    analogWrite(one, ledtwo); // 1
    analogWrite(pumpo, ledtwo); // 1
    //  Serial.print(ledtwo);
    //  Serial.print(" ");
    ledthr = spectrumValue[4];
    ledthr = constrain(ledthr, 130, 160);
    ledthr = map(ledthr, 130, 160, 0, 190);
    analogWrite(two, ledthr); // 2
    analogWrite(pumpt, ledthr); // 2
    //  Serial.print(ledthr);
    //  Serial.print(" ");
    ledfou = spectrumValue[6];
    ledfou = constrain(ledfou, 110, 150);
    ledfou = map(ledfou, 110, 150, 0, 190);
    analogWrite(thr, ledfou); // 4
    analogWrite(pumph, ledfou); // 4
    //  Serial.print(ledfou);
    //  Serial.println();
  }
}
Updates
Shim - Android 70.026.1
Wedge - Linux 68.026.1
Wedge - Android 68.026.1
Taper - Linux 64.026.1
Ayh Extension - Chrome 63.026.1
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Shim (Dictation)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)