Uus funktsioonid
map() - kasutatakse väärtuste vahemiku muutmiseks. See võimaldab teil liigutada üht väärtust ühest vahemikust teise.
map(value, fromLow, fromHigh, toLow, toHigh)
constrain() - piirab väärtust teatud vahemikku. Kui väärtus on väljaspool vahemikku, määratakse see lähima piirini.
constrain(x, a, b)
x - the number to constrain
a - the lower end of the range.
b - the upper end of the range.
Random(): - genereerib juhusliku täisarvu. Saate määrata numbrivahemiku, millest valitakse juhuslik väärtus.
random(min, max);
Potentsiomeetri kasutamine
Töö protsess:
Loeb andurilt analoogväärtust, teisendab selle pingeks, juhib LED-i vilkumist viitega
Kasutatud:
1x Arduino uno
1x LED lamp
1x Potentsiomeetri
1x 330 oomi takisti
7x Juhtmed
Kood:
int sensorPin = 0;
int ledPin = 13;
int sensorValue = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); // loeb analoog sisendi väärtust ja saadab tagasi täisarvu vahemikus 0 kuni 1023. See tähendab 10 bitilist täpsust (2^10 = 1024).
digitalWrite(ledPin, HIGH);
delay(sensorValue);
digitalWrite(ledPin, LOW);
delay(sensorValue);
float voltage = sensorValue * (5.0 / 1023.0); // konverteerime väärtuse (0 - 1023) ja tagastab (0 - 5V):
Serial.println(voltage); // Saadud tulemused kirjutame Serial Monitori.
}
Foto:

Minu näidis
Töö protsess:
Keeramisel muudab see RGB värvi alates punasest ja lõpetades punasega
Kasutatud :
1x Arduino uno
1x LED RGB lamp
1x Potentsiomeetri
3x 220 oomi takisti
9x Juhtmed
Kood:
const int RED_PIN = 11;
const int GREEN_PIN = 9;
const int BLUE_PIN = 10;
const int POT_PIN = A0;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int potValue = analogRead(POT_PIN);
int redValue = map(potValue, 0, 341, 0, 255);
int greenValue = map(potValue, 342, 682, 0, 255);
int blueValue = map(potValue, 683, 1023, 0, 255);
redValue = constrain(redValue, 0, 255);
greenValue = constrain(greenValue, 0, 255);
blueValue = constrain(blueValue, 0, 255);
analogWrite(RED_PIN, redValue);
analogWrite(GREEN_PIN, greenValue);
analogWrite(BLUE_PIN, blueValue);
Serial.print("Red: ");
Serial.print(redValue);
Serial.print(" Green: ");
Serial.print(greenValue);
Serial.print(" Blue: ");
Serial.println(blueValue);
delay(50);
}
Foto:

Valguskett
Töö protsess:
Esimene režiim (jooksev valgus): Üks LED süttib, seejärel kustub ja järgmine LED süttib. See protsess kordub ringikujuliselt, kuni te muudate potentsiomeetri asendit, et lülituda teise režiimi.
Teine režiim (liikuv muster): Kaks LED-i lülitatakse sisse (üks ringluse alguses ja teine lõpus). Need lülituvad välja ja kaks järgmist kõrvuti asetsevat LED-i süttivad, liikudes üksteise poole. See jätkub läbi vooluringi.
Kolmas režiim (vilkuv kõik): Kõik valgusdioodid lülituvad sisse ja vilguvad korraga.
Funktsioonid
runningLight() – lülitab valgusdioodid ükshaaval sisse ja välja.
blinkingAll() – paneb kõik LEDid korraga vilkuma.
movingPattern() – lülitab LEDid mõlemast otsast sisse, liigutades neid üksteise poole.
Kasutatud :
1x Arduino uno
8x LED lamp
1x Potentsiomeetri
8x 220 oomi takisti
13x Juhtmed
Kood:
int red1 = 13;
int green1 = 12;
int yellow1 = 11;
int blue1 = 10;
int red2 = 9;
int blue2 = 8;
int green3 = 7;
int red3 = 6;
int blue3 = 5;
int SensorPin = 0;
int ledint[] = { 13, 12, 11, 10, 9, 8, 7, 6, 5 };
const int potPin = A0;
void setup() {
for (int i = 0; i < 9; i++) {
pinMode(ledint[i], OUTPUT);
}
}
void loop() {
int potValue = analogRead(potPin);
int effect = map(potValue, 0, 1023, 0, 2);
switch (effect) {
case 0:
runningLight();
break;
case 1:
blinkingAll();
break;
case 2:
movingPattern();
break;
}
}
void runningLight() {
for (int i = 0; i < 9; i++) {
digitalWrite(ledint[i], HIGH);
delay(200);
digitalWrite(ledint[i], LOW);
delay(200);
}
}
void blinkingAll() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 9; j++) {
digitalWrite(ledint[j], HIGH);
}
delay(500);
for (int j = 0; j < 9; j++) {
digitalWrite(ledint[j], LOW);
}
delay(500);
}
}
void movingPattern() {
for (int i = 0; i < 5; i++) {
digitalWrite(ledint[i], HIGH);
digitalWrite(ledint[8 - i], HIGH);
delay(300);
digitalWrite(ledint[i], LOW);
digitalWrite(ledint[8 - i], LOW);
delay(300);
}
}
Foto:

Video :

