Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.12 KB | None | 0 0
  1. # Gömülü Sistemler Final Çalışması
  2.  
  3. ## Klasik Sorular
  4.  
  5. 1. Asagıdaki gibi 2x2 led matrix baglayınırsa istenilen satır ve sutuna baglı ledi yakan program yazın.
  6.  
  7. ```c
  8. const int rows[2] = {10, 11};
  9. const int cols[2] = {6, 5};
  10.  
  11.  
  12. void setup() {
  13. for (int i = 5; i <= 11; i++) {
  14. pinMode(i, OUTPUT);
  15. }
  16. }
  17.  
  18. void turn_on(int row, int col) {
  19. for (int i = 0; i < 2; i++) {
  20. digitalWrite(rows[i], (i == row ? HIGH : LOW));
  21. digitalWrite(cols[i], (i == col ? LOW : HIGH));
  22. }
  23. }
  24.  
  25. void loop() {
  26. i=intParse();
  27. j=intParse();
  28. turn_on(i, j);
  29. delay(200);
  30. }
  31. ```
  32.  
  33. 2. Iki buttonla led baglanan sistemde 1. Butuna basınca yakan, ikinci buton basınca söndüren program yazınız.
  34.  
  35. ```c
  36. byte pinLED1 = 12;
  37. byte button1 = 2;
  38. byte button2 = 3;
  39. int estadoLED1;
  40.  
  41. void setup() {
  42. pinMode(pinLED1, OUTPUT);
  43. pinMode(button1, INPUT);
  44. pinMode(button2, INPUT);
  45.  
  46. }
  47.  
  48. void loop() {
  49.  
  50. int buttondurum1 = digitalRead(button1); //led pin 2
  51. int buttondurum2 = digitalRead(button2); //led pin 3
  52.  
  53. if (buttondurum1 == HIGH) //Birinci butona basıldıysa
  54. LEDdurum = HIGH;
  55.  
  56. if (uttondurum2 == HIGH) //İkinci butona basıldıysa
  57. LEDdurum = LOW;
  58.  
  59. //LED duruma gore yak veya söndür
  60. digitalWrite(pinLED1, LEDdurum);
  61.  
  62. }
  63.  
  64. ```
  65. 3. Potansiyometre degerine göre led parlaklıgını yazdıran program yazın.
  66.  
  67. ```c
  68. int ledPin = 9; // LED pin 9 baglı
  69. int analogPin = 3; // potentiometer pin 3 baglı
  70.  
  71. int val = 0; // potansiyometre okunan deger
  72.  
  73. void setup()
  74. {
  75. pinMode(ledPin, OUTPUT); // sets the pin as output
  76. }
  77. void loop()
  78. {
  79. val = analogRead(analogPin); // read the input pin
  80. analogWrite(ledPin, val / 4); // potan okunan deger 0 -1023 arasındır, bunu 0-255 cevir
  81. // aynı işlem val = map(val, 0, 1023, 0, 255); ile de olur.
  82. }
  83.  
  84. ```
  85. 4. Aşağıdaki sisteme gore LEDin parlaklığını azar azar artıran ve sonra azaltan program yazın.
  86.  
  87. ```c
  88. /*
  89. Fading
  90.  
  91. */
  92.  
  93. int ledPin = 9;
  94.  
  95. void setup(){
  96. // pini output olarak tanımlamaya gerek yok.
  97. }
  98.  
  99. void loop(){
  100. for(int fadeValue = 0; fadeValue <= 255; fadeValue += 5) { //Parlıyor
  101. analogWrite(ledPin, fadeValue);
  102. delay(2);
  103. }
  104. for(int fadeValue = 255; fadeValue >= 0; fadeValue -= 5) { // Sönüyor
  105. analogWrite(ledPin, fadeValue);
  106. delay(2);
  107. }
  108. }
  109. ```
  110.  
  111. 5. Rasgele üretilen bir sayıya göre baglı olan LED pinlerini yakan program yazın.
  112.  
  113. ```c
  114. const int ledPin[] = {0,2,4,6,8,10,12,14,16}; //Led pinlerimiz
  115. int sayi1;
  116. int i;
  117.  
  118. void setup(){
  119. for(i= 0; i < 9;i++){//Led pinlerimizi çıkış olarak ayarladık
  120. pinMode(ledPin[i], OUTPUT);
  121. }
  122. }
  123.  
  124. void loop(){
  125.  
  126. sayi1 = random() % 9; //ilk rastgele değer
  127. digitalWrite(ledPin[sayi1], HIGH); //ledi yaktık
  128. delay(100);
  129. digitalWrite(ledPin[sayi1], LOW); //ledi söndürdük
  130. ```
  131.  
  132. 6. Potansiyometreden okunan deger kadar bekleyip led yakan ve sonduren programı yazınız.
  133.  
  134. ```c
  135. //Rast gele yak söndür
  136. const int ledPin=2; //Led pini
  137. const int potPin = A0; //Pot pini
  138. int potdeger;
  139. int i;
  140.  
  141. void setup(){
  142. pinMode(ledPin, OUTPUT);
  143. pinMode(potPin, INPUT); //Pot pini giriş olarak ayarladık
  144. }
  145.  
  146. void loop(){
  147. potdeger = analogRead(potPin); //potansiyometreden değeri okuduk
  148. digitalWrite(ledPin, HIGH);
  149. delay(potdeger);
  150. digitalWrite(ledPin, LOW); //ledi söndürdük
  151. delay(potdeger);
  152. }
  153. ```
  154.  
  155. 7. Okunan sıcaklık degerine göre eger sıcaklık 30 dereceden buyukse sık sık(200 mili saniye) blink, yoksa seyrek(1000 milisaniye) blink yapan program yazın.
  156. ```c
  157. float tempC;
  158. int tempPin = 0; // ısı sensoru 0 pine baglı
  159. int ledPin = 9; // LED pin 9 baglı
  160.  
  161. void setup()
  162. {
  163. Serial.begin(9600);
  164. pinMode(ledPin, OUTPUT); // Led pin output
  165. }
  166. void loop()
  167. {
  168. tempC = analogRead(tempPin); // ısı sensor oku
  169. tempC = (5.0 * tempC * 100.0)/1024.0; // degeri santigrata cevir
  170. if tempC>30
  171. digitalrite)ledPin,HIGH);
  172. else
  173. digitalrite)ledPin,LOW);
  174. Serial.print((byte)tempC); //sıcaklıgı ekrana yazar
  175. delay(1000); //wait one second
  176. }
  177. ```
  178. 8. Beş adet LED ve bir potansiyometre bağlı sistemde, eğer potansiyometre değeri:
  179. * 0-200 (200 dahil) : Birinci LEDi yakan
  180. * 200-400 (400 dahil) : İkinci LEDi yakan
  181. * 400-600 (600 dahil) : Üçüncü LEDi yakan
  182. * 600-800 (800 dahil) : Dördüncü LEDi yakan
  183. * 800-1000 (1000 dahil) : Beşinci LEDi yakan prgramı tazın.
  184.  
  185. ```c
  186. int analog = A2; //Analaog pini
  187. int led[] = {3,4,5,6,7,8}; //led pinleri
  188. int potdeger = 0;
  189.  
  190.  
  191. void setup(){
  192. for(int i= 1; i < 6 ; i++){
  193. pinMode(led[i], OUTPUT);
  194. }
  195. Serial.begin(9600);
  196. }
  197.  
  198. void loop(){
  199. potdeger = 0;
  200. potdeger = analogRead(analog); //potdegeri analogdan atanır
  201.  
  202. if(potdeger >= 0 && potdeger <= 200 ){ //sıra ile led ler yakılır
  203. digitalWrite(led[1],HIGH);
  204. digitalWrite(led[2],LOW);
  205. digitalWrite(led[3],LOW);
  206. digitalWrite(led[4],LOW);
  207. digitalWrite(led[5],LOW);
  208. }else if(potdeger <= 400 && potdeger >= 200){
  209. digitalWrite(led[1],LOW);
  210. digitalWrite(led[2],HIGH);
  211. digitalWrite(led[3],LOW);
  212. digitalWrite(led[4],LOW);
  213. digitalWrite(led[5],LOW);
  214. }else if(potdeger <= 600 && potdeger >= 400){
  215. digitalWrite(led[1],LOW);
  216. digitalWrite(led[2],LOW);
  217. digitalWrite(led[3],HIGH);
  218. digitalWrite(led[4],LOW);
  219. digitalWrite(led[5],LOW);
  220. }else if(potdeger <= 800 && potdeger >= 600){
  221. digitalWrite(led[1],LOW);
  222. digitalWrite(led[2],LOW);
  223. digitalWrite(led[3],LOW);
  224. digitalWrite(led[4],HIGH);
  225. digitalWrite(led[5],LOW);
  226. }else if(potdeger <=1000 && potdeger >= 800){
  227. digitalWrite(led[1],LOW);
  228. digitalWrite(led[2],LOW);
  229. digitalWrite(led[3],LOW);
  230. digitalWrite(led[4],LOW);
  231. digitalWrite(led[5],HIGH);
  232. }
  233. Serial.println(potdeger); //serial monitorden degeri okumak için
  234. delay(100);
  235. }
  236. ```
  237. 9. Sistemde biri yeşil diğeri kırmızı 2 LED ve 1 buton olsun. Butona her basıldığında bir LEDi yakıp diğerini söndüren program yazın.
  238. ```c
  239. int buttonPin=2; // Button Pini
  240. int greenLED=9; // Yeşil LED pini
  241. int redLED=10; // Kırmızı LED pini
  242.  
  243. void setup(){
  244. pinMode(buttonPin, INPUT);
  245. pinMode(greenLED, OUTPUT);
  246. pinMode(redLED, OUTPUT);
  247. durum = HIGH;
  248. }
  249.  
  250. void loop(){
  251. if (digitalRead(buttonPin)==HIGH){ // Butona basıldıysa
  252. digitalWrite(greenLED, durum); // yeşil LED durum sinyali
  253. digitalWrite(redLED, !durum); // kırmızı LED durum sinyali tersi
  254. durum = !durum;
  255. }
  256. }
  257. ```
  258.  
  259. 10. Sıcaklık sensöründe okunan değere gore, eğer sıcaklık 34 dereceden buyukse ekrana “Sogutucu açın” yazıp LED yakani aksi halde ekrana “Normal calısıyor” yazıp LED söndüren program yazın.
  260.  
  261. ```c
  262. void setup() {
  263. Serial.begin(9600);
  264. pinMode // ısı sensoru
  265. pinMode(9, OUTPUT);
  266. }
  267.  
  268. void loop() {
  269.  
  270. sicaklık =
  271.  
  272. if ( sıcaklık > 34 ){
  273. Serial.Println(“Sogutucu açın”);
  274. digitalWrite(9, HIGH) ;
  275. delay(6000);
  276. }
  277. else
  278. { Serial.Println(“Normal calısıyor”);
  279. digitalWrite(9, LOW) ;
  280. delay(6000);
  281. }
  282. }
  283. ```
  284.  
  285. 11. Işık sensorunden okunan değerlere gore LEDleri yakın, eğer değer:
  286.  
  287. * 300 den kucukse birinci LEDi yakan
  288.  
  289. * 300-350 arasındaysa birinci ve ikinci LEDi yakan
  290.  
  291. * 350-400 arasındaysa birnci ikinci ve ucuncu LEDi yakan
  292.  
  293. * 400 den buyukse 5 kere butun LEDleri yakıp ardından sonduren sinyal veren program yazınız.
  294.  
  295. ```c
  296. int photoIn = 0; // photoresistor on Analogue Pin 1, ışık sensoru
  297. int led2 = 2; // LED on Digital Pin 2
  298. int led3 = 3;
  299. int led4 = 4;
  300. int aiValue = 0; // input value
  301.  
  302. void setup()
  303. {
  304. Serial.begin (9600);
  305. pinMode(led2, OUTPUT); // Configure the Digital Pin Direction for the LED
  306. pinMode(led3, OUTPUT); // Configure the Digital Pin Direction for the LED
  307. pinMode(led4, OUTPUT); // Configure the Digital Pin Direction for the LED
  308. }
  309. void loop() {
  310. aiValue = analogRead(photoIn); // Analog değeri oku
  311. Serial.println (aiValue);
  312. delay(500);
  313.  
  314. if (aiValue < 300)
  315. {
  316. digitalWrite(led2, HIGH); // It has got dark, turn the LED on.
  317. }
  318.  
  319. if (aiValue > 300 && aiValue < 350)
  320. {
  321. digitalWrite(led2, HIGH);
  322. digitalWrite(led3, HIGH); // It has got dark, turn the LED on.
  323. }
  324.  
  325. if (aiValue > 350 && aiValue < 400)
  326. {
  327. digitalWrite(led2, HIGH);
  328. digitalWrite(led3, HIGH);
  329. digitalWrite(led4, HIGH);
  330. }
  331.  
  332. if (aiValue > 400)
  333. {
  334. for (int x=0; x<5; x++)
  335. {
  336. digitalWrite(led2, HIGH);
  337. digitalWrite(led3, HIGH);
  338. digitalWrite(led4, HIGH);
  339. delay(200);
  340. digitalWrite(led2, LOW);
  341. digitalWrite(led3, LOW);
  342. digitalWrite(led4, LOW);
  343. delay(200);
  344. }
  345. }
  346. }
  347.  
  348. ```
  349.  
  350. 12. Verilen farklı sıralamalarda LEDleri yakınız, orneğin : {0, 1, 0, 1, 0, 1 } sıralamasında LED sırasıyla ilk led sonuk, sonraki yanık, sonraki sonuk, sonraki yanık olacak.
  351.  
  352. ```c
  353. int LEDCOUNT = 6;
  354. int pwmLEDPins[6] = {3, 5, 6, 9, 10, 11};
  355. void setup() {
  356. Serial.begin(9600);
  357. for (int i = 0; i < LEDCOUNT; i++) {
  358. pinMode(pwmLEDPins[i], OUTPUT);
  359. }
  360. }
  361. void loop() {
  362. seqOne();
  363. seqTwo();
  364. turnAll(HIGH);
  365. delay(2000);
  366. }
  367. void seqOne() {
  368. int seqOne[6] = {0, 0, 0, 0, 0, 0 };
  369. for (int j = 0; j < 5; j++) {
  370. for (int i = 0; i < LEDCOUNT; i++) {
  371. digitalWrite(pwmLEDPins[i], seqOne[i]);
  372. delay(50);
  373. }
  374. }
  375. }
  376.  
  377. void seqTwo() {
  378. int seqTwo[6] = {0, 1, 0, 1, 0, 1 };
  379. for (int j = 0; j < 5; j++) {
  380. for (int i = 0; i < LEDCOUNT; i++) {
  381. digitalWrite(pwmLEDPins[i], seqTwo[i]);
  382. delay(100);
  383. }
  384. }
  385. }
  386.  
  387.  
  388. void turnAll(int value) {
  389. for (int i = 0; i < LEDCOUNT; i++) {
  390. digitalWrite(pwmLEDPins[i], value);
  391. }
  392. }
  393.  
  394. ```
  395.  
  396. 13. “12 metreye” kadar ptansiyometre kontrollu bir digitalmetre yapılacaktır. Buna gore her metre için bir LED bağlanacaktır. Potansiyometre dondukce ilgili metreyi gosteren program yazınız.
  397.  
  398. ```c
  399. int potPin = 0;
  400. int i = 0;
  401.  
  402. void setup()
  403. {
  404. pinMode(1, OUTPUT);
  405. pinMode(2, OUTPUT);
  406. pinMode(3, OUTPUT);
  407. pinMode(4, OUTPUT);
  408. pinMode(5, OUTPUT);
  409. pinMode(6, OUTPUT);
  410. pinMode(7, OUTPUT);
  411. pinMode(8, OUTPUT);
  412. pinMode(9, OUTPUT);
  413. pinMode(10, OUTPUT);
  414. pinMode(11, OUTPUT);
  415. pinMode(12, OUTPUT);
  416.  
  417. }
  418.  
  419. void loop()
  420. {
  421. for (i = 1; i<=12; i++);
  422. digitalWrite(i, LOW);
  423.  
  424. int val = analogRead(potPin);
  425. int count = map(val, 0, 1023, 0, 12);
  426.  
  427. for (i = 1; i<=12; i++)
  428. if (i<=count)
  429. {
  430. digitalWrite(i, HIGH);
  431. }
  432. else
  433. {
  434. digitalWrite(i, LOW);
  435. }
  436.  
  437.  
  438. }
  439. ```
  440.  
  441. 14. Bir Digital thermometer yapılacaktır. Termometre 20 derecen itibaren 2ser 2ser ısı deregerlerini gosterecek 6 led baglanacaktır. Eger ısı 20-21 ise brinci LED, 22-23 ise birici ve ikinci, 24-25 ise birinci ikinci ve ucuncu….. program yazın.
  442.  
  443. ```c
  444. float temperature;
  445. int sensorPin = 0;
  446. int startTemp=20;
  447. void setup()
  448. {
  449. Serial.begin(9600);
  450. for (int i=2;i<8; i++){ // output channels from 2 to 7
  451. pinMode(i,OUTPUT); // pin is a output
  452. }
  453. }
  454.  
  455. void loop()
  456. {
  457. temperature = analogRead(sensorPin); // reading analog sensor value LM35
  458. temperature = temperature*0.488; // celcius
  459.  
  460. for (int i=0;i<8; i++){
  461. if (temperature>((i*2)+startTemp)){
  462. digitalWrite(i,HIGH);
  463. }
  464. else {
  465. digitalWrite(i,LOW);
  466. }
  467. }
  468.  
  469. Serial.println(temperature);
  470. delay(500);
  471. }
  472.  
  473. ```
  474.  
  475.  
  476. 15. Ultraosnic sensörden değer okuyup, distance=(duration/2/29 formülü kullanarak measafe bulan, Eger mesafe degeri(distance) 7 den buyukse ekrana “ileri git ” yazdıran, Degilse ekrana “sola dön” yazdıran program yazınız.
  477.  
  478. ```c
  479. duration = pulseIn(echoPin, HIGH);
  480. distance=(duration/2)/29.1;
  481. Serial.println(“”);
  482. Serial.println(distance);
  483. if(distance >7)
  484. {
  485. Serial.println(“ileri git”);
  486. }
  487. else // engel
  488. {
  489. Serial.println(“sola dön”);
  490. }
  491. }
  492. ```
  493.  
  494. 16. Load cell sensöründen değer okuyup 20 lik dizide tutan ve ortalama değeri hesaplayan programı yazın.
  495.  
  496. ```c
  497. readings[index] = analogRead(loadCell); // read from the sensor
  498. total= total + readings[index]; // add the reading to the total:
  499. index = index + 1; // advance to the next position in the array:
  500. if (index >= numReadings) // if we're at the end of the array wrap around to the beginning
  501. index = 0;
  502. Average = total / numReadings;
  503. ```
  504.  
  505. 17. Seriporttan r,g,b degerleri string halinde gönderen ve sonra rgb ledde yaktıran kodu yazın:
  506. ```c
  507. void setup()
  508. {
  509. pinMode(kirmiziPin, OUTPUT);
  510. pinMode(yesilPin, OUTPUT);
  511. pinMode(maviPin, OUTPUT);
  512. Serial.begiin(9600);
  513. }
  514. void loop() {
  515. String readString;
  516. int commaIndex = myString.indexOf(',');
  517. int secondCommaIndex = myString.indexOf(',', commaIndex + 1);
  518.  
  519. if (Serial.available() > 0) {
  520. if (Serial.available()) {
  521. char c = Serial.read(); //gets one byte from serial buffer
  522. if (c == '\n'') {
  523. String firstValue = myString.substring(0, commaIndex);
  524. String secondValue = myString.substring(commaIndex + 1, secondCommaIndex);
  525. String thirdValue = myString.substring(secondCommaIndex + 1); // To the end of the string
  526. int r = firstValue.toInt();
  527. int g = secondValue.toInt();
  528. int b = thirdValue.toInt();
  529. analogWrite(kirmiziPin, r);
  530. analogWrite(yesilPin, g);
  531. analogWrite(maviPin, b);
  532.  
  533. }
  534. else {
  535. readString += c; //makes the string readString
  536. }
  537.  
  538. // veya readbytes until veya readstring de kullanılabilir
  539. // String first = Serial.readStringUntil(',');
  540. // Serial.read(); //next character is comma, so skip it using this
  541. // String second = Serial.readStringUntil(',');
  542. // Serial.read();
  543. // String third = Serial.readStringUntil('\0');
  544. ```
  545.  
  546. 18. Sekildeki gibi gaussmetre yazın.
  547.  
  548. ```c
  549. /*
  550. GaussPlot
  551. (Miniature Radiometric Linear Hall Efect Sensor)
  552. Sensor connected to Analog channel 0.
  553. */
  554. #define XRANGE 50
  555. int x,gss;
  556. void setup(){
  557. Serial.begin(9600);
  558. }
  559. void loop(){
  560. int aValue =analogRead(0);
  561. x = map(aValue, 0, 1024, 0, XRANGE);
  562. gss = map(aValue, 102, 922, -640, 640);
  563. Serial.print("|");
  564. for (int i=0;i<x;i++){
  565. if(i==XRANGE/2-1)Serial.print("|");
  566. else Serial.print("-");
  567. }
  568.  
  569. Serial.print("O");
  570. for (int i=x+1;i<XRANGE;i++){
  571. if(i==XRANGE/2-1)Serial.print("|");
  572. else Serial.print("-");
  573. }
  574. Serial.print("|");
  575. Serial.print(gss);
  576. Serial.println("Gauss");
  577. delay(100);
  578. }
  579. ```
  580.  
  581. 19. Loadcell ile 10 tane okuma yapıp, ortalamsını veren kodu yazın:
  582.  
  583. ```c
  584. /*
  585. Stage 1 sketch for the load cell
  586. Stage 1 simply sets up the load cell and take an analogue reading.
  587. */
  588. int loadCell = A1; //output from load cell
  589. int analogValue = 0;
  590. const int numReadings = 10; //determines the number of values in the rolling average
  591. int readings[numReadings]; // the readings from the analog input
  592. int index = 0; // the index of the current reading
  593. int total = 0; // the running total
  594. int rollingAverage = 0; // the rolling average reading
  595. void setup()
  596. {
  597. Serial.begin(9600);
  598. for (int thisReading = 0; thisReading < numReadings; thisReading++) //This need to be in the set-up section to aviod resetting the array in the loop
  599. readings[thisReading] = 0; // initialize all the readings in the array to 0
  600. }
  601. void loop(){
  602. analogValue = analogRead(loadCell);
  603. rollingReading();
  604. Serial.print(analogValue);
  605. Serial.print(", ");
  606. Serial.println(rollingAverage);
  607. delay(500);
  608. }
  609. void rollingReading() {
  610. total= total - readings[index]; // subtract the last reading
  611. readings[index] = analogRead(loadCell); // read from the sensor
  612. total= total + readings[index]; // add the reading to the total:
  613. index = index + 1; // advance to the next position in the array:
  614. if (index >= numReadings) // if we're at the end of the array wrap around to the beginning
  615. index = 0;
  616. rollingAverage = total / numReadings;
  617. // Serial.println(rollingAverage);
  618. delay(1); // delay in between reads for stability
  619. }
  620.  
  621. ```
  622.  
  623. 20. “2 nolu” interrupt pininden veri alıp kontrolet fonksiyonuna gidip …sıcaklık control edip led control eden interrupt yazın
  624. ```c
  625. int pin = 10;
  626. volatile int durum = LOW;
  627. void setup()
  628. { pinMode(pin, OUTPUT);
  629. digitalWrite(2, HIGH);
  630. attachInterrupt(0, kontrolet, FALLING);
  631. }
  632. void loop()
  633. { }
  634. void kontrolet()
  635. {
  636. if(durum == LOW) {
  637. durum = HIGH;
  638. } else {
  639. state = LOW;
  640. }
  641. digitalWrite(pin, state);
  642. }
  643. ```
  644.  
  645. 21. Timer interrupt kullanarak bir ledi 1 er saniye aralıklarla yakıp söndürelim ve her 3 saniyede bir başka bir ledi yakıp söndürmek yada başka bir buton durumunu kontrol etmek istersek timer interruptlarını kullanırız.
  646.  
  647. ```c
  648. #include <TimerOne.h>
  649. void setup()
  650. {
  651. pinMode(13, OUTPUT);
  652. Timer1.initialize(100000); // 1 saniyede tetiklenmesi
  653. Timer1.attachInterrupt( kontrolet );
  654. }
  655. void loop()
  656. { }
  657. void kontrolet()
  658. {
  659. // Toggle LED
  660. digitalWrite( 13, digitalRead( 13 ) ^ 1 );
  661. }
  662. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement