Tests 2

Опыт со потенциометром/Potentsiomeetri kasutamine

Katse 1

Ühendamise skeem:

Kõigepealt tuleb paigutada LED ja potentsiomeeter maketeerimislauale ja ühendada need, sarnaselt joonisel kujutatule arendusplaadiga.LED vilgutamise kiiruse reguleerimiseks kasutatakse potentsiomeetrit.

Komponeendid:

—————————————Kood————————————–

int sensorPin = 0;      

int ledPin = 13;                              

int sensorValue = 0;     

void setup()

{       

  pinMode(ledPin, OUTPUT);  

  Serial.begin(9600);

}

void loop() {              

  sensorValue = analogRead(sensorPin);  

  digitalWrite(ledPin, HIGH);         

  delay(sensorValue);                 

  digitalWrite(ledPin, LOW);              

  delay(sensorValue);  

  float voltage = sensorValue * (5.0 / 1023.0); 

  Serial.println(voltage);         

}

————————————————————————————–

Ülesanne 2 Гирлянда-Valguskett

Ühendamise skeem:

Kõigepealt tuleb paigutada ledid ja potentsiomeeter maketeerimislauale ja ühendada need, sarnaselt joonisel kujutatule arendusplaadiga. Ledid vilgutamise kiiruse reguleerimiseks kasutatakse potentsiomeetrit.

Komponeendid:

Potentiometer (1 tk)
Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Juhtmed (11tk)
Takisti (5tk, 220Om)
LED (5tk: 2 punane, 2 roheline, 2 sinine)

Töö protsess:

  1. režiim punane, roheline ja sinine vilkumine samaaegselt,
  2. režiim töötab ükshaaval, 2 punast, siis kaks rohelist, siis kaks sinist.
  3. režiim kõik tuled süttivad korraga ja kustuvad.

Rakendus Valguskett:

Ma arvan, et seda vanik saab kasutada öösel tänavatel, et midagi tähistada või lihtsalt tänavaid kaunistada.

Programm:

int sensorPin = 0;

int one_redLED = 13;
int one_greenLED = 12;
int one_blueLED = 11;

int two_redLED = 10;
int two_greenLED = 9;
int two_blueLED = 5;

int thirdredLED = 5;

int oneLEDsArray[] = { one_redLED, one_greenLED, one_blueLED };
int twoLEDsArray[] = { two_redLED, two_greenLED, two_blueLED };
int allLEDsArray[] = {one_redLED, one_greenLED, one_blueLED, two_redLED, two_greenLED, two_blueLED, two_blueLED, thirdredLED};

int sensorValue = 0;

void blinkLED(int LED, int custDelay){
digitalWrite(LED, HIGH);
delay(custDelay);
digitalWrite(LED, LOW);
}

void turnFourColorsLEDs(int oneLED, int twoLED, int thirdLED, int fourthLED, bool Mode){
digitalWrite(oneLED, Mode);
digitalWrite(twoLED, Mode);
digitalWrite(thirdLED, Mode);
digitalWrite(fourthLED, Mode);
}

void turnTwoColorsLEDs(int oneLED, int twoLED, bool Mode){
digitalWrite(oneLED, Mode);
digitalWrite(twoLED, Mode);
}

void turnAllLEDs(bool Mode){
for (int i = 0; i < sizeof(oneLEDsArray) / sizeof(oneLEDsArray[0]);i++){
digitalWrite(oneLEDsArray[i], Mode);
digitalWrite(twoLEDsArray[i], Mode);
}
digitalWrite(thirdredLED, Mode);
}

void oneMode(){
int customDelay = 500;

turnAllLEDs(HIGH);
delay(customDelay);

turnAllLEDs(LOW);
delay(customDelay);
}

void twoMode(){
int customDelay = 500;

turnTwoColorsLEDs(one_redLED, two_redLED, HIGH);
digitalWrite(thirdredLED, HIGH);
digitalWrite(thirdredLED, HIGH);
delay(customDelay);

turnAllLEDs(LOW);
turnTwoColorsLEDs(one_greenLED, two_greenLED, HIGH);
turnTwoColorsLEDs(one_blueLED, two_blueLED, HIGH);
delay(customDelay);

turnAllLEDs(LOW);
}

void thirdMode(){
int customDelay = 1000;

turnTwoColorsLEDs(one_redLED, two_redLED, HIGH);
digitalWrite(thirdredLED, HIGH);
delay(customDelay);

turnTwoColorsLEDs(one_redLED, two_redLED, LOW);
digitalWrite(thirdredLED, LOW);
turnTwoColorsLEDs(one_greenLED, two_greenLED, HIGH);
delay(customDelay);

turnTwoColorsLEDs(one_greenLED, two_greenLED, LOW);
delay(customDelay);

turnTwoColorsLEDs(one_blueLED, two_blueLED, HIGH);
delay(customDelay);

turnAllLEDs(LOW);
}

void fourthMode(){
int customDelay = 400;
for (int i = 0; i < 9; i++){ blinkLED(allLEDsArray[i], customDelay); } for (int i = 9; i > 1; i–){
blinkLED(allLEDsArray[i], customDelay);
}
}

void fifthMode(){
int customDelay = 400;

for (int i = 0; i < 9; i++){
int randomLED = random(1, 9);
digitalWrite(allLEDsArray[randomLED], HIGH);
delay(customDelay);
}
turnAllLEDs(HIGH);
delay(customDelay);

turnAllLEDs(LOW);
}

void (*funcModes[])() = { oneMode, twoMode, thirdMode, fourthMode, fifthMode};

void setup()
{
Serial.begin(9600);

pinMode(one_redLED, OUTPUT);
pinMode(one_greenLED, OUTPUT);
pinMode(one_blueLED, OUTPUT);

pinMode(two_redLED, OUTPUT);
pinMode(two_greenLED, OUTPUT);
pinMode(two_blueLED, OUTPUT);

pinMode(thirdredLED, OUTPUT);
}
void loop()
{
sensorValue = analogRead(sensorPin);
sensorValue = map(sensorValue, 0,1023,1,6);
// float voltage = sensorValue * (5.0 / 1023.0);
for (int i = 0; i < sizeof(funcModes) / sizeof(funcModes[0]); i++){
if (sensorValue == i + 1){
funcModes[i]();
}
}

}

Video:

Uued funktsioonid:

boolпредставляет собой логическое значение, которое может быть либо true (истина), либо false (ложь).
sizeofиспользуется для получения размера типа данных или переменной в байтах.
random()генерирует псевдослучайное число в заданном диапазоне.
constrain()используется для ограничения значения переменной в определенном диапазоне.
map()используется для преобразования значений из одного диапазона в другой.
спискдля создания списков или массивов используется синтаксис массивов.
analogRead()используется для считывания аналогового значения с указанного аналогового пина.