# data[].attributes.headline
미니피아노(캔버스, 이미지스프라이트)

# data[].attributes.subject
미니피아노(캔버스, 이미지스프라이트)

# data[].attributes.headline
나침반/ 현재위치/주사위게임

# data[].attributes.subject
나침반/ 현재위치/주사위게임

# data[].attributes.headline
두더지 잡기 게임 만들기

# data[].attributes.subject
두더지 잡기 게임 만들기

# data[].attributes.headline
아두이노 CH340 드라이버 설치하기

# data[].attributes.subject
아두이노 CH340 드라이버 설치하기

# data[].attributes.body
CH341SER 폴더 -> SETUP.exe

https://blog.naver.com/roboholic84/221615162449

# data[].attributes.headline
lot 서비스_아두이노 소스

# data[].attributes.subject
lot 서비스_아두이노 소스

# data[].attributes.attachment_link.readable_text
#include <SoftwareSerial.h>
SoftwareSerial BT_Serial(12,13);
const int R=3;
const int G=5;
const int B=6;
const int IR=7;

const int Do=262;
const int Re=294;
const int Mi=330;
const int Fa=349;
const int Sol=392;
const int Ra=440;
const int Si=494;
const int Do2=523;


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  BT_Serial.begin(9600); 
  pinMode(IR, INPUT);

  tone(8, Do, 250);
  delay(100);
  tone(8, Re, 250);
  delay(100);
  tone(8, Mi, 250);
  delay(100);
  tone(8, Fa, 250);
  delay(100);
  tone(8, Sol, 250);
  delay(100);
  tone(8, Ra, 250);
  delay(100);
   tone(8, Si, 250);
  delay(100);
  tone(8, Do2, 250);
  delay(100);

  
}

void loop() {
  // put your main code here, to run repeatedly:

  int detect=digitalRead(IR);
  Serial.println(detect);
  //BT_Serial.println(detect);
  if(detect==0){
    BT_Serial.print('c');
  }
  delay(1000);
  
  if(BT_Serial.available()){
    char color = BT_Serial.read();
    Serial.println(color);

    if(color=='r'){
      analogWrite(R,255);
      analogWrite(G,0);
      analogWrite(B,0);
    }else if(color=='g'){
      analogWrite(R,0);
      analogWrite(G,255);
      analogWrite(B,0);
    }else if(color=='b'){
      analogWrite(R,0);
      analogWrite(G,0);
      analogWrite(B,255);
    }else if(color=='n'){
      tone(8, Do, 250);
      delay(100);
      tone(8, Re, 250);
      delay(100);
      tone(8, Mi, 250);
      delay(100);
    }else if(color=='m'){
      tone(8, Mi, 250);
      delay(100);
      tone(8, Re, 250);
      delay(100);
      tone(8, Do, 250);
      delay(100);
    }else{
      analogWrite(R,0);
      analogWrite(G,0);
      analogWrite(B,0);
    }
  }
}

# data[].attributes.attachment_link.title
lot 서비스_아두이노 소스

# data[].attributes.headline
Iot 서비스 앱 인벤터

# data[].attributes.subject
Iot 서비스 앱 인벤터

# data[].attributes.attachment_link.readable_text
#include <SoftwareSerial.h>

// 블루투스 시리얼 R(받는 핀), T(보내는 핀)
int R = 13, T = 12;                   

// 블루투스 객체 선언
SoftwareSerial BTSerial(T, R);      
 
void setup() 
{
  Serial.begin(9600);
  BTSerial.begin(9600);
}
void loop()
{
  // 블루투스 통신이 가능할 경우
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());  
  }

  // 시리얼 통신이 가능할 경우
  if (Serial.available()) {         
    BTSerial.write(Serial.read());
  }
}

# data[].attributes.headline
RC카 장애물/블루투스(2)

# data[].attributes.subject
RC카 장애물/블루투스(2)

# data[].attributes.headline
기본동작(전진, 후진, 좌회전, 우회전, 정지)

# data[].attributes.subject
기본동작(전진, 후진, 좌회전, 우회전, 정지)

# data[].attributes.attachment_link.readable_text
int motorA1=5; //오른쪽 바퀴(전)
int motorA2=6; //오른쪽 바퀴(후)
int motorB1=9; //왼쪽 바퀴(전)
int motorB2=10;//왼쪽 바퀴(후)
int speed = 255; //속도 : 0~255

void setup() {
  // put your setup code here, to run once:
  // 전진/후진/좌회전/우회전/ 정지 테스트
  go();

}

void loop() {
  // put your main code here, to run repeatedly:

}

void Forward(){    // 전진
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void Backward(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,speed);
  analogWrite(motorB1,0);
  analogWrite(motorB2,speed);
}

void Stop(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Left(){
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Right(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void go(){
  // 전진
  Forward();
  delay(2000);

  // 후진
  Backward();
  delay(2000);

  // 좌회전
  Left();
  delay(2000);

  // 우회전
  Right();
  delay(2000);

  // 정지
  Stop();
  delay(2000);
}

# data[].attributes.attachment_link.title
기본동작(전후좌우정지)

# data[].attributes.attachment_link.readable_text
#include <Servo.h>
Servo myServo;

int motorA1=5; //오른쪽 바퀴(전)
int motorA2=6; //오른쪽 바퀴(후)
int motorB1=9; //왼쪽 바퀴(전)
int motorB2=10;//왼쪽 바퀴(후)
int speed = 255; //속도 : 0~255

void setup() {
  // put your setup code here, to run once:
  // 전진/후진/좌회전/우회전/ 정지 테스트

  myServo.attach(3);
  ServoAngle();
  go();

}

void loop() {
  // put your main code here, to run repeatedly:

}

void Forward(){    // 전진
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void Backward(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,speed);
  analogWrite(motorB1,0);
  analogWrite(motorB2,speed);
}

void Stop(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Left(){
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Right(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void go(){
  // 전진
  Forward();
  delay(2000);

  // 후진
  Backward();
  delay(2000);

  // 좌회전
  Left();
  delay(2000);

  // 우회전
  Right();
  delay(2000);

  // 정지
  Stop();
  delay(2000);
}


void ServoAngle(){
  myServo.write(0);
  delay(2000);
  myServo.write(90);
  delay(2000);
  myServo.write(180);
  delay(2000);
  myServo.write(90);
  delay(2000);

   
}

# data[].attributes.attachment_link.title
기본동작(전후좌우정지_모터각)

# data[].attributes.attachment_link.readable_text
#include <Servo.h>
Servo myServo;

int motorA1=5; //오른쪽 바퀴(전)
int motorA2=6; //오른쪽 바퀴(후)
int motorB1=9; //왼쪽 바퀴(전)
int motorB2=10;//왼쪽 바퀴(후)
int speed = 255; //속도 : 0~255

int TrigPin=13;
int EchoPin=12; 
long duration, distance; 
long d_Left, d_Right;


void setup() {
  // put your setup code here, to run once:
  // 전진/후진/좌회전/우회전/ 정지 테스트

  pinMode(EchoPin, INPUT); 
  pinMode(TrigPin, OUTPUT);

  myServo.attach(3);
  ServoAngle(); // 서보 모터 각도 테스트

  melody(); // 멜로디 연주 테스트
  //go();

}

void loop() {
  // put your main code here, to run repeatedly:
  Obstacle_Check();
}

void Forward(){    // 전진
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void Backward(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,speed);
  analogWrite(motorB1,0);
  analogWrite(motorB2,speed);
}

void Stop(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Left(){
  analogWrite(motorA1,speed);
  analogWrite(motorA2,0);
  analogWrite(motorB1,0);
  analogWrite(motorB2,0);
}

void Right(){
  analogWrite(motorA1,0);
  analogWrite(motorA2,0);
  analogWrite(motorB1,speed);
  analogWrite(motorB2,0);
}

void go(){
  // 전진
  Forward();
  delay(2000);

  // 후진
  Backward();
  delay(2000);

  // 좌회전
  Left();
  delay(2000);

  // 우회전
  Right();
  delay(2000);

  // 정지
  Stop();
  delay(2000);
}


void ServoAngle(){
  myServo.write(0);
  delay(2000);
  myServo.write(90);
  delay(2000);
  myServo.write(180);
  delay(2000);
  myServo.write(90);
  delay(2000);

   
}

void melody(){
  tone(11,262,250); //도
  delay(100);
  tone(11,294,250); //레
  delay(100);
  tone(11,330,250); //미
  delay(100);
  tone(11,349,250); //파
  delay(100);
  tone(11,392,250); //솔
  delay(100);
  tone(11,440,250); //라
  delay(100);
  tone(11,494,250); //시
  delay(100);
  tone(11,523,250); //높은 도
  delay(100);
}

void mymelody(){
  tone(11,392,250); //솔
  delay(100);
  tone(11,392,250); //솔
  delay(100);
  tone(11,440,250); //라
  delay(100);
  tone(11,392,250); //솔
  delay(100);
  tone(11,392,250); //솔
  delay(100);
  tone(11,330,250); //미
  delay(100);
}

void Distance_Measurement(){
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);

  duration=pulseIn(EchoPin, HIGH);
  distance=duration/58.2;
  delay(50);
  
}


void Obstacle_Check(){
  Distance_Measurement();

  if(distance<40){
    Stop();
    delay(300);

    Backward();
    delay(300);

    Stop();

    // 어디로 갈지 결정하는 부분임
    look_Right(); // 오른쪽으로 바라 본다
    look_Left();  // 왼쪽으로 바라 본다

    if (d_Left < d_Right){
      Right();
    }else{
      Left();
    }
    delay(500);
    Stop();

    look_Forward();
      
  }else {
    Forward();
    delay(500);
  }
}

void look_Left(){
  myServo.write(135);
  delay(500);
  Distance_Measurement();
  d_Left=distance;
  delay(100);
}

void look_Right(){
  myServo.write(45);
  delay(500);
  Distance_Measurement();
  d_Right=distance;
  delay(100);
}

void look_Forward(){
  myServo.write(90);
  delay(500);
  Distance_Measurement();
  delay(100);
}




# data[].attributes.headline
RC카 전선 연결 및 코딩

# data[].attributes.subject
RC카 전선 연결 및 코딩

# data[].attributes.headline
철산초 RC카 소스입니다.

# data[].attributes.subject
철산초 RC카 소스입니다.

# data[].attributes.body
"파일-> 내 컴퓨터에서 가져오기" 선택하여 위 파일을 불러옵니다.