Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

Бутон: контролиране на светодиод чрез бутон

Бутонът е електронен компонент, който свързва две точки във веригата когато го натиснете. Примерът тук запалва светодиод когато натиснете бутона.

Трябва да се свържат три жици към Arduino платката. Първата минава от едното краче на бутона, през PULL UP резистор (в случая от 10к ома) към пина доставящ 5V напрежение. Втората жица минава от противоположното краче на бутона към масата (GND). Третата жица е свързана към цифров пин на платката (в нашия пример пин 2) който да отчита състоянието на бутона.

Когато бутонът е отворен (ненатиснат) няма връзка между двете му крачета и пинът е свързан към напрежението от 5V през PULL UP резистора и ще отчете HIGH. Когато бутонът е затворен (натиснат) се образува връзка между двете крачета, свързвайки пина към GND и ще отчете LOW. (Пинът все още е свързан и към напрежението от 5V, но резисторът между тях прави така че да е по-близо до масата GND.)

Може да обърнете тази верига като поставите PULL DOWN резистор (преместете резистора от крачето свързано към 5V на това свързано към GND и преместете жичката от GND към 5V). Така ще отчитаме LOW когато бутонът не е натиснат и HIGH когато е натиснат. Това ще обърне поведението на светодиода и той ще свети когато бутонът не е натиснат, изгасвайки когато бутона се натисне.

Ако разкачите цифровия пин от всичко останало, светодиода може да започне да мига на пресекулки. Това е защото показанието ще "плува" - ще връща LOW или HIGH на случаен принцип. Поради тази причина трябва във веригата да има PULL UP или PULL DOWN резистор.

Снимка

Схема

Код

/* Buton
* ------------
*
* kontrolira svetodiod s pomoshtta na buton
*
* ot DojoDave <https://www.0j0.org>
*
* podobrena ot Tom Igoe (Juni 2009)
*
* bulgarski prevod ot Simeon Ianchev / Robotev.com (Septemvri 2009)
*/

int ledPin = 13; 	        // pin za svetodioda 
int inPin = 2;   	        // pin za otchitane na pokazaniyata ot butona 
int val = 0;     		// promenliva za pokazaniyata ot vhodniya pin 

void setup() {
  pinMode(ledPin, OUTPUT);  	// deklarira pina na svetodioda kato izhod
  pinMode(inPin, INPUT);    	// deklarira pina na butona kato vhod 
}

void loop(){
  val = digitalRead(inPin);  	// otchita stoynostta ot vhodniya pin 
  if (val == HIGH) {         	// proveryava dali sustoyanieto e HIGH (butonat ne e natisnat) 
    digitalWrite(ledPin, LOW);  	// izgasva svetodioda 
  } else {
    digitalWrite(ledPin, HIGH);  	// zapalva svetodioda 
  }
}