Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:arduino:buttons:project1 [2017/04/13 10:55] Somepubet:arduino:buttons:project1 [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 2: Line 2:
 ====== Projekt 1 LED-i juhtimine nupuga  ====== ====== Projekt 1 LED-i juhtimine nupuga  ======
  
-Ühendada Arduino plaadiga nupp, mille üks juhe on ühendatud maaga (GND) ja teine viiku A0. Valgusdioodi (LED-i) eraldi ühendada pole vaja kuna Arduino plaadil on üks LED juba olemas, mis on ühendatud viiku D13. Olenevalt Arduino arendusplaadist võib LED paikneda plaadil erinevas kohas ja olla erinevat värvi, kuid alati on ta ühendatud viiku D13.\\ +Lisada Arduino plaadile nupp, mille üks juhe ühendada maapotentsiaaliga (inglise keeles //ground//, lühend GND) ja teine mikrokontrolleri viiku A0. Valgusdioodi eraldi lisada pole vaja kuna Arduino plaadil on üks juba olemas, mis on ühendatud viiku D13. Olenevalt Arduino arendusplaadist võib LED paikneda plaadil erinevas kohas ja olla erinevat värvi, kuid alati on ta ühendatud viiku D13.\\ 
-**NB!** Kui nupul puudub jadamisi takisti, siis tuleb eriti tähelepanelikult jälgida, et nuppu ei ühendataks toite +5 V ja maa vahele, kuna tagajärjeks võib olla maha põlenud plaat.+**NB!** Kui nupul puudub jadamisi takisti, siis tuleb eriti tähelepanelikult jälgida, et nuppu ei ühendataks toitepotentsiaali (+5V) ja GND vahele, kuna tagajärjeks võib olla maha põlenud plaat.
  
 {{:et:arduino:buttons:projekt1.jpg?350|Arduino ühendusskeem}} {{:et:arduino:buttons:projekt1.jpg?350|Arduino ühendusskeem}}
  
-~~PB~~ 
 ===== Näide #1.1 Nuppu all hoides LED põleb ===== ===== Näide #1.1 Nuppu all hoides LED põleb =====
  
-Tegemist on lihtsa programmiga, kus nupu vajutamisel sisendviik A0 ühendub maaga ja mikrokontroller muudab selle peale väljundviigu D13 kõrgeks (annab välja +5 V). Tulemusena süttib Arduino plaadil D13 viiguga ühendatud LED. Programmi töötamiseks on eelnevalt vaja seadistada kasutatavad viigud. Kõik Arduino viigud on ohutuse mõttes tavaolekus sisendid. Seega üldiselt sisendeid eraldi seadistama ei pea. Samas puudub nupu oleku lugemisel vajalik //pull-up// takisti. Selle takisti puudumisel ei ole digitaalse sisendi olek kindlalt määratud (ei ole kõrge ega madal ehk hõljub olekute vahel). Seega on vaja kasutada mikrokontrolleri sisemist takistit. Selle kasutamiseks tuleb viik seadistada olekusse //INPUT_PULLUP//. LED-i põlema saamiseks on vaja seadistada viik D13 väljundiks ehk //OUTPUT//. Programmi peatsükkel (looppidevalt kontrollib sisendi olekut ja kui sisend on madal (kahendsüsteemis 0 ehk LOW), siis seatakse viik D13 kõrgeks (kahendsüsteemis 1 ehk HIGH). Vastasel juhul seatakse D13 madalaks.\\+Tegemist on lihtsa programmiga, kus nupu vajutamisel sisendviik A0 ühendub GND-ga ja mikrokontroller muudab selle peale väljundviigu D13 kõrgeks (+5 V). Tulemusena süttib Arduino plaadil D13 viiguga ühendatud LED. Programmi töötamiseks on eelnevalt vaja seadistada kasutatavad viigud. Kõik Arduino viigud on ohutuse mõttes tavaolekus sisendid. Seega üldiselt sisendeid eraldi seadistama ei pea. Samas puudub nupu oleku lugemisel vajalik //pull-up// takisti. Kasutame selleks mikrokontrolleri sisemist takistit, mille aktiveerimiseks tuleb viik seadistada olekusse //INPUT_PULLUP//. LED-i põlema saamiseks on vaja seadistada viik D13 väljundiks ehk //OUTPUT//. Programmi peatsüklis //loop// pidevalt kontrollitakse sisendi olekut ja kui see on madal (inglis keeles //LOW//), siis seatakse viik D13 kõrgeks (inglise keeles //HIGH//). Vastasel juhul seatakse D13 madalaks.\\
 Arduino digitaalsete viikude kohta saab lugeda rohkem siit: [[https://www.arduino.cc/en/Tutorial/DigitalPins|]]. Arduino digitaalsete viikude kohta saab lugeda rohkem siit: [[https://www.arduino.cc/en/Tutorial/DigitalPins|]].
  
Line 27: Line 26:
  
 /* Globaalsed muutujad */ /* Globaalsed muutujad */
-// Muutuja nupu oleku salvestamiseks ja selle algväärtustamine+// Nupu muutuja oleku salvestamine ja selle algväärtustamine
 int nupuOlek = 0;  int nupuOlek = 0; 
  
Line 34: Line 33:
   // LED viigu väljundi seadistamine    // LED viigu väljundi seadistamine 
   pinMode(led, OUTPUT);    pinMode(led, OUTPUT); 
-   
   // Nupu viigu sisendi seadistamine ja sisemise "pull-up" takisti aktiveermine   // Nupu viigu sisendi seadistamine ja sisemise "pull-up" takisti aktiveermine
   pinMode(nupp, INPUT_PULLUP);    pinMode(nupp, INPUT_PULLUP); 
Line 41: Line 39:
 void loop() void loop()
 { {
-  // Nupu muutuja hetke väärtuse salvestamine+  // Nupu muutuja hetkeväärtuse salvestamine
   nupuOlek = digitalRead(nupp);    nupuOlek = digitalRead(nupp); 
-   +  // Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib
-  // Kui nupp on alla vajutatud, siis seame LED viigu kõrgeks ehk LED süttib+
   if (nupuOlek == LOW)    if (nupuOlek == LOW) 
   {    { 
     digitalWrite(led, HIGH);     digitalWrite(led, HIGH);
   }    } 
-  // Muul juhul seame LED viigu madalaks ehk LED ei põle+  // Muul juhul seadistame LED viigu madalaks ehk LED ei põle
   else    else 
   { digitalWrite(led, LOW);   { digitalWrite(led, LOW);
Line 57: Line 54:
  
 ===== Näide #1.2 Nupule vajutades LED süttib 1 sekundiks ===== ===== Näide #1.2 Nupule vajutades LED süttib 1 sekundiks =====
-Programm kasutab näite #1.1 seadistusi. Võrreldes eelmise programmiga on juurde lisatud 1000 ms (millisekundi) pikkune viide pärast LED-i oleku kõrgeks muutmist. Lisatud rida koodis hoiab LED-i põlemas veel viite väärtuse võrra pärast nupu lahti laskmist. Antud meetod on otstarbekas, et paremini märgata sisendi muutust. Arduino viite funktsioonidest saab lähemalt uurida siit: [[https://www.arduino.cc/en/Reference/Delay|]]+Võrreldes eelmise programmiga on juurde lisatud 1000 ms (millisekundi) pikkune viide pärast LED-i oleku kõrgeks muutmist. Lisatud rida koodis hoiab LED-i põlemas veel viite väärtuse võrra pärast nupu lahti laskmist. Antud meetod on otstarbekas, et paremini märgata sisendi muutust. Arduino viitefunktsioonidest saab lähemalt uurida siit: [[https://www.arduino.cc/en/Reference/Delay|]]
  
 <code c> <code c>
Line 79: Line 76:
 void loop() void loop()
 { {
-  // Nupu muutuja hetke väärtuse salvestamine+  // Nupu muutuja hetkeväärtuse salvestamine
   nupuOlek = digitalRead(nupp);    nupuOlek = digitalRead(nupp); 
      
-  /* Kui nupp on alla vajutatud, siis seame LED viigu kõrgeks ehk LED süttib,+  /* Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib,
      programm seisab 1 sekund ja pärast seda seatakse viik tagasi madalaks */      programm seisab 1 sekund ja pärast seda seatakse viik tagasi madalaks */
   if (nupuOlek == LOW)    if (nupuOlek == LOW) 
Line 94: Line 91:
  
 ===== Näide #1.3 Nupule vajutades muudab LED oma olekut ===== ===== Näide #1.3 Nupule vajutades muudab LED oma olekut =====
-Programm kasutab samuti näite #1.1 seadistusi. Peatsüklis //loop// LED oleku kõrgeks muutmisele järgneb //while// tsükkel, mis hoiab programmi kinni kuni nupp on lahti lastud ehk viigu olek muutub tagasi kõrgeks. Lisaks on juures viide enne //while// tsüklit ja pärast LED-i oleku muutmist. Konkreetsed viited on vajalikud nupu kontaktide põrkumisest tekkiva värelemise efekti (debounce) eemaldamiseks, sest vastasel juhul on LED-i oleku muutumine kaootiline. Kontaktide värelemise efektist võib lähemalt lugeda siit:[[https://www.arduino.cc/en/Tutorial/Debounce|]].+Peatsüklis //loop// LED oleku kõrgeks muutmisele järgneb //while// tsükkel, mis hoiab programmi kinni kuni nupp on lahti lastud ehk viigu olek muutub tagasi kõrgeks. Lisaks on juures viide enne //while// tsüklit ja pärast LED-i oleku muutmist. Konkreetsed viited on vajalikud nupu kontaktide põrkumisest tekkiva värelemise efekti (debounce) eemaldamiseks, sest vastasel juhul on LED-i oleku muutumine kaootiline. Kontaktide värelemise efektist võib lähemalt lugeda siit: [[https://www.arduino.cc/en/Tutorial/Debounce|]].
  
 <code c> <code c>
Line 125: Line 122:
      }      }
     /* LED viigu olek inverteeritakse ehk seatakse     /* LED viigu olek inverteeritakse ehk seatakse
-       vastupidiseks kasutades hetke väärtust */+       vastupidiseks kasutades hetkeväärtust */
     digitalWrite(led, !digitalRead(led));      digitalWrite(led, !digitalRead(led)); 
          
Line 135: Line 132:
  
  
-\\ 
 ===== Harjutused ===== ===== Harjutused =====
 === Harjutus #1.1 === === Harjutus #1.1 ===
et/arduino/buttons/project1.1492080938.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0