3.1. Katse Nuppude ja Slideswitch’i kasutamise võimalus

// Nuppud (КНОПКИ). // У кнопок есть два контакта, если кнопка нажата - контакт замкнут, если не нажата - разомкнут. 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); 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 (выключаем светодиод) } }

// C++ code // int swPin=4; int ledPin=10; int switchstate=0; void setup() { pinMode(swPin, OUTPUT); pinMode(ledPin, OUTPUT); } void loop() { switchstate=digitalRead(swPin); if (switchstate==HIGH) { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); } }
3.2. Katse Photoresistor

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); // Эту проблему можно решить с помощью двух полезных функций под названием map() и constrain(): // Функция map() может преобразовывать один диапазон значений в другой. К примеру - мы указываем map() в параметрах, диапазон "из" 0-1023 "в" 0-255, она преобразует первый больший диапазон во второй, более мелкий. // Поэтому нужно за ранее подготовиться к такому повороту событий, для этого можно, и даже нужно использовать еще одну функцию - 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 < low) // если уровень "lightLevel" меньше 1023, то присвоим { low = lightLevel; // теперь самым "низким" ~ 800 } if (lightLevel > high) { high = lightLevel; } lightLevel = map(lightLevel, low+0, high-30, 0, 255); lightLevel = constrain(lightLevel, 0, 255); }

const int sensorPin = A0; const int sensorPin2 = A1; int sensorValue = 0; int lightLevel, high = 0, low = 1023; const int ledPin = 12; int Value_new; void setup() { pinMode(ledPin, OUTPUT); } void loop() { Value_new = analogRead(sensorPin2); Value_new=map(Value_new,0,800,1,3); if(Value_new==1) { svet(); } else if (Value_new==2) { digitalWrite(ledPin,LOW); } else if (Value_new==3) { digitalWrite(ledPin,HIGH); } } void svet() { lightLevel = analogRead(sensorPin); analogWrite(ledPin, lightLevel); }
https://www.tinkercad.com/things/0ZeIGta0vie-copy-of-smashing-bigery/editel?sharecode=61J9lbrC32Ku4bXYa4TNYTA2kOfs2j56SywAVDxlZTM
Oli kasutatud:
takistid 2 tk
LED lamp 1 tk
juhtmed 9 tk
arduino uno R3 1 tk
arendusplaat 1tk
fototakisti 1 tk
potentsial 1 tk
Töö kirjeldus:
Muutujad ja konstandid on deklareeritud: konstandid sensorPin ja sensorPin2 – konstandid, millega määratletakse viigud, millega andurid on ühendatud. sensorValue – muutuja anduri väärtuse salvestamiseks.
lightLevel, high ja low – muutujad valgustasemega töötamiseks.
ledPin – konstant selle viigu määramiseks, millega LED on ühendatud.
Value_new – muutuja andurist teisendatud väärtuse salvestamiseks. Funktsioon setup() määrab ledPini väljundrežiimiks OUTPUT. Funktsioonis loop() käivitatakse programmi põhisilmus: SensorPin2-ga ühendatud anduri uus väärtus loetakse ja salvestatakse väärtusesse Value_new.
Väärtus Value_new teisendatakse funktsiooniga map() nii, et see on vahemikus 0 kuni 800, ja seejärel teisendatakse vahemikku 1 kuni 3.
Kui Value_new on 1, kutsutakse svet().
Kui Value_new on 2, lülitatakse ledPiniga ühendatud LED välja (LOW).
Kui Value_new on 3, lülitatakse LED sisse (seatakse HIGH). Funktsiooni svet() kutsutakse, kui Value_new on 1: sensorPiniga ühendatud anduri väärtus loetakse ja salvestatakse lightLevelisse.
LightLeveli väärtust kasutatakse LEDi heleduse reguleerimiseks funktsiooniga analoogWrite().