Teema 2

\\kasutades lehe lõpus olevat funktsiooni

Potentsiomeetri kasutamine

Komponentid:

  1. potentsiomeeter
  2. Diod led
  3. 330 om Takisti
  4. 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:

  1. potentsiomeeter
  2. 14 juhet
  3. 9 led lampi
  4. 9 takistit
  5. plaat
  6. c++ kood

Kasutasin oma töös järgmisi funktsioone:

  1. map()-Kaardistab arvu ühest vahemikust teise
  2. random()-kasutab juhuslikku väärtust
  3. 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:

  1. vastutab ainult punaste tulede vilkumise eest
  2. vastutab ainult roheliste tulede vilkumise eest
  3. vastutab ainult siniste tulede vilkumise eest
  4. see on kahevärviline interleaved režiim, st roheline sinine, roheline punane, punane sinine
  5. see on kõigi tulede kiire vilkumine teatud kiirusel
  6. 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:

  1. void setup() – See funktsioon käivitatakse ainult üks kord programmi käivitamisel. Selles initsialiseeritakse pin’id.
  2. void red() – See funktsioon vastutab punaste LED-tulede vilkumise eest.
  3. void blue() – See funktsioon vastutab siniste LED-tulede vilkumise eest.
  4. void green() – See funktsioon vastutab roheliste LED-tulede vilkumise eest.
  5. void alternation() – See funktsioon vastutab kahe värvi vaheldumise eest.
  6. void fast() – See funktsioon vastutab kõigi LED-tulede kiire vilkumise eest.
  7. void randomSpeed() – See funktsioon vastutab kõigi LED-tulede vilkumise eest juhusliku kiirusega.
  8. 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!

Leave a Reply

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga