Initialized

This commit is contained in:
2025-09-25 13:49:04 +02:00
commit caf947723e
7 changed files with 329 additions and 0 deletions

206
src/main.cpp Normal file
View File

@@ -0,0 +1,206 @@
#include <Arduino.h>
int USER_STEPS = 5;
int STAFF_STEPS = 25;
int maxVolume = 100;
int userVolume = 100;
int potPosition = 64;
int oldUserVolume = userVolume;
void volumeUp();
void volumeDown();
void setup()
{
pinMode(11, OUTPUT); // Green
pinMode(12, OUTPUT); // Red LED (D4)
pinMode(LED_BUILTIN, OUTPUT); // Green LED
pinMode(2, INPUT); // SW1
pinMode(4, INPUT); // SW2
// RF Receiver
pinMode(A0, INPUT); // Remote Button D
pinMode(A1, INPUT); // Remote Button C
pinMode(A2, INPUT); // Remote Button B
pinMode(A3, INPUT); // Remote Button A
pinMode(10, OUTPUT); // D10 - CS
pinMode(9, OUTPUT); // D9 - U/D
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
for (int i = 0; i < 64; i++)
{
volumeUp();
}
}
void loop()
{
switch (maxVolume)
{
case 100:
digitalWrite(11, HIGH);
digitalWrite(12, LOW);
digitalWrite(LED_BUILTIN, LOW);
break;
case 75:
digitalWrite(11, LOW);
digitalWrite(12, HIGH);
digitalWrite(LED_BUILTIN, LOW);
break;
case 50:
digitalWrite(11, LOW);
digitalWrite(12, LOW);
digitalWrite(LED_BUILTIN, HIGH);
break;
case 25:
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(LED_BUILTIN, HIGH);
break;
}
// SW1 - Staff Volume Up
if (!digitalRead(2))
{
if (maxVolume < 100)
{
maxVolume += STAFF_STEPS;
delay(300);
}
}
// SW2 - Staff Volume Down
if (!digitalRead(4))
{
if (maxVolume > 0)
{
maxVolume -= STAFF_STEPS;
if (userVolume > maxVolume)
{
userVolume = maxVolume;
oldUserVolume = userVolume;
}
delay(300);
}
}
// Remote D - Mute
if (digitalRead(A0))
{
// Check if we are in a muted state
if (oldUserVolume > userVolume)
{
if (oldUserVolume > maxVolume)
{
userVolume = maxVolume;
}
else
{
userVolume = oldUserVolume;
}
}
else
{
oldUserVolume = userVolume;
userVolume = 0;
}
delay(300);
}
// Remote A - Significantly Lower Volume
if (digitalRead(A3))
{
if (oldUserVolume > userVolume)
{
if (oldUserVolume > maxVolume)
{
userVolume = maxVolume;
}
else
{
userVolume = oldUserVolume;
}
}
else
{
oldUserVolume = userVolume;
userVolume = 15;
}
delay(300);
}
// Remote B - Volume Up
if (digitalRead(A2) && !(oldUserVolume > userVolume))
{
volumeUp();
if ((userVolume + USER_STEPS) > maxVolume)
{
userVolume = maxVolume;
oldUserVolume = userVolume;
}
else
{
userVolume += USER_STEPS;
oldUserVolume = userVolume;
}
delay(300);
}
// Remote C - Volume Down
if (digitalRead(A1) && !(oldUserVolume > userVolume))
{
volumeDown();
if ((userVolume - USER_STEPS) < 0)
{
userVolume = 0;
oldUserVolume = userVolume;
}
else
{
userVolume -= USER_STEPS;
oldUserVolume = userVolume;
}
delay(300);
}
}
void volumeUp()
{
digitalWrite(9, HIGH);
delay(1);
digitalWrite(10, LOW);
delay(1);
digitalWrite(9, LOW);
delay(1);
digitalWrite(9, HIGH);
delay(1);
digitalWrite(10, HIGH);
delay(1);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
}
void volumeDown()
{
digitalWrite(9, LOW);
delay(1);
digitalWrite(10, LOW);
delay(1);
digitalWrite(9, HIGH);
delay(1);
digitalWrite(9, LOW);
delay(1);
digitalWrite(10, HIGH);
}