ROB. Button and Photoresistor

Пример 3.1

KOMPONENDID:

SKEEM:

KOOD:

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.1.1

KOMPONENDID:

1 батарейка

1 лед

7 проводов

1 резистор

SKEEM:

KOOD:

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

KATSE 3.2

KOMPONENDID:

SKEEM:

KOOD:

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

}

Katse 3.3

KOMPONENDID:
12 проводов

6 ледов

7 резистеров

1 фоторезистор

1 выключатель

1 аккумулятор

SKEEM:

KOMPONENDID:

12 проводов

6 ледов

1 свич

1 переключатель

1 аккумулятор

1 фоторезистор

7 резисторов

KOOD:

int swPin = 2;
int switchstate = 0;


const int sensorPin = 0;
const int green1Pin = 7;
const int red1Pin = 8;
const int yellow1Pin = 9;
const int green2Pin = 10;
const int yellow2Pin = 11;
const int red2Pin = 12;
int lightLevel, high = 0, low = 1023;

void setup()
{
  pinMode(yellow1Pin, OUTPUT);
  pinMode(red1Pin, OUTPUT);
  pinMode(red2Pin, OUTPUT);
  pinMode(yellow2Pin, OUTPUT);
  pinMode(green1Pin, OUTPUT);
  pinMode(green2Pin, OUTPUT);
  pinMode(swPin, INPUT);
  
  Serial.begin(9600);
}

void loop() 
{
switchstate = digitalRead(swPin);
 if (switchstate == HIGH) {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      hstate == HIGH) {
  lightLevel = analogRead(sensorPin);
    lightLevel=manualTune();
    analogWrite(red1Pin, lightLevel);
    analogWrite(yellow1Pin, lightLevel);
    analogWrite(green1Pin, lightLevel);
    analogWrite(green2Pin, lightLevel);
    analogWrite(yellow2Pin, lightLevel);
    analogWrite(red2Pin, lightLevel); 23
    Serial.print(lightLevel);
    Serial.println("");
    delay(200);
  
  }
  else if (switchstate == LOW) {
  digitalWrite(red1Pin, LOW);
    digitalWrite(red2Pin, LOW);
    digitalWrite(green1Pin, LOW);
    digitalWrite(green2Pin, LOW);
    digitalWrite(yellow1Pin, LOW);
    digitalWrite(yellow2Pin, LOW);
    
    
  }
    
 

      
}

int manualTune() {
  lightLevel = map(lightLevel, 300, 800, 0, 255); // kaardistame selle analoogväljundi vahemikku (будет от 300 темно, до 800 (светло)). 

  lightLevel = constrain(lightLevel, 0, 255);
  return lightLevel;
}

Kus võib kasutadaa?

Selline öölamp võib kasutada kodus. See reageerib valgusele ja sellel on mitu režiimi. Režiime saab muuta olenevalt valgusest ja puudutusest

Link:

Uued funktsioonid:
Serial.print – seda funktsiooni kasutatakse andmete saatmiseks jadapordi kaudu

analogWrite –
Seda funktsiooni kasutatakse PWM-signaali (impulsi laiuse modulatsiooni) genereerimiseks kontaktil, mis toetab analoogväljundit (tavaliselt tihvtid märgistusega “PWM”).

switchstate – kasutatakse lüliti või nupu oleku salvestamiseks.