2. Teema: Potentsiomeetri kasutamine

2. Katse -Potentsiomeetri kasutamine-

Kood

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

Töö kirjeldus

Когда ты крутишь ручку (потенциометр), светодиоды начинают работать по-разному.
Могут мигать, загораться все сразу, включаться по очереди — всего 5 разных режимов.
За это отвечает плата Arduino, она читает значение с ручки и включает нужный эффект.

Kasutatud komponenid

  • Arduino UNO plaat (1tk)
  • Arendusplaat (1tk)
  • 250 kΩ Potentiometer (1tk)
  • 220 Ω Takisti (6tk)
  • Juhtmed (17tk)
  • LED (6tk: 2 punane, 2 sinine, 1 roheline, 1 kollane)

Töö protsess:

Подключили светодиоды
Подключили 6 светодиодов к пинам на Arduino — каждый к своему выходу.

Подключили потенциометр
Соединили ручку (потенциометр) с аналоговым входом A0. Это нужно, чтобы считывать, как сильно крутим.

Написали программу
В программе Arduino читается значение с ручки и выбирается один из 5 режимов:

  • мигание по очереди (случайно)
  • быстрое мигание (Режим полицейский)
  • все загораются и гаснут
  • все горят постоянно
  • сначала горят 3, потом другие 3

Загрузили скетч в Arduino
Подключили Arduino к компьютеру, загрузили код через программу Arduino IDE.

Тестировали работу
Крутили ручку и смотрели, как меняется поведение светодиодов.

Kasutamisvõimalused tavaelus

Световые эффекты для декора
Можно использовать такие мигающие светодиоды для украшения комнаты, вечеринки или витрины.

Игрушки и поделки
Можно встроить в самодельные игрушки или макеты, где важно, чтобы свет загорался по-разному.

Прототип умного освещения
Это простой пример, как можно регулировать освещение вручную — похожий принцип можно применить и в “умном доме”.

Skeem:

Programm:

int RED_LED_PIN = 13;
int GREEN_LED_PIN = 12;
int ORANGE_LED_PIN = 11;
int BLUE_LED_PIN = 10;
int YELLOW_LED_PIN = 9;
int WHITE_LED_PIN = 8;
 
int sensorPin = A0; 
int sensorValue = 0;
 
int ledPins[] = {RED_LED_PIN, GREEN_LED_PIN, ORANGE_LED_PIN, BLUE_LED_PIN, YELLOW_LED_PIN, WHITE_LED_PIN};
int ledCount = 6;
 
int mode = 1; // default blinkmode
 
void setup()
{
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(ORANGE_LED_PIN, OUTPUT);
  pinMode(BLUE_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(WHITE_LED_PIN, OUTPUT);
 
  Serial.begin(9600);
}
 
void loop()
{
  sensorValue = analogRead(sensorPin);
 
  ledCount = map(sensorValue, 0, 1023, 0, 6);

  Serial.print("Sensor Value: ");
  Serial.print(sensorValue);
  Serial.print(" - Mode: ");
  Serial.println(mode);
 

  delay(50);
 
  // Определение режима работы на основе значения потенциометра:
  if (sensorValue < 250) 
  {
    mode = 1; // blinkmode
  } 
  else if (sensorValue < 450)
  {
    mode = 2; // uleminek
  }
  else if (sensorValue <700)
  {
    mode = 3; // polebtuhmub
  }
  else if (sensorValue <950)
  {
    mode = 5; //pool
  }
  else
  {
    mode = 4; //poleb
  }
 
  // Вызов соответствующего режима
  if (mode == 1) 
  {
    blinkmode();
  } 
  else if (mode == 2) 
  {
    uleminek();
  }
  else if (mode == 3)
  {
    polebtuhmub();
  }
  else if (mode == 4)
  {
    poleb();
  }
  else
  {
    pool();
  }
   
}
 // Режим 1: Мигание - каждый LED включается и выключается случайным образом
void blinkmode()
{

  if (random(0, 2)) {
    digitalWrite(RED_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(RED_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(GREEN_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(GREEN_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(ORANGE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(ORANGE_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(BLUE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(BLUE_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(YELLOW_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(YELLOW_LED_PIN, LOW);
    delay(random(50, 500));
  }
  if (random(0, 2)) {
    digitalWrite(WHITE_LED_PIN, HIGH);
    delay(random(50, 500));
    digitalWrite(WHITE_LED_PIN, LOW);
    delay(random(50, 500));
  }
}
 // Режим 2: полицейски режим
void uleminek() {
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
  delay(50);
 
  for (int i = 0; i < ledCount; i++) {
    digitalWrite(ledPins[i], LOW);
  }
}
 // Режим 3: Горят - Гаснут - все светодиоды включаются и выключаются через 1 секунду
void polebtuhmub()
{
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
   
  delay(1000); 
   
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(GREEN_LED_PIN, LOW);
  digitalWrite(ORANGE_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  digitalWrite(WHITE_LED_PIN, LOW);
   
  delay(1000); 
}
 // Режим 4: Постоянно горят - все светодиоды включены
void poleb()
{
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
}
 // Режим 5: Половина - сначала горят 3 первые, потом 3 последние
void pool()
{
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(GREEN_LED_PIN, HIGH);
  digitalWrite(ORANGE_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  digitalWrite(WHITE_LED_PIN, LOW);
   
  delay(1000);
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(GREEN_LED_PIN, LOW);
  digitalWrite(ORANGE_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  digitalWrite(WHITE_LED_PIN, HIGH);
   
  delay(1000); 
}

Video: