Katsed 3

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().