Сейчас ваша корзина пуста!
Katse 3.
Katse Nuppude ja Slideswitch’i kasutamise võimalus
3.1

// C++ code
//
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 ( переменные для сохранения состояния кнопок)
// Поскольку кнопки имеют только два состояния (нажаты и не нажаты) мы будем
// работать с ними используя цифровые порты ввода. Для того чтобы считывать
// digitalRead() функция позволяет получить один параметр с цифрового порта и возвратить либо HIGH (+5V), либо LOW («0»).
button1State = digitalRead(button1Pin);// salvestame muutujasse nupu hetke väärtuse
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); // süütame LEDi (включаем светодиод)
}
else
{
digitalWrite(ledPin, LOW); // kustutame LEDi (выключаем светодиод)
}
}
3.2

// C++ code
//
const int sensorPin = 0;
const int ledPin = 9;
int lightLevel, high = 0, low = 1023; // создадим глобальные переменные для уровней яркости high (высокий), low (низкий):
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // //Serial monitori seadistamine (для отладки, чтобы увидеть показания датчиков)
}
void loop()
{
// Диапазон чисел с которыми работает функция analogRead() находится в пределах от 0 (0 вольт) и 1023 (5 вольт).
// Но! Управлением яркостью светодиода занимается функция analogWrite(), она использует диапазон от от 0 до 255.
lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse
// Эту проблему можно решить с помощью двух полезных функций под названием map() и constrain():
// Функция map() может преобразовывать один диапазон значений в другой. К примеру — мы указываем map() в параметрах, диапазон «из» 0-1023 «в» 0-255, она преобразует первый больший диапазон во второй, более мелкий.
// Поскольку map() может столкнуться с числами за пределами диапазона, скажем или больше, или меньше, или даже с отрицательными.
// Поэтому нужно за ранее подготовиться к такому повороту событий, для этого можно, и даже нужно использовать еще одну функцию — constrain().
// Функция constrain() проверит содержится ли число в заданном диапазоне.
// Если число выше диапазона, он будет уменьшено до самого большого, а если число ниже диапазона, он будет увеличенно до самого низкого
// Пример: если constrain() столкнулось с числами 1024, 1025, 1026.., она их преобразует в 1023, 1023, 1023..). С отрицательными числами она сделает тоже самое, т.е все отрицательные станут 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 high)
{
high = lightLevel;
}
lightLevel = map(lightLevel, low+0, high-30, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
}
Ölammp
Komponendid:
Arudino Uno
Takisti (4)
Juhtmed (12)
3 LEDi
PotentsiomeetrValgustakisti
https://www.tinkercad.com/things/k3eX5LPG6Vx

// C++ code
//
const int sensorPin = 0;
const int sensorPin2 = 1;
const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
int lightLevel, high = 0, low = 1023;
int val;
int PinVal = 0;
void setup()
{
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
Serial.begin(9600);
}
void loop()
{
PinVal = analogRead(sensorPin);
val = map(PinVal,0,1023,1,2);
val = constrain(PinVal,1,2);
Serial.print(val);
Serial.println(«»);
if (val==2)
{
day();
}
if (val==1)
{
night();
}
}
void day()
{
val = analogRead(sensorPin);
lightLevel = analogRead(sensorPin2);
lightLevel = map(lightLevel, 300, 800, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
analogWrite(ledPin1, lightLevel);
analogWrite(ledPin2, lightLevel);
analogWrite(ledPin3, lightLevel);
Serial.print(lightLevel);
Serial.println(«»);
delay(100);
}
void night()
{
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
https://drive.google.com/file/d/1OxVvqIevUjXvFhO70ewJeeRQaA4gqtkb/view?usp=sharing
Tööpõhimõte:
Öövalgus koos reaktsiooniga valgusele. Kui fototakisti näeb valgust, siis pirn ei sütti, kui ei näe, siis süttib. Potentsiomeetriga saab kogu konstruktsiooni sisse ja välja lülitada.
Uued funktsioonid:
Serial.print() — Funktsioon.
Prindib andmed jadaporti inimloetava ASCII-tekstina. See käsk võib esineda mitmel kujul. Numbrid trükitakse, kasutades iga numbri jaoks ASCII-märki. Ujukid trükitakse sarnaselt ASCII numbritega, vaikimisi kahe kümnendkoha täpsusega. Baite saadetakse ühe märgina.
manualTune() — Funktsioon.
vahemiku käsitsi muutmine heledast tumedaks
autoTune() — Funktsioon.
automaatne vahemiku muutmine heledast tumedaks
kasutamisvõimalused tavaelus.
Fototakisteid kasutatakse nõrkade valgusvoogude registreerimiseks valmistoodete sortimisel ja loendamisel, et kontrollida mitmesuguste osade kvaliteeti ja valmisolekut; trükitööstuses paberilindi katkestuste tuvastamiseks, kontrollida trükimasinasse söödetud paberilehtede arvu; meditsiinis, põllumajanduses ja muudes valdkondades.