Su ostukorv on hetkel tühi!
Praktika 3 Nupp, Switch ja Photoresistor
3.1. Katse Nuppude ja Slideswitch’i kasutamise võimalus

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
}
}
3.2. Katse Photoresistor

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);
}
Ülesanne 3.1 Öölamp

// Первый RGB светодиод
const int redPin1 = 9;
const int greenPin1 = 10;
const int bluePin1 = 11;
// Второй RGB светодиод (цвета в обратную сторону)
const int redPin2 = 6;
const int greenPin2 = 5;
const int bluePin2 = 3;
// Аналоговые входы
const int ldrPin = A1;
const int potPin = A0;
// Порог освещённости
const int lightThreshold = 600;
void setup() {
// Настройка пинов RGB
pinMode(redPin1, OUTPUT);
pinMode(greenPin1, OUTPUT);
pinMode(bluePin1, OUTPUT);
pinMode(redPin2, OUTPUT);
pinMode(greenPin2, OUTPUT);
pinMode(bluePin2, OUTPUT);
Serial.begin(9600);
}
void loop() {
int lightLevel = analogRead(ldrPin); // Считываем LDR
int potValue = analogRead(potPin); // Считываем потенциометр
Serial.print("LDR: ");
Serial.print(lightLevel);
Serial.print(" | Potentiometer: ");
Serial.println(potValue);
// Потенциометр как переключатель:
if (potValue < 512) {
// Переключатель "выкл" — выключаем всё
analogWrite(redPin1, LOW);
analogWrite(greenPin1, LOW);
analogWrite(bluePin1, LOW);
analogWrite(redPin2, LOW);
analogWrite(greenPin2, LOW);
analogWrite(bluePin2, LOW);
Serial.println("Потенциометр в положении ВЫКЛ");
delay(200);
return; // Прерываем выполнение loop()
}
// Иначе — потенциометр включен
Serial.println("Потенциометр в положении ВКЛ");
// Если темно — включаем свет
if (lightLevel < lightThreshold) {
int colorValue = map(lightLevel, 0, lightThreshold, 0, 255);
// Первый RGB — от синего к красному
analogWrite(redPin1, 255 - colorValue);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, colorValue);
// Второй RGB — наоборот
analogWrite(redPin2, colorValue);
analogWrite(greenPin2, 0);
analogWrite(bluePin2, 255 - colorValue);
} else {
// Светло — выключаем оба светодиода
analogWrite(redPin1, 0);
analogWrite(greenPin1, 0);
analogWrite(bluePin1, 0);
analogWrite(redPin2, 0);
analogWrite(greenPin2, 0);
analogWrite(bluePin2, 0);
}
delay(100);
}