2. Katse “Potentsiomeetri kasutamine”

Robootika “Potentsiomeetri kasutamine”

Potentsiomeeteri abil saate valida LED-pirni vilkumise intensiivsuse

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”

Robootika “Valguskett”

Töö kirjeldus Potentsiomeetri kasutamine

Valguskett, kus on 5 režiimi

Töö protsess

Potentsameetri abil saate valida, millist režiimi soovite näha

Kasutatud komponeendid

  • Juhtmed (14tk)
  • LED (9tk: 3 punane, 3 roheline, 3 kollane)
  • Potentsiomeeter(1tk)
  • Arduino UNO plaat (1tk)
  • Arendusplaat (1tk)
  • Takisti (9tk, 220Om)

Skeem

Kood

int PontiPin=A0;

int LEDred1=13;
int LEDyellow1=12;
int LEDgreen1=11;
int LEDred2=10;
int LEDyellow2=9;
int LEDgreen2=8;
int LEDred3=7;
int LEDyellow3=6;
int LEDgreen3=5;

int PontValue=0;
int Uus_Value;

void setup()
{
  pinMode(LEDred1,OUTPUT);
  pinMode(LEDred2,OUTPUT);
  pinMode(LEDred3,OUTPUT);
  pinMode(LEDyellow1,OUTPUT);
  pinMode(LEDyellow2,OUTPUT);
  pinMode(LEDyellow3,OUTPUT);
  pinMode(LEDgreen1,OUTPUT);
  pinMode(LEDgreen2,OUTPUT);
  pinMode(LEDgreen3,OUTPUT);
 
  
}

void red() {
  digitalWrite(LEDred1, HIGH);
  digitalWrite(LEDred2, HIGH);
  digitalWrite(LEDred3, HIGH);
  delay(100);
  digitalWrite(LEDred1, LOW);
  digitalWrite(LEDred2, LOW);
  digitalWrite(LEDred3, LOW);
  delay(100);
}

void yellow() {
  digitalWrite(LEDyellow1, HIGH);
  digitalWrite(LEDyellow2, HIGH);
  digitalWrite(LEDyellow3, HIGH);
  delay(200);
  digitalWrite(LEDyellow1, LOW);
  digitalWrite(LEDyellow2, LOW);
  digitalWrite(LEDyellow3, LOW);
  delay(200);
}

void green() {
  digitalWrite(LEDgreen1, HIGH);
  digitalWrite(LEDgreen2, HIGH);
  digitalWrite(LEDgreen3, HIGH);
  delay(100);
  digitalWrite(LEDgreen1, LOW);
  digitalWrite(LEDgreen2, LOW);
  digitalWrite(LEDgreen3, LOW);
  delay(200);
}

void koikvarvid(){
  digitalWrite(LEDred1, HIGH);
  digitalWrite(LEDred2, HIGH);
  digitalWrite(LEDred3, HIGH);
  digitalWrite(LEDyellow1, HIGH);
  digitalWrite(LEDyellow2, HIGH);
  digitalWrite(LEDyellow3, HIGH);
  digitalWrite(LEDgreen1, HIGH);
  digitalWrite(LEDgreen2, HIGH);
  digitalWrite(LEDgreen3, HIGH);
  delay(100);
  digitalWrite(LEDred1, LOW);
  digitalWrite(LEDred2, LOW);
  digitalWrite(LEDred3, LOW);
  digitalWrite(LEDyellow1, LOW);
  digitalWrite(LEDyellow2, LOW);
  digitalWrite(LEDyellow3, LOW);
  digitalWrite(LEDgreen1, LOW);
  digitalWrite(LEDgreen2, LOW);
  digitalWrite(LEDgreen3, LOW);
  delay(100);
}

void uksvarv() {
  for(int i=0; i<3; ++i) {
    digitalWrite(LEDred1, HIGH);
    delay(200);
    digitalWrite(LEDred1, LOW);
    digitalWrite(LEDyellow1, HIGH);
    delay(200);
    digitalWrite(LEDyellow1, LOW);
    digitalWrite(LEDgreen1, HIGH);
    delay(200);
    digitalWrite(LEDgreen1, LOW);
    digitalWrite(LEDred2, HIGH);
    delay(200);
    digitalWrite(LEDred2, LOW);
    digitalWrite(LEDyellow2, HIGH);
    delay(200);
    digitalWrite(LEDyellow2, LOW);
    digitalWrite(LEDgreen2, HIGH);
    delay(200);
    digitalWrite(LEDgreen2, LOW);
    digitalWrite(LEDred3, HIGH);
    delay(200);
    digitalWrite(LEDred3, LOW);
    digitalWrite(LEDyellow3, HIGH);
    delay(200);
    digitalWrite(LEDyellow3, LOW);
    digitalWrite(LEDgreen3, HIGH);
    delay(200);
    digitalWrite(LEDgreen3, LOW);
  }
}
void kaskvarv() 
{
  digitalWrite(LEDred1, HIGH);
  digitalWrite(LEDred2, HIGH);
  digitalWrite(LEDred3, HIGH);
  digitalWrite(LEDyellow1, HIGH);
  digitalWrite(LEDyellow2, HIGH);
  digitalWrite(LEDyellow3, HIGH);
  delay(500);
  digitalWrite(LEDred1, LOW);
  digitalWrite(LEDred2, LOW);
  digitalWrite(LEDred3, LOW);
  digitalWrite(LEDyellow1, LOW);
  digitalWrite(LEDyellow2, LOW);
  digitalWrite(LEDyellow3, LOW);
  
  digitalWrite(LEDyellow1, HIGH);
  digitalWrite(LEDyellow2, HIGH);
  digitalWrite(LEDyellow3, HIGH);
  digitalWrite(LEDgreen1, HIGH);
  digitalWrite(LEDgreen2, HIGH);
  digitalWrite(LEDgreen3, HIGH);
  delay(500);
  digitalWrite(LEDyellow1, LOW);
  digitalWrite(LEDyellow2, LOW);
  digitalWrite(LEDyellow3, LOW);
  digitalWrite(LEDgreen1, LOW);
  digitalWrite(LEDgreen2, LOW);
  digitalWrite(LEDgreen3, LOW);
  
  digitalWrite(LEDred1, HIGH);
  digitalWrite(LEDred2, HIGH);
  digitalWrite(LEDred3, HIGH);
  digitalWrite(LEDgreen1, HIGH);
  digitalWrite(LEDgreen2, HIGH);
  digitalWrite(LEDgreen3, HIGH);
  delay(500);
  digitalWrite(LEDred1, LOW);
  digitalWrite(LEDred2, LOW);
  digitalWrite(LEDred3, LOW);
  digitalWrite(LEDgreen1, LOW);
  digitalWrite(LEDgreen2, LOW);
  digitalWrite(LEDgreen3, LOW);
}
void uus_rezim() {
  
 digitalWrite(LEDred1, HIGH);
 digitalWrite(LEDred2, HIGH);
 digitalWrite(LEDred3, HIGH);
 digitalWrite(LEDyellow1, LOW);
 digitalWrite(LEDyellow2, LOW);
 digitalWrite(LEDyellow3, LOW);
 digitalWrite(LEDgreen1, LOW);
 digitalWrite(LEDgreen2, LOW);
 digitalWrite(LEDgreen3, LOW);
 delay(200);
 digitalWrite(LEDred1, LOW);
 digitalWrite(LEDred2, LOW);
 digitalWrite(LEDred3, LOW);
 digitalWrite(LEDyellow1, HIGH);
 digitalWrite(LEDyellow2, HIGH);
 digitalWrite(LEDyellow3, HIGH);
 digitalWrite(LEDgreen1, LOW);
 digitalWrite(LEDgreen2, LOW);
 digitalWrite(LEDgreen3, LOW);
 delay(200);
 digitalWrite(LEDred1, LOW);
 digitalWrite(LEDred2, LOW);
 digitalWrite(LEDred3, LOW);
 digitalWrite(LEDyellow1, LOW);
 digitalWrite(LEDyellow2, LOW);
 digitalWrite(LEDyellow3, LOW);
 digitalWrite(LEDgreen1, HIGH);
 digitalWrite(LEDgreen2, HIGH);
 digitalWrite(LEDgreen3, HIGH);
 delay(200);
 
}

void loop()
{ int Pot_Value = analogRead(PontiPin);
  int constrainedValue = constrain(Pot_Value, 0, 1023);
  int Uus_Value = map(constrainedValue, 0, 1023, 0, 6);
 
  switch (Uus_Value)
  { 
    case 0: red();
    break;
    case 1: yellow();
    break;
    case 2: green();
    break;
    case 3: koikvarvid();
    break;
    case 4: uksvarv();
    break;
    case 5: kaskvarv();
    break;
    case 6: uus_rezim();
   
    default: 
    digitalWrite(LEDred1, LOW);
    digitalWrite(LEDred2, LOW);
    digitalWrite(LEDred3, LOW);
    digitalWrite(LEDyellow1, LOW);
    digitalWrite(LEDyellow2, LOW); 
    digitalWrite(LEDyellow3, LOW);
    digitalWrite(LEDgreen1, LOW);
    digitalWrite(LEDgreen2, LOW);
    digitalWrite(LEDgreen3, LOW);
    break; 
  } 
}

Video

Uued funktsioonid

analogRead() – Loeb väärtust määratud analoogviigult
constrain() – Piirab arvu, et see oleks vahemikus.
map() – Kaardistab arvu ühest vahemikust teise. See tähendab, et väärtus fromLow saaks kaardistatud toLow, väärtus alatesHigh toHigh, väärtused vahel väärtuste vahel-vahel jne.
switch…case – Nagu If-i avaldused, kontrollib ka switch case programmide voolu, võimaldades programmeerijatel määrata erineva koodi, mida tuleks täita erinevates tingimustes.
pinMode() – Seadistab määratud viigu käituma kas sisendi või väljundina.
Serial.begin() – Määrab andmeedastuse kiiruse bittides sekundis (baud).