# data[].attributes.body
이름 / 간단한 자기소개 /  COS 1,2,3,4급 / 자격증 취득 이유를 작성해주세요.^^

# data[].attributes.attachment_link.title
MOS 공식 사이트, COS 공식 사이트, COS Pro 공식 사이트, DATA 공식 사이트

# data[].attributes.attachment_link.description
Microsoft 국제인증 자격시험, Scratch, Entry(블록코딩)에 대한 자격증, Python, C, C++, Java에 대한 자격증, Python, Excel에 대한 데이터 분석 자격증

# data[].attributes.headline
스크래치 2.0 다운로드 설치

# data[].attributes.subject
스크래치 2.0 다운로드 설치

# data[].attributes.attachment_link.description
Scratch is a free programming language and online community where you can create your own interactive stories, games, and animations.

# data[].attributes.body
가나다 이름 순입니다.

# data[].attributes.body
스크래치는 버전별로 파일 확장자가 다릅니다.
오늘 설치했던 2.0 -> .sb2
온라인 3.25 -> .sb3
온라인 엔트리 -> .ent

# data[].attributes.body
놀라지 마세요!!!!

블록코딩 가능
https://mblock.makeblock.com/

# data[].attributes.attachment_link.readable_text

#include <SoftwareSerial.h>
#include <Wire.h>                      // i2C 통신을 위한 라이브러리
#include <LiquidCrystal_I2C.h> 
#include <Adafruit_NeoPixel.h>

#define BT_RXD 12
#define BT_TXD 13
const int LED_PIN = 6;    /* 네오픽셀 선언 */
const int LASER_PIN = 7;  /*레이저 선언*/
const int TSW_PIN = 8;    /* 택트 스위치 핀번호*/
const int CDS_PIN_1 = A1; /* 조도 센서 선언*/
const int CDS_PIN_2 = A2; /* 조도 센서 선언*/

int result = 0; //전역변수

SoftwareSerial BT(BT_RXD, BT_TXD);
LiquidCrystal_I2C Lcd(0x27, 16, 2);
Adafruit_NeoPixel NeoLed = Adafruit_NeoPixel(3, LED_PIN, NEO_GRB);


/*함수*/
void F_LCD(String message0, String message1)
{
  Lcd.setCursor(0,0);             // 1번째, 1라인
  Lcd.print(message0);
  Lcd.setCursor(0,1);             // 1번째, 2라인
  Lcd.print(message1);
}

void F_LedColor(int color, int wait)
{
  if(color == 1)
  {
    for(int i=0; i<3; i++)
    {
      NeoLed.setPixelColor(i, random(256),random(256),random(256));
      NeoLed.show();
    }
    //delay(wait);
  }
  else
  {
    for(int i=0; i<3; i++)
    {
      NeoLed.setPixelColor(i,NeoLed.Color(0,0,0));
      NeoLed.show();
    }
  }
}


void F_CDS(int val)
{
/* result 전역변수 */
  Serial.print("val = ");
  Serial.println(val);

  if(result == 1) return 1;
    
  if (val < 200)
  {
    result = 0;
    return 0;
  }
  else
  {
    result = 1;
    return 1;
  }
}

/* setup() */
void setup()
{ 
  Serial.begin(9600);
  
  BT.begin(9600);

  Lcd.init();                     
  Lcd.backlight();  
  F_LCD("Safe Home Start!","Nothing!!");// LCD 표시 정상
  
  NeoLed.begin();                  
  NeoLed.setBrightness(10);
  NeoLed.clear();
  F_LedColor(0,10);
  
  pinMode(TSW_PIN, INPUT);
  
  pinMode(LASER_PIN, OUTPUT);
  digitalWrite(LASER_PIN, 1);  
      
  pinMode(CDS_PIN_1, INPUT);
  pinMode(CDS_PIN_2, INPUT);     
}

void loop()
{  
 
 /* 택트스위치 */
  int tactresult = digitalRead(TSW_PIN); 
  if(tactresult == 0)
  {
    result = 0;
    setup();
  }
 
 /*조도 호출 */
  F_CDS(analogRead(CDS_PIN_1));
  F_CDS(analogRead(CDS_PIN_2));

  if( result == 1) //조도 결과값
  {
    F_LedColor(1,10); //네오픽셀 켜기
    F_LCD("Safe Home Start!","112, Calling......");
    Serial.println("침입자다!!");
  }
  else//조도값
  {   
   // F_LedColor(0,10);//테스트용 조도값이 다시 내려가면, 네오픽셀 불 끄기
    Serial.println("정상!");
  }
  
  /*시리얼 프린트*/
  Serial.print("tactresult = ");
  Serial.println(tactresult); 
  Serial.print("result = ");
  Serial.println(result); //값 찎어보기
  delay(500);
 
}

# data[].attributes.headline
변수 - 메모리에 선언

# data[].attributes.subject
변수 - 메모리에 선언

# data[].attributes.headline
리스트의 생성 삭제 n번 반복하기

# data[].attributes.subject
리스트의 생성 삭제 n번 반복하기

# data[].attributes.body
변수가 자동으로 형 변환을 한다고 설명 드렸지만, 2.0에서는 실수 값을 넣기 위해선,
변수도 실수 값을 저장하여야만 인식하네요.

3.0은 변수 자동형변환이 반영되어 있지만,
2.0은 아직 적용되어 있지 않습니다.

저도 숙제 완료~^^

# data[].attributes.body
중복되는 유형의 문제가 있습니다.
중복되니까!!
중복  중복  중복  중복  중복  중복  중복  중복

*임금님 귀는 당나귀 귀*

# data[].attributes.body
수업
+ 2단부터 9단까지 말하기
+ 입력 받은 단만 말하기

+홀 짝 구분하여 더하기

# data[].attributes.body
본인의 스크래치 아이디로 로그인(온라인)
내 학급
학급 스튜디오
공유된 파일이 있습니다.

변수와 리스트, 조건문을 최대한 많이 써야지 하다 보니.. 개인적 공부 시 참고만 해주세요.

# data[].attributes.headline
예습 - 3개 이상 질문 생각해오기!!!

# data[].attributes.subject
예습 - 3개 이상 질문 생각해오기!!!

# data[].attributes.body
1. 그리기
2. X,Y 좌표 이해
3. 복제하기 / 도장 찍기 이해하기
4. 신호 보내기/함수 이해하기

전체 - 질문 시간 갖겠습니다.
3개 이상 질문 생각해오기!!!

# data[].attributes.headline
나의변수로 타이머만들기

# data[].attributes.subject
나의변수로 타이머만들기

# data[].attributes.attachment_link.title
나의변수로 타이머만들기

# data[].attributes.attachment_link.title
변수만들어자리수계산하기

# data[].attributes.headline
랜덤사용시 중복제거 예외처리

# data[].attributes.subject
랜덤사용시 중복제거 예외처리

# data[].attributes.attachment_link.title
랜덤사용시_중복되지않게

# data[].attributes.body
반복이 10회가 안되는 이유를 모르겠습니다