Опыт со потенциометром/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:
- režiim punane, roheline ja sinine vilkumine samaaegselt,
- režiim töötab ükshaaval, 2 punast, siis kaks rohelist, siis kaks sinist.
- 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() | используется для считывания аналогового значения с указанного аналогового пина. |