Praktika 3 Nupp ja Photoresistor

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

Кнопка – при ножатии используется, чтобы запустить действие, выполнить команду.

конструкция работает так, что при первом нажатии светодиод включается, а при втором выключается

const int button1Pin = 2;  
const int button2Pin = 3; 
const int ledPin =  13;   
void setup()
{
  pinMode(button1Pin, INPUT); 

  pinMode(button2Pin, INPUT); 

  pinMode(ledPin, OUTPUT);   
}

void loop()
{
  int button1State, button2State; 
  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);
  if (((button1State == LOW) || (button2State == LOW))  
      && !
      ((button1State == LOW) && (button2State == LOW))) 
  {
    digitalWrite(ledPin, HIGH);  // lülitame LED sisse
  }
  else                          
  {
    digitalWrite(ledPin, LOW);  // lülitame LED välja
  }    	
  }

Näidis- Slideswitch’i kasutamine

Ключ — электрический коммутационный аппарат или устройство, применяется для замыкания или размыкания электрической цепи или группы электрических цепей.

батарейка – небольшой по размеру элемент питания электроэнергией для различных устройств.

От положения переключателя зависит работа

int swPin=4;
int ledPin=10;
int switchstate=0;
void setup()
{
  pinMode(swPin, INPUT);
  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; 
void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600); 
}
void loop()
{
  lightLevel = analogRead(sensorPin); 
  manualTune(); 
  autoTune();  
  analogWrite(ledPin, lightLevel);
  Serial.print(lightLevel);    
  Serial.println("");          
  delay(1000);                
}
void manualTune()
{
  lightLevel = map(lightLevel, 300, 800, 0, 255);  
  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 Öölamp

ночник загорается когда он включен кнопкой и фоторезистор при этом не чувствует свет. Можно использовать как обычный ночник в комнате для легкого освещен

https://drive.google.com/file/d/1tt05RBd8ZYeSBzsS4E8hfQkL8PSayz_q/view?usp=sharing

https://drive.google.com/file/d/1JMid_asF0-DBlV7FlE57r455co3Qo79e/view?usp=sharing

const int swPin = 4;
const int ledPin1 = 9;
const int ledPin2 = 10;
const int ledPin3 = 11;
const int ledPin4 = 6;
const int ledPin5 = 5;
int switchState = 0;
const int sensorPin = A0;
int lightLevel, high = 0, low = 1023;

void setup()
{
  pinMode(swPin, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  lightLevel = analogRead(sensorPin);
  Serial.print(lightLevel);
  Serial.println("");
  switchState = digitalRead(swPin);
  Serial.print(switchState);
  Serial.println("");
  analogWrite(ledPin1, lightLevel);
  analogWrite(ledPin2, lightLevel);
  analogWrite(ledPin3, lightLevel);
  analogWrite(ledPin4, lightLevel);
  analogWrite(ledPin5, lightLevel);
  if (switchState == HIGH)
  {
    lightLevel = analogRead(sensorPin);
    Serial.print(lightLevel);
    Serial.println("");
    switchState = digitalRead(swPin);
    Serial.print(switchState);
    Serial.println("");
    analogWrite(ledPin1, lightLevel);
    analogWrite(ledPin2, lightLevel);
    analogWrite(ledPin3, lightLevel);
    analogWrite(ledPin4, lightLevel);
    analogWrite(ledPin5, lightLevel);
  }
  else
  {
    analogWrite(ledPin1, LOW);
    analogWrite(ledPin2, LOW);
    analogWrite(ledPin3, LOW);
    analogWrite(ledPin4, LOW);
    analogWrite(ledPin5, LOW);
  }
}

void manualTune()
{
  lightLevel = map(lightLevel, 300, 800, 0, 255);
  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);
  delay(1000);
}