3. Katse Nupp ja Slideswitch

3.1 Katse Nuppude ja Slideswitch’i kasutamise võimalus

Komponeendid:

      • Arduino Uno
      • Arendusplaat
      • LED
      • Takisti
      • Juhtmed
      • Nuppud
First Scheme Nupp ja SlideSwitch

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
Second Scheme SlideSwitch + Battery

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
Third Scheme Light detector

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
Fourth Scheme RGB diod

Scheme

Video:

GIF Nupp ja SlideSwitch

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
Fifth Scheme Light Detector + SlideSwitch

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

Arduino mikrokontrollerid on laialt levinud platvorm elektroonikaharrastajate jaoks, pakkudes lihtsat viisi erinevate komponentide, nagu nupud, slaidlülitid ja valgusandurid, integreerimiseks. Nupud, eestikeeli “nupud”, on olulised osad Arduino projektides, võimaldades kasutajal käivitada erinevaid funktsioone või kontrollida seadme käitumist.

Slaidlülitid, mida nimetatakse eesti keeles “slaidlülititeks”, pakuvad sujuvat ja lineaarset juhtimist. Neid saab kasutada näiteks heleduse reguleerimiseks, helitugevuse muutmiseks või muude lineaarsete muutujate juhtimiseks Arduino projektides.

Valgusandurid, mida võib eesti keeles nimetada “valgusanduriteks”, on olulised komponendid automaatsetes valgustussüsteemides või muudes projektides, kus reageerimine valguse tasemele on vajalik. Arduino platvorm võimaldab neid komponente lihtsalt ühendada ja programmeerida vastavalt vajadustele.

Arduino platvormi tugevus seisneb selle avatud lähtekoodiga programmeerimises, mis võimaldab kasutajatel kohandada ja luua enda projekte. Nii saab nuppe konfigureerida erinevate funktsioonide jaoks, slaidlüliteid kasutada muutuvate parameetrite juhtimiseks ning valgusandureid integreerida automaatse valgustuse või muude valgusega seotud rakenduste jaoks.

Kokkuvõttes on Arduino platvorm mitmekülgne vahend elektroonikaharrastajatele, võimaldades loomingulist lähenemist nuppude, slaidlülitite ja valgusandurite kasutamisele erinevates projektides.

Arduino platvorm muudab nuppude, slaidlülitite ja valgusandurite integreerimise lihtsaks. See võimaldab elektroonikaharrastajatel loovalt kohandada nende komponentide funktsionaalsust vastavalt individuaalsetele projektinõuetele.