KATSE 1 LED RGB

LED RGB
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
int DISPLAY_TIME = 100; // värvimuutuse kiirus
void setup()
{
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop()
{
mainColors();
showSpectrum();
}
void mainColors()
{
// Kõik LEDid on välja lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(50);
//Põleb punane
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
delay(50);
// Põleb roheline
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(50);
// Sinine on sisse lülitatud
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(50);
// Kollane.
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, LOW);
delay(50);
// Lilla
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(50);
//Roosa
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, HIGH);
delay(50);
//Valge ehk kõik on sisse lülitatud
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
delay(50);
}
// Vikerkaar.
void showSpectrum()
{
int x;
for (x = 0; x < 768; x++)
{
showRGB(x); //
delay(10); // paus 0,001 sek
}
}
// ShowRGB() põhivärvid:
// 0 = punane
// 255 = roheline
// 511 = sinine
// 767 = jälle punane
void showRGB(int color)
{
int redIntensity;
int greenIntensity;
int blueIntensity;
if (color <= 255)
{
redIntensity = 255 - color; // lülitakse välja punane
greenIntensity = color; // lülitakse sisse roheline
blueIntensity = 0; // sinine on välja lülitatud
}
else if (color <= 511)
{
redIntensity = 0; // punane on välja lülitatud
greenIntensity = 255 - (color - 256);
blueIntensity = (color - 256);
}
else if (color >= 512)
{
redIntensity = (color - 512);
greenIntensity = 0;
blueIntensity = 255 - (color - 512);
}
analogWrite(RED_PIN, redIntensity); // punase LED´i sujuv ümberlülitamine
analogWrite(BLUE_PIN, blueIntensity);
analogWrite(GREEN_PIN, greenIntensity);
}
Пояснение кода / описание
Программа управляет RGB-светодиодом, который подключён к трем пинам:
- Красный — пин 11
- Зелёный — пин 9
- Синий — пин 10
Основные функции:
- Инициализация (
setup
):
Все три пина настроены как выходы. - Основной цикл (
loop
):
В бесконечном цикле вызываются две функции:mainColors()
— выводит основные цвета и их комбинации (вкл./выкл. без градаций яркости).showSpectrum()
— плавно перебирает весь спектр RGB, создавая эффект радуги.
Детали функций:
1. mainColors()
:
Последовательно включает светодиод в такие цвета:
- Выкл.
- Красный
- Зелёный
- Синий
- Жёлтый (красный + зелёный)
- Голубой (зелёный + синий)
- Розовый (красный + синий)
- Белый (все цвета включены)
Каждый цвет горит 50 мс, переключение между ними резкое (без градиента).
2. showSpectrum()
:
Создает плавный переход между цветами:
- Использует цикл от 0 до 767, в котором каждый шаг — это новое сочетание яркости для красного, зелёного и синего каналов.
- Каждый шаг задерживается на 10 мс, создавая эффект плавной смены цветов (радуги).
Пояснение спектра в showRGB(int color)
:
- 0–255:
Переход от красного к зелёному (постепенно убавляется красный и прибавляется зелёный). - 256–511:
Переход от зелёного к синему (убавляется зелёный и прибавляется синий). - 512–767:
Переход от синего к красному (убавляется синий и прибавляется красный).
Цвета управляются с помощью ШИМ (PWM) через analogWrite
, что позволяет регулировать яркость каждого цвета.
Итог:
mainColors()
демонстрирует базовые цвета и их комбинации.showSpectrum()
создаёт эффект радуги с плавными переходами.
LED

// C++ code
//
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(500); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
delay(500); // Wait for 1000 millisecond(s)
}
Описание работы кода
Основные шаги:
- Инициализация (
setup
):- Пин 13 настраивается как выходной с помощью
pinMode(13, OUTPUT);
. - Обычно на Arduino этот пин подключён к встроенному светодиоду.
- Пин 13 настраивается как выходной с помощью
- Основной цикл (
loop
):- Включается светодиод (
digitalWrite(13, HIGH);
). - Пауза 500 мс (
delay(500);
). - Выключается светодиод (
digitalWrite(13, LOW);
). - Снова пауза 500 мс.
- Включается светодиод (
Результат:
Светодиод мигает с частотой 1 Гц (раз в секунду), включаясь и выключаясь каждые 0,5 секунды.
VALGUSFOOR

int redcar = 13;
int yellowcar = 12;
int greencar = 11;
int redpeople = 10;
int greenpeople = 9;
bool dayMode = true;
void setup() {
pinMode(redcar, OUTPUT);
pinMode(yellowcar, OUTPUT);
pinMode(greencar, OUTPUT);
pinMode(redpeople, OUTPUT);
pinMode(greenpeople, OUTPUT);
}
void loop() {
if (dayMode) {
// День
// Стоп для машин, пешеходы идут
digitalWrite(redcar, HIGH);
digitalWrite(redpeople, LOW);
digitalWrite(greenpeople, HIGH);
delay(5000);
// жёлтый мигает, пешеходам стоп
digitalWrite(greenpeople, LOW);
digitalWrite(redpeople, HIGH);
for (int i = 0; i < 3; i++) {
digitalWrite(yellowcar, HIGH);
delay(300);
digitalWrite(yellowcar, LOW);
delay(300);
}
// Едут машины
digitalWrite(redcar, LOW);
digitalWrite(greencar, HIGH);
delay(5000);
// Конец: зелёный мигает
for (int i = 0; i < 3; i++) {
digitalWrite(greencar, LOW);
delay(300);
digitalWrite(greencar, HIGH);
delay(300);
}
digitalWrite(greencar, LOW);
// Переключаем на ночной режим
dayMode = false;
} else {
// Ночной режим
// Все пешеходные огни выключены
digitalWrite(redpeople, LOW);
digitalWrite(greenpeople, LOW);
// Красный и зелёный для машин выключены
digitalWrite(redcar, LOW);
digitalWrite(greencar, LOW);
// Мигающий жёлтый для машин
for (int i = 0; i < 10; i++) { // 10 миганий (примерно 10 секунд)
digitalWrite(yellowcar, HIGH);
delay(500);
digitalWrite(yellowcar, LOW);
delay(500);
}
// Вернуться в дневной режим
dayMode = true;
}
}

Описание проделанной работы: Светофор
В данном проекте реализована система управления светофором с дневным и ночным режимами работы. Используется пять светодиодов:
- Три светодиода для автомобилей: красный, жёлтый и зелёный.
- Два светодиода для пешеходов: красный и зелёный.
Управление осуществляется с помощью микроконтроллера Arduino. Логика работы разделена на два режима:
Алгоритм работы
Дневной режим:
- Стоп для автомобилей, пешеходы идут:
- Красный свет для машин включён.
- Зелёный для пешеходов.
- Время перехода — 5 секунд.
- Пешеходам стоп, жёлтый мигает для машин:
- Красный свет для пешеходов.
- Жёлтый для машин мигает три раза (по 300 мс).
- Едут машины:
- Зелёный свет для машин включён на 5 секунд.
- Конец зелёного сигнала для машин:
- Зелёный свет для машин мигает три раза (по 300 мс).
После завершения цикла режим переключается на ночной.
Ночной режим:
- Отключены все пешеходные огни.
- Красный и зелёный сигналы для машин отключены.
- Мигающий жёлтый для машин:
- Жёлтый свет мигает десять раз (по 500 мс), имитируя ночной режим предупреждения.
После завершения ночного режима возвращается дневной.