3.1. Опыт кнопка


// 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 ( переменные для сохранения состояния кнопок)
  // Поскольку кнопки имеют только два состояния (нажаты и не нажаты) мы будем
  // работать с ними используя цифровые порты ввода. Для того чтобы считывать
  // 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. Опыт фоторезистор


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()
{
	lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse
	manualTune();  // ручное изменение диапазона от светлого к темному
	analogWrite(ledPin, 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);
}

Задание 3 ночник:

https://www.tinkercad.com/things/6INHpmDI2uw?sharecode=ZYZhrVa11glUlCv1vDI85UTDaStKCZ1Xgvq9Dia9SMM

Я использовалa для этого проекта:

  • 1 värvilist LEDi
  • 1 Arendusplaat
  • 9 Провода
  • 1 Arduino Uno
  • 2 Резистор
  • 1 Потенциометр
  • 1 Фоторезистор

Суть работы с опытом:

Пока есть свет, фоторезистор не включает светодиод. Когда свет гаснет, светодиод включается. Кнопка также может использоваться для включения и выключения света в ночное время, так что мы можем контролировать, хотим ли мы, чтобы свет включался ночью в темноте.

Kood:

int LEDPIN=9;
int PHOTOPIN=A3;
int BUTPIN=2;
int mode=0;
void setup()
{                      
  pinMode(BUTPIN, INPUT_PULLUP);
  pinMode(LEDPIN, OUTPUT);
}                 
 
void loop()
{
  int val;
  val=analogRead(PHOTOPIN);
  if(digitalRead(BUTPIN)==LOW)
  {
    mode = mode+1;
  }
  if(mode==0)
  {
    digitalWrite(LEDPIN,LOW);
  }
  if(mode==1)
  {    
    if(val>512)      
    { 
      digitalWrite(LEDPIN,HIGH);
    }                                           
    else
    {
      digitalWrite(LEDPIN,LOW);
    }
  }
  if(mode==2)
  {
    mode=0;
  }
}
Öölamp

Photoresistor kasutamine:

  • Kasutatakse trükitööstuses
  • Kasutatakse tööstus- ja kodumasinates