const int pirPin = 2; // PIR sensorining chiqish pini
const int buttonPin = 3; // Tugma pini
const int potPin = A0; // Potensiometr pini
const int ledR = 9; // RGB LEDning qizil pini
const int ledG = 10; // RGB LEDning yashil pini
const int ledB = 11; // RGB LEDning ko'k pini
bool pirEnabled = false; // PIR sensori faolligi holati
int buttonState = 0; // Tugma holati
int lastButtonState = 0; // Oxirgi tugma holati
void setup() {
pinMode(pirPin, INPUT);
pinMode(buttonPin, INPUT_PULLUP); // Tugmani kirish va ichki tortish qarshiligini yoqish
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
// Tugma bosilganligini tekshirish
if (buttonState == LOW && lastButtonState == HIGH) { // Tugma past holatda (bosilgan)
pirEnabled = !pirEnabled; // PIR sensor holatini o'zgartirish
delay(50); // Tebranishni oldini olish uchun kichik kechikish
}
lastButtonState = buttonState;
if (pirEnabled) {
int potValue = analogRead(potPin); // Potensiometr qiymatini o'qish
int toneValue = map(potValue, 0, 1023, 0, 255);
if (digitalRead(pirPin) == HIGH) {
// Harakat aniqlanganda LED chiroqni yoqish
analogWrite(ledR, toneValue);
analogWrite(ledG, 255 - toneValue);
analogWrite(ledB, toneValue / 2);
} else {
// Harakat aniqlanmaganda LED chiroqni o'chirish
analogWrite(ledR, 0);
analogWrite(ledG, 0);
analogWrite(ledB, 0);
}
} else {
// PIR sensor o'chirilganda LED chiroqni o'chirish
analogWrite(ledR, 0);
analogWrite(ledG, 0);
analogWrite(ledB, 0);
}
delay(100); // Tez-tez ishlov berish uchun kechikish
}