int LE = 2;
int CLOCK = 3;
int DATA = 4;
void setup()
{
pinMode(LE, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
}
void loop()
{
int value; // Wartość tłumienia od 0 do 32.
int ms = 1000; // czas zmiany kolejnego tłumika
for (value = 0; value <= 32; value++)
{
Serial.print(value);
Serial.println(" dB");
setAttenuator(value);
delay(ms); // czekaj 1 sekundę
}
for (value = 32; value >= 0; value--)
{
Serial.print(value);
Serial.println(" dB");
setAttenuator(value);
delay(ms);
}
}
void setAttenuator(int value)
{
int level;
if (value < 0 || value > 32)
return;
digitalWrite(LE, LOW);
digitalWrite(CLOCK,LOW);
for (int bit = 5; bit >= 0; bit--)
{
level = ((value << 1) >> bit) & 0x01;
digitalWrite(DATA, level);
digitalWrite(CLOCK, HIGH);
digitalWrite(CLOCK, LOW);
}
digitalWrite(LE, HIGH);
digitalWrite(LE, LOW);
}