3. Тест Кнопка и Слайдсвитч

3.1 Katse Nuppude ja Slideswitch’i kasutamise võimalus

Komponeendid:

      • Arduino Uno
      • Arendusplaat
      • LED
      • Takisti
      • Juhtmed
      • Nuppud

Scheme

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);// 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 (выключаем светодиод)
  }    	
  }

Komponeendid:

      • Arduino Uno
      • Arendusplaat
      • LED
      • Takisti
      • Juhtmed
      • Slideswitch
      • Patarei

Scheme

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

Komponeendid:

      • Arduino Uno
      • Arendusplaat
      • LED
      • Takisti
      • Juhtmed
      • Photoresistor

Scheme

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
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);
}

Ülesanne Öölamp

Komponeendid:

  • Arduino Uno
  • Arendusplaat
  • LED
  • Takisti
  • Juhtmed
  • Photoresistor
  • Potentiomeeter

Scheme

Video:

Plaadi sisselülitamisel, kui RGB LED ei ole valgustatud, lülitub LED sisse ja helendab erinevates värvides. Intensiivsuse suurendamiseks on võimalik keerata potentsiomeeter kas miinimumväärtusele või alla 10 või maksimumväärtusele.

Code:

int redPin = 4; // määrake RGB LED-i viigud (punane)
int greenPin = 2; // määrake RGB LED-i viigud (roheline)
int bluePin = 3; // määrake RGB LED-i viigud (sinine)
int potentiometerPin = A0; // määrata fotoresistori
int photoresistorPin = A1;  //ja potentsiomeetri viigud
void setup() {
  Serial.begin(9600);
  
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}
void loop() {
  int photoresistorValue = analogRead(photoresistorPin); // fotoresistori väärtus
  int potentiometerValue = analogRead(potentiometerPin); // potentsiomeetri väärtus
  Serial.println(photoresistorValue);
  if (photoresistorValue < 100) { // dioodi väljalülitamine, kui fotoresistori väärtus on väiksem kui 100
    digitalWrite(redPin, LOW);
    digitalWrite(greenPin, LOW);
    digitalWrite(bluePin, LOW);
  } 
  else {
    if (potentiometerValue <= 10) { // dioodi väljalülitamine, kui potentsiomeetri väärtus on väiksem või võrdne 10
      digitalWrite(redPin, LOW);
      digitalWrite(greenPin, LOW);
      digitalWrite(bluePin, LOW);
    }
    else { // muidu töötab diood
      analogWrite(redPin, random(255));
      analogWrite(greenPin, random(255));
      analogWrite(bluePin, random(255));
      delay(300);
    }
  }
}

fotoresistori kasutamine elus

  • Päikesepatarei
  • Öövalgus
  • Laternapostid
  • Kaamerad ja taskulambid
  • Autosüsteemid (fotoresistoreid kasutatakse autosüsteemides, nagu päevased sõidutuled ja esilaternate automaatsed lülitussüsteemid).

Martini versioon, kuid me otsustasime kasutada minu versiooni.

Komponeendid:

  • Arduino Uno
  • Arendusplaat
  • LED
  • Takisti
  • Juhtmed
  • Photoresistor
  • Slideswitch
  • Nupp

Scheme

const int slideSwitchPin = 12;
const int rgbRedPin = 7;
const int rgbGreenPin = 6;
const int rgbBluePin = 5;
const int buttonPin = 4;
const int photoresistorPin = A0;
int brightnessMode = 0; // 0 = low brightness, 1 = medium brightness, 2 = high brightness
int photoresistorValue = 0;
bool isDark = false;
void setup() {
  pinMode(slideSwitchPin, INPUT_PULLUP);
  pinMode(rgbRedPin, OUTPUT);
  pinMode(rgbGreenPin, OUTPUT);
  pinMode(rgbBluePin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(9600);
}
void loop() {
// Read the value of the photoresistor
photoresistorValue = analogRead(photoresistorPin);
  // Check if the slide switch is turned on
if (digitalRead(slideSwitchPin) == HIGH) 
{
  // Check if it's dark
  if (photoresistorValue > 500) 
  {
    isDark = true;
  } 
  else 
  {
    isDark = false;
  }
  
  // If it's dark, turn on the RGB LED
  if (isDark) {
    // Check if the button is pressed to change the brightness mode
    if (digitalRead(buttonPin) == LOW) {
      brightnessMode = (brightnessMode + 1) % 3;
      delay(100); // Wait for button debounce
    }
    // Set the brightness of the RGB LED based on the brightness mode
    switch (brightnessMode) 
    {
      case 0:
        setRgbBrightness(rgbRedPin, rgbGreenPin, rgbBluePin, 20);
        break;
      case 1:
        setRgbBrightness(rgbRedPin, rgbGreenPin, rgbBluePin, 127);
        break;
      case 2:
        setRgbBrightness(rgbRedPin, rgbGreenPin, rgbBluePin, 255);
        break;
    }
    
    // Set the color of the RGB LED to white
    setRgbColor(rgbRedPin, rgbGreenPin, rgbBluePin, 255, 255, 255);
  } 
  else 
  {
    // If it's not dark, turn off the RGB LED and reset the brightness mode
    setRgbColor(rgbRedPin, rgbGreenPin, rgbBluePin, 0, 0, 0);
    brightnessMode = 0;
  }
} 
  
else 
{
  // If the slide switch is turned off, turn off the RGB LED and reset the brightness mode
  setRgbColor(rgbRedPin, rgbGreenPin, rgbBluePin, 0, 0, 0);
  brightnessMode = 0;
}
  // Print the value of the photoresistor and isDark (0 is light, 1 is dark) to the Serial Monitor
  Serial.print("Photoresistor value: ");
  Serial.print(photoresistorValue);
  Serial.print(", isDark: ");
  Serial.println(isDark);
  
}
// Helper function to set the color of the RGB LED
void setRgbColor(int redPin, int greenPin, int bluePin, int redValue, int greenValue, int blueValue) {
  analogWrite(redPin, redValue);
  analogWrite(greenPin, greenValue);
  analogWrite(bluePin, blueValue);
}
// Helper function to set the brightness of the RGB LED
void setRgbBrightness(int redPin, int greenPin, int bluePin, int brightness) {
  analogWrite(redPin, brightness);
  analogWrite(greenPin, brightness);
  analogWrite(bluePin, brightness);
}

Peen funktsionaalsus ei ole teada, kuna ei ole olnud võimalik rakendada nuppu