아두이노

아두이노

ADELA_J 2023. 7. 12. 17:29

<조도센서 값 읽어 불 켜지게 하기>

더보기
#define BRIGHT_PIN A1
#define BRIGHT_ON 3
#define BRIGH_OON 5

void setup(){
  Serial.begin(9600);
  pinMode(BRIGHT_ON, OUTPUT);
  pinMode(BRIGH_OON, OUTPUT);
}

void loop(){
  int brightValue = analogRead(BRIGHT_PIN);
  Serial.println(brightValue);
  if (brightValue >= 800)
  {
    Serial.println("어둡습니다.");
    digitalWrite(BRIGHT_ON, 255);
    digitalWrite(BRIGH_OON, LOW);
  }
  else if (brightValue < 800 && brightValue >=500)
  {
    Serial.println("중간입니다.");
    digitalWrite(BRIGHT_ON, LOW);
    digitalWrite(BRIGH_OON, LOW);
  }
  else if(brightValue < 500)
  {
    Serial.println("밝습니다..");
    digitalWrite(BRIGHT_ON, LOW);
    digitalWrite(BRIGH_OON, 255);
  }
  delay(100);
}

- 교수님이 올려주신거

더보기
int cds = A1;   // 조도센서를 아날로그 1핀(A1)에 연결
int led = 3;    //LED 3번핀에 연결
void setup(){
  pinMode(led, OUTPUT);
}

void loop(){
  // 조도센서로 부터 측정된 밝기 값을 읽는다.
  // 조도센서로 부터 입력되어지는 전압의 크기 (0~5V)에 따라 0~1023 범위의 값으로 변환
  int cdsValue = analogRead(cds);

  //측정된 밝기 값을 시리얼 모니터에 출력
  Serial.print("cds: ");
  Serial.println(cdsValue);

  if (cdsValue>220){
    //LED연결된 핀 - 로직레벨을 HIGH(5V)로 설정, LED를 켠다.
    digitalWrite(led, HIGH);

    //조도센서 값이 50보다 작으면, 아래 블록을 실행합니다.
    digitalWrite(led,LOW);
  }
}

<서보모터 각도 변경하기>

더보기
#include <Servo.h>
 
#define SERVO_PIN 8
 
Servo myservo;
 
void setup(){
  myservo.attach(SERVO_PIN);
}
 
void loop() {
  myservo.write(0);
  delay(1000);
  myservo.write(90);
  delay(1000);
  myservo.write(180);
  delay(1000);
  myservo.write(90);
  delay(1000);
}

- 서보모터 가변저항으로 제어하며 각도가 출력되는 프로그램

더보기
#include <Servo.h>
 
#define SERVO_PIN 8
#define VR_PIN A0
 
Servo myservo;
 
void setup(){
  Serial.begin(9600);
  myservo.attach(SERVO_PIN);
}
 
void loop() {
  int setDig = map(analogRead(VR_PIN), 0, 1023, 0, 180);
  Serial.println(setDig);
  myservo.write(setDig);
  delay(100);
}

<온도센서>

더보기
#include "DHT.h"
 
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
 
void setup(){
  Serial.begin(9600);
  dht.begin();
}
 
void loop() {
  delay(2000);
 
  float humi = dht.readHumidity();
  float temp = dht.readTemperature();
 
  if (!isnan(humi) || !isnan(temp))
  {
   Serial.print("Humidity: ");
   Serial.print(humi);
   Serial.print("% Temperature: ");
   Serial.print(temp);
   Serial.println("C");
  }
}

<온도센서를 이용해 불쾌지수 출력하기>

더보기
#include "DHT.h"
 
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
 
void setup(){
  Serial.begin(9600);
  dht.begin();
}
 
void loop() {
  delay(2000);
 
  float humi = dht.readHumidity();
  float temp = dht.readTemperature();
 
  if (!isnan(humi) || !isnan(temp))
  {
    float di = (1.8*temp) - (0.55 * (1-humi/100.0)*(1.8*temp-26)) + 32;
    Serial.print("불쾌지수: ");
    Serial.println(di);
  }
}

 

<불꽃감지 센서 - 불꽃이 감지되면 불켜지고 소리울리기>

 

더보기

 

int led = 13; // LED 핀 번호 13
int buzzer = 6;   //BUZZER 핀 번호 6
int flame = 2 ;   //불꽃감지 센서 핀 번호 2
int state = 0;    //불꽃감지 센서의 상태 값 저장 변수

 

void setup(){
  pinMode (led, OUTPUT);    //LED를 출력으로 설정
  pinMode (buzzer, OUTPUT);   //BUZZER를 출력으로 설정
  pinMode (flame, INPUT);     //불꽃 감지 센서를 입력으로 설정
  Serial.begin(9600);   //시리얼통신, 속도는 9600
}

 

void loop() {
  state = digitalRead(flame);   //불꽃감지센서값 입력받음
  Serial.print(state);
 
  digitalWrite (led, LOW);    //초기 LED값을 OFF설정
  noTone(buzzer);   //초기에 BUZZER를 출력하지 않기

 

  if (state == 0){    //불꽃감지 센서의 값이 0일때
    Serial.println("ON");    //시리얼 통신에 센서값 출력해주기
    digitalWrite(led, HIGH);    //LED ON
    tone(buzzer,261.6);     //500 음의 높낮이, 100- 부저 지속 시간
    delay(100);
  }
  else {
    Serial.println("OFF");
    digitalWrite(led, LOW);
    noTone(buzzer);
  }
  delay(100);
}

<인체감지 센서>

더보기
int LED = 2;
int sensor = 7;
int value = 0;
 
void setup() {
  pinMode (LED, OUTPUT);
  pinMode (sensor, INPUT);
}
 
void loop() {
  value = digitalRead(sensor);
  if (value == HIGH){
    digitalWrite(LED, HIGH);
  }
  else {
    digitalWrite(LED, LOW);
  }
}