๐Ÿ’ป My Work/โœจ Arduino

[์•„๋‘์ด๋…ธ] ์‹ ํ˜ธ๋“ฑ ๋งŒ๋“ค๊ธฐ, ํ‘ธ์‹œ(Push)๋ฒ„ํŠผ - Pull Down, Pull Up

Jaeseo Kim 2022. 11. 22. 20:07
  • ๋‹ค ์—ฐ๊ฒฐํ•ด์„œ ํ•œ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๋ฉด, ํ•˜๋‚˜ ๊ณ ์žฅ๋‚ฌ์„ ์‹œ ๋ญ๊ฐ€ ๊ณ ์žฅ๋‚ฌ๋Š”์ง€ ๋ชจ๋ฆ„
  • ๋ชจ๋“ˆํ™” ํ•ด์„œ ๊ฐ๊ฐ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ.

 

 

์‹ ํ˜ธ๋“ฑ ๋งŒ๋“ค๊ธฐ


๋นจ๊ฐ„๋ถˆ 3์ดˆ, ๋…ธ๋ž€๋ถˆ 1์ดˆ, ์ดˆ๋ก๋ถˆ 2์ดˆ ๊นœ๋นก์ด๊ธฐ๋ฅผ ๋ฐ˜๋ณต

  • loop ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋งจ ๋งˆ์ง€๋ง‰์— ๋ฐ”๋€ ์ƒํƒœ ๊ทธ๋Œ€๋กœ ๋‹ค์‹œ ์‹œ์ž‘๋จ.

 

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop()
{
  digitalWrite(13, HIGH);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
  delay(3000); // Wait for 1000 millisecond(s)

  digitalWrite(13, LOW);
  digitalWrite(12, HIGH);
  digitalWrite(11, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
    
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, HIGH);
  delay(2000); // Wait for 1000 millisecond(s)
}

 

 

 

 

๐Ÿ“Œ Push ๋ฒ„ํŠผ


์‹ ํ˜ธ

  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๋™์•ˆ 1
  • ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ง€ ์•Š๋Š” ๋™์•ˆ 0

๋‹จ์ž

  • 1a  - 1b
    2a  - 2b

  • ํ…Œ์Šคํ„ฐ๊ธฐ๋กœ ๋‹จ์ž ๊ตฌ๋ถ„ํ•˜๊ธฐ

  • ํ…Œ์Šคํ„ฐ๊ธฐ ์—†์„ ๋•, ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ

 

 

 

โœจ ๋ฒ„ํŠผ์œผ๋กœ LED ์ œ์–ดํ•˜๊ธฐ

Pull Down ๋ฐฉ์‹(๋‚ด๋ถ€ ์ €ํ•ญ ๊ธฐ๋ณธ๊ฐ’) 

  • ์Šค์œ„์น˜ ์•ˆ ๋ˆ„๋ฅด๋ฉด 0
  • ์Šค์œ„์น˜ ๋ˆ„๋ฅด๋ฉด 1
  • Pin์„ GND(0V)์— ์—ฐ๊ฒฐ

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(2, INPUT);
}

void loop()
{
	// 1 or 0 ๋ฆฌํ„ด
  int readValue=digitalRead(2);
  
    // ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ ธ ์žˆ์„ ๊ฒฝ์šฐ
  if(readValue == HIGH){
    digitalWrite(13, LOW);
  }
  else{
  	digitalWrite(13, HIGH);
  }
}
pinMode(2, INPUT);

 

 

 

Pull Up๋ฐฉ์‹

  • ์Šค์œ„์น˜ ์•ˆ ๋ˆ„๋ฅด๋ฉด 1
  • ์Šค์œ„์น˜ ๋ˆ„๋ฅด๋ฉด 0
  • Pin์„ ์ „์›(5V)์— ์—ฐ๊ฒฐ

  • ๋‚ด๋ถ€์ €ํ•ญ ๊ธฐ๋ณธ๊ฐ’์€ Pull Down์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋”ฐ๋กœ ์ €ํ•ญ ์—†์ด ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด Pull Up์€ ๋”ฐ๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•จ.

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(2, INPUT_PULLUP);
}

void loop()
{
  int readValue=digitalRead(2);
  
    // ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ ธ ์žˆ์„ ๊ฒฝ์šฐ
  if(readValue == HIGH){
    digitalWrite(13, HIGH);
  }
  else{
  	digitalWrite(13, LOW);
  }
}
pinMode(2, INPUT_PULLUP);

 

 

 

์ •๋ฆฌ

 

 

 

 

โœจ Counter ์‹ค์Šต

  • ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด +1

int counter;
bool isClicked;

void setup()
{
  pinMode(2, INPUT);
  
  Serial.begin(9600);
  
  counter=0;
  isClicked=false;
}

void loop()
{
  int readValue=digitalRead(2);
  
  // ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์ ธ ์žˆ์„ ๊ฒฝ์šฐ
  if(readValue == HIGH && !isClicked){
    counter++;
    isClicked=true;
  	Serial.println(counter);
  }
  // ๋ฒ„ํŠผ ์•ˆ ๋ˆŒ๋ฆฐ ๊ฒฝ์šฐ
  else if(readValue == LOW && isClicked){
  	isClicked=false;
  }
}