Katse 3 Nupp ja Photoresistor

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

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(HIGH või LOW)

  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);  // lülitame LED sisse

  }

  else                          

  {

    digitalWrite(ledPin, LOW);  // lülitame LED välja

  }    	

  }

3.2. Katse Photoresistor

Komponindid:

Ühendamine:

Ühendada kõigepealt maketeerimislaua ühte äärde sarnaselt järgneva joonisega fototakisti nii et üks jalg oleks ühendatud toite ning teine läbi maandusesse mineva takisti analoogsignaaliga. Nüüd lisada maketeerimislaua teise otsa, et LED-i valgus ei mõjutaks andurit.

Monitori jälgimiseks avada see arenduskeskkonna ülemise rohelise riba paremas ääres asuvast luubi ikoonist.

const int sensorPin = 0;

const int ledPin = 9;

int lightLevel, high = 0, low = 1023; 

void setup()

{

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600); // //Serial monitori seadistamine

}

void loop()

{

  // AnalogRead() kasutab väärtused vahemikus 0 (0 вольт) и 1023 (5 вольт).

  // AnalogWrite(),  kasutatakse, et LEDi sujuvalt sisselülitada 0(ei põle) kuni 255(põleb maksimalselt).
  lightLevel = analogRead(sensorPin); //loeme mõõdetud analoogväärtuse

  // Map() teisendab sisendi väärtused ühest vahemikust teisse. Näiteks, "from" 0-1023 "to" 0-255.

  // Constrain() saed muutujale kindlad piirväärtused.

  // Näiteks:  kui constrain() kohtub arvudega 1024, 1025, 1026.., siis ta teisendab need 1023, 1023, 1023..). Kui arvud vähem kui 0, siis teisendab need 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)  

  {                      

    low = lightLevel;   

  }

  if (lightLevel > high)

  {

    high = lightLevel;

  }

  lightLevel = map(lightLevel, low+10, high-30, 0, 255);

  lightLevel = constrain(lightLevel, 0, 255);

}

Öölamp

Ülesanne:

Luua öölamp, mida saab nupust/potest sisse ja välja lülitada.
Valgustugevus (analogdigitalWrite (PIN ,0..255) / põlevate ledide hulk sõltub ümbritsevast valgusest (valgustakisti).

Komponendid:

  • Valgustakisti
  • Potentsioometr
  • RGB LED
  • Takisti (4)
  • Juhtmed (14)

https://www.tinkercad.com/things/hBqAvYIsXyZ-oolamp

https://drive.google.com/file/d/1WDQLK7RtKjM9o32sg59ZHixn298zSnxO/view?usp=drivesdk

Minu öövalgusel on 3 režiimi, automaatne (olenevalt valgustusest), lülitub sisse ja välja.

const int sensorPin = 0;
const int sensorPin2 = 1;
const int RED_PIN  = 11;
const int BLUE_PIN   = 10;
const int GREEN_PIN  = 9;
int value;
int PinVal = 0;

void setup()
{
  pinMode(BLUE_PIN, OUTPUT);
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  
  Serial.begin(9600);
}

void loop()
{
  PinVal = analogRead(sensorPin);
  value = map(PinVal, 0, 1023, 1, 3);
  value = constrain(value, 1, 3);
  
  if (value == 1)
  {
    Serial.println("Set to ON");
    on();
	value = map(PinVal, 0, 1023, 1, 3);
  	value = constrain(value, 1, 3);
  }
  if (value == 2)
  {
    Serial.println("Set to OFF");
    off();
    value = map(PinVal, 0, 1023, 1, 3);
  	value = constrain(value, 1, 3);
  }
  if (value == 3)
  {
    automatic();
    value = map(PinVal, 0, 1023, 1, 3);
  	value = constrain(value, 1, 3);
  }
}

void on()
{
  int x;
  for (x = 0; x < 768; x++)
  {
    ShowRGB(x); 
    delay(10);   
  }
}

void ShowRGB(int color)
{
  int redIntensity;
  int greenIntensity;
  int blueIntensity;
  
  if (color <= 255)                
  {
    redIntensity = 255 - color;    // lülitakse välja punane
    greenIntensity = color;        // lülitakse sisse roheline
    blueIntensity = 0;             // sinine on välja lülitatud
  }
  else if (color <= 511)          
  {
    redIntensity = 0;                     
    greenIntensity = 255 - (color - 256); 
    blueIntensity = (color - 256);        
  }
  else if (color >= 512)             
  {
    redIntensity = (color - 512);        
    greenIntensity = 0;                  
    blueIntensity = 255 - (color - 512);  
  }
  analogWrite(RED_PIN, redIntensity);
  analogWrite(BLUE_PIN, blueIntensity);
  analogWrite(GREEN_PIN, greenIntensity);
}

void automatic()
{
  int lightLevel = analogRead(sensorPin2);
  lightLevel = map(lightLevel, 300, 800, 0, 255);
  lightLevel = constrain(lightLevel, 255, 0);
  if (lightLevel < 100)
  {
    Serial.println("Night Light ON");
    on();
  }
  else
  {
    Serial.println("Night Light OFF");
    off();
    
  }
  delay(100);
}

void off()
{
  digitalWrite(RED_PIN, LOW);
  digitalWrite(BLUE_PIN, LOW);
  digitalWrite(GREEN_PIN, LOW);
}
Scroll to Top