2. Teema: Potentsiomeetri kasutamine
2. Katse -Potentsiomeetri kasutamine-

Kood
int sensorPin = 0;
int ledPin = 13;
int sensorValue = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); // loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023) ja tagastab (0 - 5V):
Serial.println(voltage); // Saadud tulemused kirjutame Serial Monitori.
}
Ülesanne 2 Гирлянда-Valguskett
Töö kirjeldus
Когда ты крутишь ручку (потенциометр), светодиоды начинают работать по-разному.
Могут мигать, загораться все сразу, включаться по очереди — всего 5 разных режимов.
За это отвечает плата Arduino, она читает значение с ручки и включает нужный эффект.
Kasutatud komponenid
- Arduino UNO plaat (1tk)
- Arendusplaat (1tk)
- 250 kΩ Potentiometer (1tk)
- 220 Ω Takisti (6tk)
- Juhtmed (17tk)
- LED (6tk: 2 punane, 2 sinine, 1 roheline, 1 kollane)
Töö protsess:
Подключили светодиоды
Подключили 6 светодиодов к пинам на Arduino — каждый к своему выходу.
Подключили потенциометр
Соединили ручку (потенциометр) с аналоговым входом A0. Это нужно, чтобы считывать, как сильно крутим.
Написали программу
В программе Arduino читается значение с ручки и выбирается один из 5 режимов:
- мигание по очереди (случайно)
- быстрое мигание (Режим полицейский)
- все загораются и гаснут
- все горят постоянно
- сначала горят 3, потом другие 3
Загрузили скетч в Arduino
Подключили Arduino к компьютеру, загрузили код через программу Arduino IDE.
Тестировали работу
Крутили ручку и смотрели, как меняется поведение светодиодов.
Kasutamisvõimalused tavaelus
Световые эффекты для декора
Можно использовать такие мигающие светодиоды для украшения комнаты, вечеринки или витрины.
Игрушки и поделки
Можно встроить в самодельные игрушки или макеты, где важно, чтобы свет загорался по-разному.
Прототип умного освещения
Это простой пример, как можно регулировать освещение вручную — похожий принцип можно применить и в “умном доме”.
Skeem:

Programm:
int RED_LED_PIN = 13;
int GREEN_LED_PIN = 12;
int ORANGE_LED_PIN = 11;
int BLUE_LED_PIN = 10;
int YELLOW_LED_PIN = 9;
int WHITE_LED_PIN = 8;
int sensorPin = A0;
int sensorValue = 0;
int ledPins[] = {RED_LED_PIN, GREEN_LED_PIN, ORANGE_LED_PIN, BLUE_LED_PIN, YELLOW_LED_PIN, WHITE_LED_PIN};
int ledCount = 6;
int mode = 1; // default blinkmode
void setup()
{
pinMode(RED_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(ORANGE_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(WHITE_LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
ledCount = map(sensorValue, 0, 1023, 0, 6);
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
Serial.print(" - Mode: ");
Serial.println(mode);
delay(50);
// Определение режима работы на основе значения потенциометра:
if (sensorValue < 250)
{
mode = 1; // blinkmode
}
else if (sensorValue < 450)
{
mode = 2; // uleminek
}
else if (sensorValue <700)
{
mode = 3; // polebtuhmub
}
else if (sensorValue <950)
{
mode = 5; //pool
}
else
{
mode = 4; //poleb
}
// Вызов соответствующего режима
if (mode == 1)
{
blinkmode();
}
else if (mode == 2)
{
uleminek();
}
else if (mode == 3)
{
polebtuhmub();
}
else if (mode == 4)
{
poleb();
}
else
{
pool();
}
}
// Режим 1: Мигание - каждый LED включается и выключается случайным образом
void blinkmode()
{
if (random(0, 2)) {
digitalWrite(RED_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(RED_LED_PIN, LOW);
delay(random(50, 500));
}
if (random(0, 2)) {
digitalWrite(GREEN_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(GREEN_LED_PIN, LOW);
delay(random(50, 500));
}
if (random(0, 2)) {
digitalWrite(ORANGE_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(ORANGE_LED_PIN, LOW);
delay(random(50, 500));
}
if (random(0, 2)) {
digitalWrite(BLUE_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(BLUE_LED_PIN, LOW);
delay(random(50, 500));
}
if (random(0, 2)) {
digitalWrite(YELLOW_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(YELLOW_LED_PIN, LOW);
delay(random(50, 500));
}
if (random(0, 2)) {
digitalWrite(WHITE_LED_PIN, HIGH);
delay(random(50, 500));
digitalWrite(WHITE_LED_PIN, LOW);
delay(random(50, 500));
}
}
// Режим 2: полицейски режим
void uleminek() {
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(50);
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], LOW);
}
}
// Режим 3: Горят - Гаснут - все светодиоды включаются и выключаются через 1 секунду
void polebtuhmub()
{
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, HIGH);
digitalWrite(ORANGE_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(WHITE_LED_PIN, HIGH);
delay(1000);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(ORANGE_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(WHITE_LED_PIN, LOW);
delay(1000);
}
// Режим 4: Постоянно горят - все светодиоды включены
void poleb()
{
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, HIGH);
digitalWrite(ORANGE_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(WHITE_LED_PIN, HIGH);
}
// Режим 5: Половина - сначала горят 3 первые, потом 3 последние
void pool()
{
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, HIGH);
digitalWrite(ORANGE_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(WHITE_LED_PIN, LOW);
delay(1000);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(ORANGE_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(WHITE_LED_PIN, HIGH);
delay(1000);
}