1️⃣ Katse Nuppude ja Slideswitch’i kasutamise võimalus:
Цель:
Изучить управление светодиодом с помощью двух кнопок, реализуя логическую операцию «исключающее ИЛИ» (XOR).
Компоненты:
- Плата Arduino Uno
- 2 кнопки
- Светодиод
- Резисторы (по 220 Ом)
- Макетная плата (breadboard)
- Соединительные провода
Схема подключения:
- Кнопки подключаются к цифровым пинам 2 и 3.
- Светодиод подключается к пину 13 через резистор.
- Все компоненты заземлены через GND.

Код программы:
const int button1Pin = 2; //viik kunu on ühebdatud nupp1
const int button2Pin = 3; //viik kuhu on ühendatud nupp2
const int ledPin = 13;
void setup()
{
pinMode(button1Pin, INPUT); //algväärtuse nupu viigu sisendiks
pinMode(button2Pin, INPUT); //algväärtuse nupu viigu sisendiks
pinMode(ledPin, OUTPUT); //algväärtuse LED viigu väljundiks
}
void loop()
{
int button1State, button2State; //nupu oleku muutujad
button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse(HIGH või LOW)
button2State = digitalRead(button2Pin);
if (((button1State == LOW) || (button2State == LOW)) // kui nupu on alla vajutatud
&& !
((button1State == LOW) && (button2State == LOW))) // kui nupude on alla vajutatud
{
digitalWrite(ledPin, HIGH); // lülitame LED sisse
}
else
{
digitalWrite(ledPin, LOW); // lülitame LED välja
}
}
Принцип работы:
- Светодиод загорается, если нажата только одна из кнопок.
- Если нажаты обе кнопки или ни одна, светодиод не светится.
2️⃣ Näidis- Slideswitch’i kasutamine:
Цель:
Понять, как с помощью слайд-переключателя можно управлять включением светодиода.
Компоненты:
- Плата Arduino Uno
- Слайд-переключатель
- Светодиод
- Резистор (220 Ом)
- Макетная плата (breadboard)
- Соединительные провода
Схема подключения:
- Переключатель подключается к цифровому пину 4.
- Светодиод подключается к пину 10 через резистор.
- Все компоненты заземлены через GND.


Код программы:
int swPin=4;
int ledPin=10;
int switchstate=0;
void setup()
{
pinMode(swPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
switchstate=digitalRead(swPin);
if(switchstate==HIGH)
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}
Принцип работы:
- Светодиод включается, когда переключатель находится в положении HIGH.
- Светодиод выключается, когда переключатель в положении LOW.
3️⃣ Katse Photoresistor:
Цель:
Изучить, как фоторезистор может управлять яркостью светодиода в зависимости от освещенности.
Компоненты:
- Плата Arduino Uno
- Фоторезистор
- Светодиод
- Резистор (10 кОм)
- Макетная плата (breadboard)
- Соединительные провода
Схема подключения:
- Фоторезистор подключается к аналоговому пину A0.
- Светодиод подключается к пину 9 через резистор.
- Все компоненты заземлены через GND.


Код программы:
const int sensorPin = 0;
const int ledPin = 9;
int lightLevel, high = 0, low = 1023;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // //Serial monitori seadistamine
}
void loop()
{
// AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).
// AnalogWrite(), kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse
// Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.
// Constrain() saed muutujale kindlad piirväärtused.
// Näiteks: kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 0:.
// lightLevel = constrain(lightLevel, 0, 255);
manualTune(); //
//autoTune(); //
analogWrite(ledPin, lightLevel);
// Выражение выше, будет изменять яркость светодиода вместе с уровнем освещенности. Чтобы сделать наоборот, заменить в analogWrite(ledPin, lightLevel) "lightLevel" на "255-lightLevel". Теперь у нас получился ночник!
Serial.print(lightLevel); // prindime tulemused Serial Monitori (вывод данных с фоторезистора (0-1023))
Serial.println("");
delay(1000);
}
void manualTune()
{
lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)).
lightLevel = constrain(lightLevel, 0, 255);
}
void autoTune()
{
if (lightLevel < low)
{
low = lightLevel;
}
if (lightLevel > high)
{
high = lightLevel;
}
lightLevel = map(lightLevel, low+10, high-30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
Принцип работы:
- Фоторезистор считывает уровень освещенности (0–1023).
- Значение преобразуется в диапазон яркости светодиода (0–255).
- При уменьшении освещенности яркость светодиода увеличивается, и наоборот.
⭐️ Projektiülesanne: Öölamp (Ночник)
Цель:
Создать ночник с возможностью изменения цвета и яркости в зависимости от положения потенциометра и уровня освещенности.
Компоненты:
- Плата Arduino Uno
- RGB-светодиод (или 3 отдельных светодиода: красный, зелёный, синий)
- Потенциометр
- Фоторезистор
- Резисторы (по 220 Ом для светодиодов, 10 кОм для фоторезистора)
- Макетная плата (breadboard)
- Соединительные провода
Схема подключения:
- Потенциометр подключается к аналоговому пину A0.
- Фоторезистор подключается к аналоговому пину A1.
- Красный светодиод — к пину 9, зелёный — к пину 10, синий — к пину 11 через резисторы.
- Все компоненты заземлены через GND.





Код программы:
const int ledPin = 9; // Первый светодиод (красный)
const int led2Pin = 10; // Второй светодиод (зелёный)
const int led3Pin = 11; // Третий светодиод (синий)
int sensorPote = A0; // Потенциометр подключен к A0
int sensorPoteValue; // Значение с потенциометра
int sensorPhoto = A1; // Фоторезистор подключен к A1
int sensorPhotoValue; // Значение с фоторезистора
int Value; // Значение от 0 до 8, которое определяет цвет
void setup()
{
pinMode(ledPin, OUTPUT); // Устанавливаем пины для светиков как выходы
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
Serial.begin(9600); // Включаем серийный порт для отладки
}
void pinidOFF()
{
// Выключаем все светодиоды
digitalWrite(ledPin, LOW);
digitalWrite(led2Pin, LOW);
digitalWrite(led3Pin, LOW);
}
// Функция зажигает КРАСНЫЙ цвет
void red(int sensorPhotoValue)
{
analogWrite(ledPin, sensorPhotoValue); // яркость от фоторезистора
analogWrite(led2Pin, 0);
analogWrite(led3Pin, 0);
}
// Функция зажигает ЗЕЛЁНЫЙ цвет
void green(int sensorPhotoValue)
{
analogWrite(ledPin, 0);
analogWrite(led2Pin, 0);
analogWrite(led3Pin, sensorPhotoValue);
}
// Функция зажигает БЕЛЫЙ цвет (все цвета включены)
void white(int sensorPhotoValue)
{
analogWrite(ledPin, sensorPhotoValue);
analogWrite(led2Pin, sensorPhotoValue);
analogWrite(led3Pin, sensorPhotoValue);
}
// Функция зажигает ГОЛУБОЙ цвет
void blue(int sensorPhotoValue)
{
analogWrite(ledPin, 0);
analogWrite(led2Pin, sensorPhotoValue);
analogWrite(led3Pin, sensorPhotoValue);
}
// Функция зажигает ЖЁЛТЫЙ цвет
void yellow(int sensorPhotoValue)
{
analogWrite(ledPin, sensorPhotoValue);
analogWrite(led2Pin, sensorPhotoValue);
analogWrite(led3Pin, 0);
}
// Функция зажигает РОЗОВЫЙ цвет
void pink(int sensorPhotoValue)
{
analogWrite(ledPin, sensorPhotoValue);
analogWrite(led2Pin, 0);
analogWrite(led3Pin, sensorPhotoValue);
}
void loop()
{
sensorPoteValue = analogRead(sensorPote); // считываем значение потенциометра
Value = map(sensorPoteValue, 0, 1023, 0, 8); // переводим значение в диапазон от 0 до 8
sensorPhotoValue = analogRead(sensorPhoto); // считываем значение фоторезистора
sensorPhotoValue = map(sensorPhotoValue, 300, 800, 0, 255); // переводим яркость в 0–255
sensorPhotoValue = constrain(sensorPhotoValue, 0, 255); // не даём выйти за пределы 0–255
Serial.print(sensorPhotoValue); // выводим в порт для проверки
Serial.print("->");
Serial.println(sensorPhotoValue);
// В зависимости от значения Value выбираем цвет
if (Value == 0)
{
pinidOFF(); // всё выключено
}
else if (Value == 1)
{
red(sensorPhotoValue);
}
else if (Value == 2)
{
green(sensorPhotoValue);
}
else if (Value == 3)
{
blue(sensorPhotoValue);
}
else if (Value == 4)
{
yellow(sensorPhotoValue);
}
else if (Value == 5)
{
pink(sensorPhotoValue);
}
else
{
white(sensorPhotoValue); // если что-то другое — пусть будет белый
}
delay(500); // пауза, чтобы не мигало слишком быстро
}
Принцип работы:
- Потенциометр выбирает цвет свечения ночника.
- Фоторезистор регулирует яркость в зависимости от освещенности.
- При низкой освещенности ночник светится ярче, при высокой — тусклее.
💿 Демонстрация на 🔗 ВИДЕО (click)
💚 Вывод:
В ходе выполнения задания были изучены различные способы управления светодиодами с помощью кнопок, переключателей и фоторезистора. Также был реализован проект ночника с регулировкой цвета и яркости. Это позволило понять основы работы с цифровыми и аналоговыми входами/выходами на Arduino, а также научиться использовать функции digitalRead(), digitalWrite(), analogRead(), analogWrite(), map() и constrain() для обработки входных данных и управления выходными устройствами.