\\kasutades lehe lõpus olevat funktsiooni
Potentsiomeetri kasutamine
Komponentid:
- potentsiomeeter
- Diod led
- 330 om Takisti
- juhe 6x
Töö eesmärk on õppida töötama. potentsiomeetriga, mis võimaldab edaspidi seadistada paljusid töörežiime
Kuidas see töötab: potentsiomeeter võtab chill 255-ga piiratud väärtuste arvu, ühendame selle A-pistikuga ja loome koodi jaoks muutuja, võttes väärtused, millest saame neid operatsiooni tingimusena kasutada konkreetsest režiimist
Skeem:

С++ Kood
// C++ code
//
int sensorPin = 0; //задаем переменные потенциметру
int ledPin = 11; //леду
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.
}
https://www.tinkercad.com/things/cDZ7z8Vha0S-amazing-jaiks-fyyran/editel?sharecode=2uFDtq3c-R7uSjmfoY-gvThMB3336HdXSq85wcBKqxc
Selles katses õppisin töötama potentsiomeetriga. Ühendage see vooluvõrku jne.
Ülesanne 2-Valguskett
Komponentid:
- potentsiomeeter
- 14 juhet
- 9 led lampi
- 9 takistit
- plaat
- c++ kood
Kasutasin oma töös järgmisi funktsioone:
- map()-Kaardistab arvu ühest vahemikust teise
- random()-kasutab juhuslikku väärtust
- constrain()-Piirab arvu jäämist vahemikku
Kasutas loomiseks saiti Tinkercad, kood on kirjutatud C ++ keeles, see kood täidab vaniku funktsiooni. Panin plaadi ja pordid paika, ühendasin juhtmed ja kasutasin ka potentsiomeetrit.
Töö eesmärk: luua tinkercadis vaniku imitatsioon, kirjutada kood ja luua see arduinoIDE programmi abil päris tahvlile uuesti.
Rakendus reaalses maailmas: piduliku vaniku kujundamine näiteks jõulupuule või lisavarustusena lihtsalt ruumi kaunistuseks
tööpõhimõte: Potentimeeter võtab vastu väärtuse ja edastab selle if-operaatorile, mis selle põhjal lülitab sisse ühe mittetahke režiimi. Ainult 9 dioodi, sest tahtsin luua päris lähedase vaniku.
Skeem:

kood, milles ma registreerisin vaniku töörežiimid:
// C++ code
//
int sensorPin=0;
int redled1=11; //muutujaid luua
int blueled1=10;
int greenled1=9;
int redled2=8;
int blueled2=7;
int greenled2=6;
int redled3=5;
int blueled3=4;
int greenled3=3;
int sensorValue=0;
int valueNew;
void setup() //määrake pordi režiim
{
pinMode (redled1, OUTPUT);
pinMode (blueled1, OUTPUT);
pinMode (greenled1, OUTPUT) ;
pinMode (redled2,OUTPUT) ;
pinMode (blueled2, OUTPUT);
pinMode (greenled2, OUTPUT);
pinMode (redled3,OUTPUT) ;
pinMode (blueled3, OUTPUT);
pinMode (greenled3, OUTPUT);
Serial.begin(9600);
}
void red() //Loon funktsiooni, see vastutab ainult punaste tulede vilkumise eest
{
digitalWrite (redled1, HIGH);
digitalWrite (redled2, HIGH);
digitalWrite (redled3, HIGH);
delay(300);
digitalWrite (redled1, LOW);
digitalWrite (redled2, LOW);
digitalWrite (redled3, LOW);
delay(200);
}
void blue() //sama rohelisega
{
digitalWrite (blueled1, HIGH);
digitalWrite (blueled2, HIGH);
digitalWrite (blueled3, HIGH);
delay(300);
digitalWrite (blueled1, LOW);
digitalWrite (blueled2, LOW);
digitalWrite (blueled3, LOW);
delay(200);
}
void green() //sama sinisega
{
digitalWrite (greenled1, HIGH);
digitalWrite (greenled2, HIGH);
digitalWrite (greenled3, HIGH);
delay(300);
digitalWrite (greenled1, LOW);
digitalWrite (greenled2, LOW);
digitalWrite (greenled3, LOW);
delay(200);
}
void alternation() //funktsioon vastutab 2 värvi vaheldumise eest
{
green();
red();
delay(400);
green();
blue();
delay(400);
blue();
red();
delay(400);
}
void fast() //see funktsioon vastutab kõigi lampide kiire vilkumise eest
{
digitalWrite(redled1,HIGH);
digitalWrite(redled2,HIGH);
digitalWrite(redled3,HIGH);
delay(50);
digitalWrite(redled1,LOW);
digitalWrite(redled2,LOW);
digitalWrite(redled3,LOW);
digitalWrite(blueled1,HIGH);
digitalWrite(blueled2,HIGH);
digitalWrite(blueled3,HIGH);
delay(50);
digitalWrite(blueled1,LOW);
digitalWrite(blueled2,LOW);
digitalWrite(blueled3,LOW);
digitalWrite(greenled1,HIGH);
digitalWrite(greenled2,HIGH);
digitalWrite(greenled3,HIGH);
delay(50);
digitalWrite(greenled1,LOW);
digitalWrite(greenled2,LOW);
digitalWrite(greenled3,LOW);
}
void randomSpeed() //ja see funktsioon on kõigi lampide vilkumine juhusliku kiirusega
{
digitalWrite(redled1,HIGH);
digitalWrite(redled2,HIGH);
digitalWrite(redled3,HIGH);
delay(random(10,500));
digitalWrite(redled1,LOW);
digitalWrite(redled2,LOW);
digitalWrite(redled3,LOW);
digitalWrite(blueled1,HIGH);
digitalWrite(blueled2,HIGH);
digitalWrite(blueled3,HIGH);
delay(random(10,500));
digitalWrite(blueled1,LOW);
digitalWrite(blueled2,LOW);
digitalWrite(blueled3,LOW);
digitalWrite(greenled1,HIGH);
digitalWrite(greenled2,HIGH);
digitalWrite(greenled3,HIGH);
delay(random(10,500));
digitalWrite(greenled1,LOW);
digitalWrite(greenled2,LOW);
digitalWrite(greenled3,LOW);
}
void loop() //potentsiomeetri seadistamine
{
valueNew=analogRead(sensorPin);
valueNew=map(valueNew,0,1023,1,6);
if (valueNew==2)//если значение потенциметра 2
{
red();
Serial.print("Punane");
}
else if (valueNew==3)//если 3
{
blue();
Serial.print("Sinine");
}
else if (valueNew==4)//если 4
{
green();
Serial.print("Roheline");
}
else if (valueNew==5)//если 5
{
fast();
Serial.print("Kiiresti vilkuv");//вывод в терминал
}
else if (valueNew==6)//если 6
{
randomSpeed();
Serial.print("vilgub juhusliku kiirusega");
}
else
{
alternation();
Serial.print("2 värvi vaheldumine");//стальное(основной режим)
}
}
Sellel muulil on 6 režiimi:
- vastutab ainult punaste tulede vilkumise eest
- vastutab ainult roheliste tulede vilkumise eest
- vastutab ainult siniste tulede vilkumise eest
- see on kahevärviline interleaved režiim, st roheline sinine, roheline punane, punane sinine
- see on kõigi tulede kiire vilkumine teatud kiirusel
- Kõigi lampide vilkumine suvalise viivitusega, selleks kasutasin Random () moodulit
Sellest tööst sain teada, kuidas potentsiomeeter töötab, ja hakkasin ka natuke aru saama c ++-ga töötamise kohta
https://www.tinkercad.com/things/5TwH7RYq10f-smooth-jaban/editel?sharecode=UHcH0vKLwFpUCtHm62i_Ocaz3iuXDFXFKqXvnsnpqSI
Video:
Lõin töö uuesti päris tahvlil, ühendasin arvutiga ja kasutasin koodi edastamiseks aurduino IDE-d
Mida ma õppinud:
Töötage potentsiomeetriga, ühendage see päris tahvliga, õppisite selle ala mõningaid nüansse ja õppisite uusi funktsioone c ++
kasutatud funktsioone:
- void setup() – See funktsioon käivitatakse ainult üks kord programmi käivitamisel. Selles initsialiseeritakse pin’id.
- void red() – See funktsioon vastutab punaste LED-tulede vilkumise eest.
- void blue() – See funktsioon vastutab siniste LED-tulede vilkumise eest.
- void green() – See funktsioon vastutab roheliste LED-tulede vilkumise eest.
- void alternation() – See funktsioon vastutab kahe värvi vaheldumise eest.
- void fast() – See funktsioon vastutab kõigi LED-tulede kiire vilkumise eest.
- void randomSpeed() – See funktsioon vastutab kõigi LED-tulede vilkumise eest juhusliku kiirusega.
- void loop() – See funktsioon käivitub pidevalt pärast setup() funktsiooni. Selles funktsioonis loetakse analoogsisendist potentsiomeetri väärtust ja sõltuvalt sellest aktiveeritakse erinevad funktsioonid LED-tulede juhtimiseks.
Tänan tähelepanu eest!