Praktika 2 Potentsiomeeter

2. Katse -Potentsiomeetri kasutamine-

// C++ code
//
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.         
}

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

Kasutatud komponenid:

3 punane, roheline, kollane LED (kokku 9)

9 takesti 220 B

14 juhed

1 plaat ARDUINO UNO

1 potentsiomeeter

1 breadboard big

Töö protsess:

Koostage “Garland” skeem veebilehel “Tinkercad”.

Samal ajal teeme märkmeid

Programmeerime “Garland” käitumist.

Testimine

Paneme “Garland” kokku.

Viiakse töötav kood üle tahvlile

Testige prototüüpi

Parandage tulemus.

Rakendused

Rakendused

  • Valgustuse heleduse reguleerimine ruumis
  • Helitugevuse reguleerimine
  • Millegi võimsuse reguleerimine
  • Seadme töörežiimide vahetamine
  • Ja nii edasi

SKEEM:

Programm:

// C++ code
//
int sensorPin = 0;
int ledred1 = 13; //red
int ledblue1 = 12; //blue
int ledgreen1 = 11; //green
int ledred2 = 10; //red
int ledblue2 = 9; //blue   //свето диоды которые мы используем
int ledgreen2 = 8; //green
int ledred3 = 7; //red
int ledblue3 = 6; //blue
int ledgreen3 = 5; //green
int lamps[9] = {ledred1,ledblue1,ledgreen1,ledred2,ledblue2,ledgreen2,ledred3,ledblue3,ledgreen3};//список из наших светодиодов
int sensorValue = 0;//значение потенциометра
int Value_new;
void setup()
{       
    pinMode(ledred1,OUTPUT);
    pinMode(ledred2,OUTPUT);
    pinMode(ledred3,OUTPUT);
    pinMode(ledblue1,OUTPUT);
    pinMode(ledblue2,OUTPUT);
    pinMode(ledblue3,OUTPUT);
    pinMode(ledgreen1,OUTPUT);
    pinMode(ledgreen2,OUTPUT);
    pinMode(ledgreen3,OUTPUT);
}
void loop() //цикл в которм запускается прграмма
{
    Value_new = analogRead(sensorPin);
    Value_new = map(Value_new,0,1023,1,7);
    if (Value_new == 1)
    {
      red();
    }
    else if (Value_new == 2)
    {
      blue();
    }
    else if (Value_new == 3)
    {
      green();
    }
    else if (Value_new == 4)
    {
      transfusion();
    }
    else if (Value_new == 5)
    {
      waves();
    }
    else if (Value_new == 6)
    {
      blinking();
    }
}
void red()//моргают все красные диоды
{
    digitalWrite(ledred1, HIGH);
    digitalWrite(ledred2, HIGH);
    digitalWrite(ledred3, HIGH);
    delay(500);
    digitalWrite(ledred1, LOW);
    digitalWrite(ledred2, LOW);
    digitalWrite(ledred3, LOW);
    delay(500);
}
void blue()//моргают все синие/желтые диоды
{
    digitalWrite(ledblue1, HIGH);
    digitalWrite(ledblue2, HIGH);
    digitalWrite(ledblue3, HIGH);
    delay(500);
    digitalWrite(ledblue1, LOW);
    digitalWrite(ledblue2, LOW);
    digitalWrite(ledblue3, LOW);
    delay(500);
}
void green()//моргают все зеленые диоды
{
    digitalWrite(ledgreen1, HIGH);
    digitalWrite(ledgreen2, HIGH);
    digitalWrite(ledgreen3, HIGH);
    delay(500);
    digitalWrite(ledgreen1, LOW);
    digitalWrite(ledgreen2, LOW);
    digitalWrite(ledgreen3, LOW);
    delay(500);
}
void transfusion()//по очередно загораются все диоды
{
    for (int i = 0; i <= 9; i++)
    {
        digitalWrite(lamps[i], HIGH);
        delay(100);
    }
    for (int i = 0; i <= 9; i++)
    {
        digitalWrite(lamps[i], LOW);
        delay(100);
    }
}
void waves()
{
     
    for (int i = 0; i <= 3; i++) //цикл моргания от одного до четырех
    {
        digitalWrite(lamps[i], HIGH);
        delay(100);
       
        for (int i = 8; i >= 4; i--)//цикл моргания от 9 до 5
        {
        digitalWrite(lamps[i], HIGH);
        delay(100);
        }
       
        for (int i = 8; i >= 4; i--)//цикл моргания от 9 до 5
        {
        digitalWrite(lamps[i], LOW);
        delay(100);
        }
    }
      
    for (int i = 0; i <= 3; i++)////цикл моргания от 1 до 2
    {
        digitalWrite(lamps[i], LOW);
        delay(100);
    }
}
void blinking()//поочерёдное мигание лампочек через 1
{
    //0-2,1-3,4-6,5-7,8
    digitalWrite(lamps[0], HIGH);
    digitalWrite(lamps[2], HIGH);
    delay(500);
     
    digitalWrite(lamps[0], LOW);
    digitalWrite(lamps[2], LOW);
    delay(500);
   
    digitalWrite(lamps[1], HIGH);
    digitalWrite(lamps[3], HIGH);
    delay(500);
     
    digitalWrite(lamps[1], LOW);
    digitalWrite(lamps[3], LOW);
    delay(500);
   
    digitalWrite(lamps[4], HIGH);
    digitalWrite(lamps[6], HIGH);
    delay(500);
     
    digitalWrite(lamps[4], LOW);
    digitalWrite(lamps[6], LOW);
    delay(500);
   
    digitalWrite(lamps[5], HIGH);
    digitalWrite(lamps[7], HIGH);
    delay(500);
     
    digitalWrite(lamps[5], LOW);
    digitalWrite(lamps[7], LOW);
    delay(500);
   
    digitalWrite(lamps[8], HIGH);
    delay(500);
    digitalWrite(lamps[8], LOW);
    delay(500);
}

Video:

Uued funktsioonid:

sensorPin: Arduino analoogsisendi pinna number, millelt soovitakse andmeid lugeda (nt A0, A1, A2 jne).

analogRead(): Arduino funktsioon, mis loeb analoogsisendi pinna pinge väärtust. Tagastab väärtuse vahemikus 0 kuni 1023, olenevalt sisendpingest.

map(): Arduino funktsioon, mis teisendab ühe vahemiku väärtusi teise vahemikuks. Näiteks kasutatakse seda sageli analoogsisendi väärtuste kohandamiseks teisele skaalale. Funktsioon võtab argumendiks alg- ja sihtvahemiku piirid ning teisendatava väärtuse ning tagastab vastava väärtuse sihtvahemikus.