아두이노 5차시(서브 모터, 가변 저항, 12D lcd)

2021. 6. 7. 00:33NEFUS_19/아두이노

#1 서보 모터

0도 부터 180도 사이를 움직이고

그사이값을 조절할 수 있다

보통:

갈색선 : gnd

빨간선 : 5V

노랑선 : pwm이 지원 되는 핀에 꽂아야한다. 밑그림에 있는 노란박스에 있는 핀에 꽂아야한다.

이 서보 모터는 Servo.h 라이브러리를 사용한다


#2 가변저항

저항의 일종으로 돌리는 만큼 저항이 바뀜


#3 LCD

vcc : 5V

gnd : gnd

scd : scd

sda : sda

reset 버튼과 가까운 것이 scl,

그다음이 sda이다

이 lcd는 Wire.h랑 LiquidCrystal_I2C.h라이브러리를 사용한다.


#4 실습(서보모터)

저항값에 따라 서보모터 각도 조절

#include<Servo.h>

Servo servo;

void setup() {
  servo.attach(3);
}

void loop() {
  int poten = analogRead(A0);
  int servoV = map(poten, 0, 1023, 0, 180); //0에서 1023을 쪼개어 0에서 180으로 나타냄
  servo.write(servoV);
}

 


#5 실습(lcd)

#include<Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20, 20, 4);

void setup() {
  lcd.init();
  lcd.backlight();
}

void loop() {
  lcd.setCursor(1,0);
  lcd.print("Nefus");
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 1);
  lcd.print("Network Focus");
  delay(1000);
  lcd.clear();
}

 


#6 실습(내가 원하는 거 만들기)

온도에 따라 lcddp표시 되는 값이 다르고 밝기에 따라 (0~180)을 화면 표시 서보모터를 돌린다.

#include<Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include<Servo.h>

LiquidCrystal_I2C lcd(0x20, 20, 4);
DHT dht(A1, DHT11);
Servo servo;

void setup() {
  lcd.init();
  lcd.backlight();
  dht.begin();
  servo.attach(3);
}

void loop() {
  lcd.clear();
  
  int h = dht.readHumidity();
  int t = dht.readTemperature();

  int cds = analogRead(A0);
  int a = map(cds, 0, 1023, 0, 180);
  servo.write(180-a);
  
  lcd.setCursor(0,0);lcd.print("");
  lcd.print("Temp: ");
  lcd.print(t);
  
  lcd.setCursor(10,0);
  lcd.print("| CDS");
  
  lcd.setCursor(0, 1);
  lcd.print("Hum: ");
  lcd.print(h);
  
  lcd.setCursor(10,1);
  lcd.print("| ");
  lcd.print(a);
  delay(1000);
}