Katse Nuppude ja Slideswitch’i kasutamise võimalus

—–Kood—–
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
}
}
Описание программы
Программа управляет светодиодом (LED), подключённым к пину 13. Она использует два кнопочных выключателя, подключённых к пинам 2 и 3. Светодиод загорается только тогда, когда нажата только одна из кнопок — не обе сразу.
Логика работы
- Настройка пинов:
button1Pin
иbutton2Pin
настроены как входы.ledPin
настроен как выход.
- Основной цикл (
loop
):- Считываются состояния обеих кнопок.
- Если нажата только одна кнопка (а вторая не нажата), светодиод включается.
- В любом другом случае (обе кнопки отпущены или нажаты одновременно) — светодиод выключается.
Näidis- Slideswitch’i kasutamine

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); // выключаем светодиод
}
}
Описание программы
Данная программа управляет светодиодом (подключённым к пину 10) с помощью одной кнопки (на пине 4).
🔍 Логика работы
- Инициализация:
- Кнопка подключена к пину 4 и настроена как вход.
- Светодиод подключён к пину 10 и настроен как выход.
- Цикл выполнения (
loop
):- Считывается состояние кнопки (
HIGH
— нажата,LOW
— отпущена). - Если кнопка нажата — светодиод загорается.
- Если кнопка отпущена — светодиод выключается.
- Считывается состояние кнопки (
Katse Photoresistor

Подключение:
Сначала подключите фоторезистор к одному краю макетной платы, как показано на следующей схеме, так, чтобы одна ножка была подключена к питанию, а другая — к аналоговому сигналу через резистор, идущий к земле. Теперь добавьте другой конец макетной платы так, чтобы свет светодиода не влиял на датчик.
Чтобы просмотреть монитор, откройте его с помощью значка увеличительного стекла в правой части верхней зеленой панели среды разработки.
—-Kood—–
const int sensorPin = 0; // пин, к которому подключён фоторезистор
const int ledPin = 9; // пин, к которому подключён светодиод
int lightLevel, high = 0, low = 1023;
void setup()
{
pinMode(ledPin, OUTPUT); // настраиваем пин светодиода как выход
Serial.begin(9600); // включаем монитор порта для отладки
}
void loop()
{
// Считываем аналоговое значение освещённости (0–1023)
lightLevel = analogRead(sensorPin);
// Выполняем ручную настройку диапазона освещённости
manualTune();
// Подаём соответствующее PWM-значение на светодиод (0–255)
analogWrite(ledPin, lightLevel);
// Выводим результат в монитор порта
Serial.print(lightLevel);
Serial.println("");
delay(1000); // ждём 1 секунду
}
void manualTune()
{
// Преобразуем диапазон 300–800 в 0–255
lightLevel = map(lightLevel, 300, 800, 0, 255);
// Ограничиваем значение в пределах 0–255
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);
}
Описание программы
Программа регулирует яркость светодиода на пине 9 в зависимости от уровня освещённости, измеренного фоторезистором (аналоговый вход 0). Чем ярче свет, тем ярче или тусклее может загораться светодиод, в зависимости от настройки.
🔍 Логика работы
- Измерение освещённости:
- Считывается аналоговое значение от фоторезистора (
0–1023
). - Это значение преобразуется в диапазон
0–255
для управления ШИМ-сигналом.
- Считывается аналоговое значение от фоторезистора (
- Функции настройки:
manualTune()
задаёт фиксированный диапазон освещённости: от 300 (темно) до 800 (ярко).autoTune()
может использоваться для автоматической подстройки диапазона в зависимости от изменения условий освещённости (в этом примере закомментирована).
- Управление яркостью:
- Светодиод включается с яркостью, пропорциональной уровню освещённости.
- Чтобы эффект был противоположным (работал как ночник), достаточно заменить
analogWrite(ledPin, lightLevel);
наanalogWrite(ledPin, 255 - lightLevel);
.
Ülesanne 3.1 Öölamp
🔔Projektiülesanne: Öölamp
✍️Eesmärk:
Luua öölamp, mis reageerib ümbritsevale valgusele ja mida saab juhtida nupu või potentsiomeetriga. Projekti eesmärk on rakendada teadmisi Arduino platvormist, elektroonikakomponentidest ja programmeerimisest, et valmistada praktiline ning visuaalselt atraktiivne valguslahendus.
Nõutud komponendid:
- Valgustakisti (LDR – Light Dependent Resistor)
- Nupp või potentsiomeeter (valgustuse sisse/välja lülitamiseks või värvi muutmiseks)
- LED või RGB LED
Funktsionaalsus:
- Lambi sisselülitamine: Nupu vajutusega või potentsiomeetri keeramisega saab öölambi sisse ja välja lülitada.
- Valguse juhtimine ümbritseva valguse järgi:
- Kui kasutatakse üht LED-i, reguleeritakse selle heledust vastavalt valgusele funktsiooniga
analogWrite(PIN, 0..255)
. - Kui kasutatakse mitut LED-i, süttib rohkem LED-e, kui ümbrus on pimedam (kasutades
digitalWrite(PIN, HIGH/LOW)
).
- Kui kasutatakse üht LED-i, reguleeritakse selle heledust vastavalt valgusele funktsiooniga
- RGB LED-i kasutamisel võimaldab potentsiomeeter valida erinevaid värve (muutes punase, rohelise ja sinise väärtusi).
👋Tööetapid:
- Prototüüp emulaatoris (nt Tinkercad Circuits):
- Programmeeri Arduino kood vastavalt valitud lahendusele.
- Testi kõiki funktsioone: sisselülitamine, valgusanduri töö, LED-ide reaktsioon.
- Skeemi koostamine reaalseks ehituseks:
- Joonista või loo ühendusskeem Arduino, komponentide ja toiteallikaga.
- Ehitus:
- Paigalda kõik komponendid korrektselt isetehtud karpi või alusele.
- Kasuta patareisid või laetavat akut, et tagada mobiilsus ja esteetilisus.
- Dokumentatsioon:
- Filmi video töötavast lampist.
- Lisa see koos skeemide ja selgitustega lõpparuandesse.
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); // пауза, чтобы не мигало слишком быстро
}





Описание программы: RGB-Ночник с управлением цветом и яркостью
🎯 Цель проекта
Создать многоцветный ночник, который:
- Позволяет выбрать цвет свечения с помощью потенциометра.
- Автоматически регулирует яркость в зависимости от освещённости в комнате, измеряемой с помощью фоторезистора.
- Работает на основе RGB-светодиода, управляемого через Arduino.
🧩 Используемые компоненты
- RGB-светодиод (3-контактный или 4-контактный) — светится разными цветами при подаче сигнала на соответствующие ножки (R, G, B).
- Фоторезистор (LDR) — определяет уровень окружающего света.
- Потенциометр — выбирает цвет свечения.
- Arduino UNO — управляет логикой работы и регулирует яркость через ШИМ.
- Резисторы — для ограничения тока к светодиоду и фоторезистору.
⚙️ Принцип работы
- Считывание значений:
- Потенциометр подключён к аналоговому входу
A0
и используется для выбора цвета. Его значение от 0 до 1023 переводится в число от 0 до 8, которое определяет конкретный цвет. - Фоторезистор подключён к
A1
и измеряет уровень освещения. Его значение (от 300 до 800) с помощьюmap()
иconstrain()
преобразуется в диапазон яркости от 0 до 255.
- Потенциометр подключён к аналоговому входу
- Выбор цвета:
- При
Value == 0
— все цвета выключены (режим ожидания). - При
Value == 1
…6
— включаются разные функции (red
,green
,blue
,yellow
,pink
,white
), каждая из которых подаёт сигнал на определённые пины RGB-светодиода с яркостью, зависящей от окружающего света. - Если значение вне диапазона — включается белый цвет (все три цвета одновременно).
- При
- Регулировка яркости:
- Чем темнее в комнате, тем ярче горит выбранный цвет.
- При ярком свете — светодиод горит тускло или вообще не горит.