#include <Stepper.h>
#include <SevSeg.h>
#define PITCH_MIN 262
#define PITCH_MAX 1047
int meter;
int barGraph;
int speed;
int pitch;
Stepper stepper(360, 8, 9, 10, 11);
SevSeg segment;
void setup()
{
// put your setup code here, to run once:
stepper.setSpeed(10);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(44, OUTPUT);
pinMode(45, OUTPUT);
pinMode(46, OUTPUT);
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(51, OUTPUT);
byte numDigits = 2;
byte digitPins[] = {7, 6};
byte segmentPins[] = {44, 45, 46, 47, 48, 49, 50, 51};
byte hardwareConfig = COMMON_ANODE;
bool resistorsOnSegments = true;
segment.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
segment.setBrightness(90);
}
void loop()
{
meter = analogRead(0);
meter = map(meter, 0, 1023, 0, 10);
speed = map(meter, 0, 10, 0, 100);
pitch = map(meter, 0, 10, PITCH_MIN, PITCH_MAX);
segment.setNumber(meter, 0);
digitalWrite(41, meter > 0? HIGH : LOW);
digitalWrite(39, meter > 1? HIGH : LOW);
digitalWrite(37, meter > 2? HIGH : LOW);
digitalWrite(35, meter > 3? HIGH : LOW);
digitalWrite(33, meter > 4? HIGH : LOW);
digitalWrite(31, meter > 5? HIGH : LOW);
digitalWrite(29, meter > 6? HIGH : LOW);
digitalWrite(27, meter > 7? HIGH : LOW);
digitalWrite(25, meter > 8? HIGH : LOW);
digitalWrite(23, meter > 9? HIGH : LOW);
stepper.setSpeed(speed);
if(speed != 0)
{
stepper.step(1);
}
if(meter == 0)
{
noTone(12);
}
else
{
tone(12, pitch);
}
segment.refreshDisplay();
}