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