Пример 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.