본문 바로가기
project/2020.11 (아두이노)스마트팜

코드

by sj0020 2020. 11. 18.

sample

// LCD를 쉽게 제어하기 위한 라이브러리를 추가합니다.
#include <LiquidCrystal_I2C.h>
#include <Adafruit_NeoPixel.h>
#include <Wire.h>
#include "DHT.h"
#include "module.h"

// 0x3F I2C 주소를 가지고 있는 16x2 LCD객체를 생성합니다.(I2C 주소는 LCD에 맞게 수정해야 합니다.)
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(2, DHT22);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, 8, NEO_GRB + NEO_KHZ800);

unsigned char rcv[8] = {0,};
unsigned int arr[6] = {0,}; //순서대로 온도, 습도, EC, 미세먼지, CO₂,조도 센서

void serialEvent1()
{
  Serial1.readBytes(rcv, 8);
}

/*0.8705,0,0.2078*/

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
#include "init.h"
  for (int i = 0; i < 8; i++)strip.setPixelColor(i, 111, 0, 27);
  strip.show();
  cF[0]|=1;
}

void loop() {
  forward();
  reverse();
  static unsigned char f[2]={0,};
  digitalWrite(12,1);   //펌프 릴레이 활성화
  /*플래그의 심플 토글 래치*/
  if((OCR1A>=160)&(f[0]))f[0]=0;    
  if((OCR1A<=40)&(!f[0]))f[0]=1; 
  /*서보 제어 코드*/
  if(f[0])OCR1A++; else OCR1A--;
  
}

int.h

  //init.h
  digitalWrite(9,1);  //미세먼지 센서 내장 LED: 부논리 초기설정
  DDRF|=240;          //A4-A7
  pinMode(8,1);
  pinMode(9,1);       //미세먼지 센서 내장 LED 핀 활성화
  pinMode(11,1);      //PWM핀 활성화
  pinMode(12,1);      //펌프 릴레이 핀 활성화
  pinMode(17,1);      //FAN 릴레이 핀 활성화
  digitalWrite(13,0); //펌프 릴레이 신호: 초기값 0;
  Serial.begin(9600); //디버깅용
  Serial1.begin(9600); //CO₂ 센서
  dht.begin();
  lcd.init();  // I2C LCD를 초기화 합니다..
  lcd.backlight();  // I2C LCD의 백라이트를 켜줍니다.
  strip.begin();
  strip.clear();
  lcd.setCursor(0,0);
  lcd.print("waiting....");
  //delay(30000);
  lcd.clear();
  TCCR1A=130;
  TCCR1B=28;
  ICR1=1249;
  OCR1A= 20;

  /*
   * 핀 설정
   * 2:DHT22 온습도 센서 인터페이스 핀
   * 4:
   * 5:
   * 6:
   * 7:
   * 8:네오픽셀 컨트롤 핀 
   * 9:미세 먼지 센서 내장 LED 제어 핀
   * 10:장애물 감지 센서 입력 핀
   * 11:서보모터 PWM 핀
   * 13:펌프 제어 핀
   * 
   * 15:close센서(창문)
   * 16:open센서(창문)
   * 17:FAN 제어 핀
   * 18:CO₂ 센서 시리얼 Tx핀
   * 19:CO₂ 센서 시리얼 Rx핀   
   * 20:lcd 용 I²C SDA
   * 21:lcd 용 I²C SCL   
   * 
   * A2:EC센서 입력 ADC 핀
   * A3:미세 먼지 센서 입력 ADC 핀
   * A4:스텝 모터 A-IA연결  A
   * A5:스텝 모터 A-IB연결 /A
   * A6:스텝 모터 B-IA연결  B
   * A7:스텝 모터 B-IB연결 /B
   * A15: CdS 조도 센서 입력 ADC 핀
   * A14: LM35 온도센서
   */

module.h

volatile unsigned char cF[3]={0,};

void forward()
{
  const unsigned char sig[4]={0x60,0x50,0x90,0xA0};
  static int phase=0;
  static long int pT=0;
  if(cF[0])
  {
    digitalWrite(17,1);
    if (micros() > (pT + 800)) //0.8밀리초 주기
    {
      if(phase<480)PORTF= sig[phase&3]|PORTF&15;
      else
      {
        cF[0]=0;
        cF[1]|=1;
        phase=0;
      }
      phase++;
      pT =micros();   //타임 스탬프
    }
  }
  else phase=0;
  

}

void reverse()
{
  const unsigned char sig[4]={0x60,0x50,0x90,0xA0};
  static int phase=0;
  static long int pT=0;
  if(cF[1])
  {
    digitalWrite(17,0);
    if (micros() > (pT + 800)) //0.8밀리초 주기
    {
      if(phase<480)PORTF= sig[3-(phase&3)]|PORTF&15;
      else
      {
        cF[1]=0;
        cF[0]|=1;
        phase=0;
      }
      phase++;
      pT =micros();   //타임 스탬프
    }
  }
  else phase=0;
}

'project > 2020.11 (아두이노)스마트팜' 카테고리의 다른 글

github  (0) 2020.11.20
포토인터럽터 SG-207  (0) 2020.11.19
L9110 H-bridge module  (0) 2020.11.17
voltage regulator 7805CT  (0) 2020.11.17
201117  (0) 2020.11.17