Valguskett

——Katse 2——


Valguskett – keti kujul kootud lilled ja rohelus, samuti selle kujuga ornament.
Kasutatakse jõulupuude, sisustusesemete, erinevate arhitektuurielementide ja üldse hoonete kaunistamiseks.

Kõigepealt tuleb paigutada LED ja potentsiomeeter maketeerimislauale ja ühendada need, sarnaselt joonisel kujutatule arendusplaadiga.

LED vilgutamise kiiruse reguleerimiseks kasutatakse potentsiomeetrit.

-----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.         

}
katse2_pote


Ulessane:
Kirilliga tegime pärja. Sellel on 4 režiimi (1 – punane, 2 – kollane, 3 – roheline, 4 – rida, 5 – segatud)!
Komponendid:
See sisaldab üle 12 juhtme, 6 takistit, 6 lambipirni ja ühte potentsiometer.
Koodiga oli probleeme, kus ta ei näinud potentsiomeetrit ja ei tahtnud LED-ide värvi muuta.


See on video koos oma valguskett.
https://youtube.com/shorts/ng0EZkpArMw?feature=share

Selline näeb välja meie vaniku ehitusskeem

Ja see on oma kood

// C++ code
//

int sensorPin = 0;

int ledgreen1 = 13; // green 1
int ledyellow1 = 12; // yellow 1
int ledred1 = 11; // red 1
int ledyellow2 = 10; // yellow 2
int ledgreen2 = 9; // green 2
int ledred2 = 8; // red 2
int ledredOff = 2;

int sensorValue = 0;
int Value_new;
 

void setup()
{
  pinMode(ledgreen1, OUTPUT);
  pinMode(ledyellow1, OUTPUT);
  pinMode(ledred1, OUTPUT);
  pinMode(ledyellow2, OUTPUT);
  pinMode(ledgreen2, OUTPUT);
  pinMode(ledred2, OUTPUT);
  pinMode(ledredOff, OUTPUT);
}






void green() {
	digitalWrite(ledgreen1, HIGH);
    digitalWrite(ledgreen2, HIGH);
    delay(500);
    digitalWrite(ledgreen1, LOW);
    digitalWrite(ledgreen2, LOW);
  	delay(500);
}

void yellow() {
  	digitalWrite(ledyellow1, HIGH);
    digitalWrite(ledyellow2, HIGH);
    delay(500);
    digitalWrite(ledyellow1, LOW);
    digitalWrite(ledyellow2, LOW);
  	delay(500);
}

void red() {
  	digitalWrite(ledred1, HIGH);
    digitalWrite(ledred2, HIGH);
    delay(500);
    digitalWrite(ledred1, LOW);
    digitalWrite(ledred2, LOW);
  	delay(500);
}
void mixed() {
  	digitalWrite(ledgreen1, HIGH);
  	digitalWrite(ledred1, HIGH);
  	delay(500);
  	digitalWrite(ledgreen1, LOW);
  	digitalWrite(ledred1, LOW);
  	digitalWrite(ledyellow1, HIGH);
  	digitalWrite(ledgreen2, HIGH);
  	delay(500);
  	digitalWrite(ledyellow1, LOW);
  	digitalWrite(ledgreen2, LOW);
  	digitalWrite(ledyellow2, HIGH);
  	digitalWrite(ledred2, HIGH);
  	delay(500);
  	digitalWrite(ledyellow2, LOW);
  	digitalWrite(ledred2, LOW);
  	
  	
}
void line() {
  digitalWrite(ledgreen1, HIGH);
  delay(100);
  digitalWrite(ledgreen1, LOW);
  digitalWrite(ledyellow1, HIGH);
  delay(100);
  digitalWrite(ledyellow1, LOW);
  digitalWrite(ledred1, HIGH);
  delay(100);
  digitalWrite(ledred1, LOW);
  digitalWrite(ledyellow2, HIGH);
  delay(100);
  digitalWrite(ledyellow2, LOW);
  digitalWrite(ledgreen2, HIGH);
  delay(100);
  digitalWrite(ledgreen2, LOW);
  digitalWrite(ledred2, HIGH);
  delay(100);
  digitalWrite(ledred2, LOW);
  
}
void loop()
{
  	Value_new = analogRead(sensorPin);
  	
  	Value_new = map(Value_new, 0, 1023, 1, 6);
  if (Value_new == 2) {
  	green();
}
  else if (Value_new == 3) {
   yellow(); 
  }
  else if (Value_new == 4){
   	red(); 
  }
  else if (Value_new == 5){
   	 mixed();
  }
  else if (Value_new == 1) {
   	line();
  }
  else {
    digitalWrite(ledgreen1, LOW);
  	digitalWrite(ledgreen2, LOW);
  	digitalWrite(ledyellow1, LOW);
  	digitalWrite(ledyellow2, LOW);
  	digitalWrite(ledred1, LOW);
  	digitalWrite(ledred2, LOW);
    digitalWrite(ledredOff, HIGH);
  }

}

Meil on kaks koodi, üks potentsiomeetriga ja teine ​​ilma selleta, see töötab järjestikku


See on valguskett skeem on tinkercad:

https://youtu.be/lFzNNGKeypE
https://youtu.be/lFzNNGKeypE


See on teine kood:

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinM
ode(8, OUTPUT);
  pinMode(2, OUTPUT);
}

void loop()
{
/*
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
*/
 digitalWrite(2, HIGH);
  
   if (digitalRead(2) == HIGH) {
       // ----- green
     delay(1200);
     digitalWrite(13, HIGH);
       digitalWrite(9, HIGH);
       delay(1200);
       delay(1200);
       digitalWrite(13, LOW);
       digitalWrite(9, LOW);
       // ------ yellow
       delay(200);
       digitalWrite(12, HIGH);
        digitalWrite(10, HIGH);
       delay(1200);
       delay(1200);
  digitalWrite(12, LOW);
        digitalWrite(10, LOW);
       // ------- red
  delay(200);
       digitalWrite(11, HIGH);
       digitalWrite(8, HIGH);
       delay(1200);
       delay(1200);
       digitalWrite(11, LOW);
       digitalWrite(8, LOW);
       // ------- 2x2
       delay(200);
       digitalWrite(13, HIGH);
       digitalWrite(12, HIGH);
       delay(1200);
       digitalWrite(13, LOW);
       digitalWrite(12, LOW);
       digitalWrite(11, HIGH);
       digitalWrite(10, HIGH);
       delay(1200);
       digitalWrite(11, LOW);
       digitalWrite(10, LOW);
       digitalWrite(9, HIGH);
       digitalWrite(8, HIGH);
       delay(1200);
       digitalWrite(9, LOW);
       digitalWrite(8, LOW);
  }
}

Samuti õppisin koodi kirjutamisel enda jaoks paar käsku, mis olid kasulikud ka potentsiomeetriga koodi kirjutamisel

Naiteks:
analogRead() – Funktsioon loeb väärtuse määratud analoogsisendist. Enamikul Arduino plaatidel on 6 kanalit (8 kanalit Mini ja Nano plaatide jaoks, 16 Mega jaoks) koos 10-bitise analoog-digitaalmuunduriga
Map()Selle funktsiooni peamine eesmärk on teada saada, kas konteineris on teatud võti.

  1. Kui see on olemas, edastage iteraator selle asukohta.
  2. Kui seda seal pole, viige iteraator konteineri lõppu.

constrain() – Функция проверяет и если надо задает новое значение, так чтобы оно была в области допустимых значений, заданной параметрами
Random() – Juhuslike arvude genereerimiseks