programm, mis juhib LED-i heledust valgussõltuva takisti (LDR) ja nupu abil.
const int sensorPin = A0; // LDR-i (analoogsisendi) Pin
const int button1Pin = 2; // nuppu Pin
const int ledPin = 9; // LED Pin
int lightLevel, high = 0, low = 1023;
bool lightOn = true; // Muutuja valguse oleku jälgimiseks
//Setup Инициализирует вывод кнопки как вход, а вывод светодиода как выход
void setup()
{
pinMode(button1Pin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
//Loeb nupu olekut kasutades DigitalRead(button1Pin)
void loop()
{
int button1State = digitalRead(button1Pin);
// Kontroll, kas nupp on vajutatud (LOW) ja lülitab valguse olek sisse
if (button1State == LOW)
{
lightOn = !lightOn; //Valgustuse oleku ümberlülitamine
delay(200); // Kiire ümberlülitamise vältimiseks põrgatama
}
if (lightOn)
{
light(); // Kui valguse olek on ON, kutsutatakse valgusfunktsioonile
}
else
{
digitalWrite(ledPin, LOW); // Kui valguse olek on VÄLJAS, lülitatakse LED välja
}
}
//Loeb analoogväärtust LDR-ist, kasutades analoogRead(sensorPin)
void light()
{
//
Reguleerib valguse taset käsitsiTune funktsiooni abil.
lightLevel = analogRead(sensorPin);
manualTune();
//Saadab LED-ile valgustaseme väärtuse, kasutades selle heleduse reguleerimiseks //analoogWrite'i.
analogWrite(ledPin, lightLevel);
Serial.print(lightLevel);
Serial.println("");
delay(200);
}
//manualTune Function Отображает значение lightLevel в диапазоне от 300-800 до //255.
//Гарантирует, что lightLevel остается в диапазоне от 0 до 255 с помощью
//ограничения(cinstrain)
void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
N.B kuidas pidi töötama
2. Nupp töötab nagu tulede lüliti; kui seda vajutame, siis tuli kustub; uuesti vajutades süttib tuli; kui me nuppu ei vabasta, siis tuli vilgub. Fototakisti reageerib valgusele vastavalt.
Tunnis tehtud, nupp ei reageeri kahjuks.
Skema