Часть 2. Потенциометр.

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 :