int ledPin = 13;
int LDR = 5; // A5
int LDR2 = 0; // A0
int val = 0;
int val2 = 0;
const byte buzzPin = 10;
const byte buzzPin2 = 12;
void playTones(int freq1, int freq2, int duration_ms) {
long period1 = freq1 > 0 ? 1000000L / freq1 : 0;
long period2 = freq2 > 0 ? 1000000L / freq2 : 0;
long half1 = period1 / 2;
long half2 = period2 / 2;
long startTime = millis();
long t1 = 0, t2 = 0;
bool state1 = false, state2 = false;
while (millis() - startTime < duration_ms) {
long now = micros();
if (freq1 > 0 && now - t1 >= half1) {
state1 = !state1;
digitalWrite(buzzPin, state1);
t1 = now;
}
if (freq2 > 0 && now - t2 >= half2) {
state2 = !state2;
digitalWrite(buzzPin2, state2);
t2 = now;
}
}
digitalWrite(buzzPin, LOW);
digitalWrite(buzzPin2, LOW);
}
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buzzPin, OUTPUT);
pinMode(buzzPin2, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(LDR);
val2 = analogRead(LDR2);
Serial.print("LDR1: ");
Serial.print(val);
Serial.print(" | LDR2: ");
Serial.println(val2);
int freq1 = map(val, 0, 1023, 200, 2000);
int freq2 = map(val2, 0, 1023, 200, 2000);
// оба буззера играют одновременно 100мс
playTones(freq1, freq2, 100);
if (val < 512) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}