WeMos - D1

OS/Arduino 2017.12.10 00:43 Posted by 파란크리스마스

출처 : 아두이노 WeMos 환경 셋팅 및 기본예제 | 프로젝트 | 메이크위드
CodeBlog: ESP8266, WeMos D1 R1, D1 R2 and D1 Mini pins

아두이노 IDE에 보드 추가하기

COM 포트가 추가된 것을 확인

메뉴 [파일] -> [환경설정] 선택

[환경설정]창에서 Additional Board Manager URLs 항목 설정

보드관련 정보가 있는 URL를 http://arduino.esp8266.com/stable/package_esp8266com_index.json 붙여넣기

메뉴 [도구] -> [보드] -> [Boards Manager...] 선택

[Boards Manager] 창에서 esp8266 검색하고, [Install] 버튼 석택

메뉴 [도구]에서 보드와 포트 선택

LED 켜기

// LED가 연결된 PIN번호
int led = D15;

// 초기화
void setup() { 
  pinMode(led, OUTPUT); 
}

// 무한 반복
void loop() {
  digitalWrite(led, HIGH); // LED 켜기
  delay(1000); // 1초 대기
  digitalWrite(led, LOW); // LED 끄기
  delay(1000); // 1초 대기
}

PWM 예제

아두이노에서는 analogWrite 함수를 통해서 이러한 PWM 출력을 제공하는데, analogWrite 함수의 인자 범위는 아두이노 우노 R3의 경우 0~255까지의 정수를 사용하지만, D1의 경우 0~1023까지의 정수를 사용한다.

// LED가 연결된 PIN번호
int ledPin = D6;
 
// 초기화
void setup() {
  // 출력 모드 설정
  pinMode(ledPin, OUTPUT);   // sets the pin as output
}
 
// 무한 반복
void loop() {
  // 25 단위로 반복 / PWM 번위 0~1023
  for(int angle = 0; angle < 1023; angle=angle+5) {
    // PWM 출력
    analogWrite(ledPin, angle);
    delay(15);
  }
}

SG90 서브모터 제어

[Arduino|아두이노] 서보모터(SG90) 구동하는 방법 (Tower Pro, Micro Servo, B10K, 가변저항) - 젠트의 프로그래밍 세상

#include <Servo.h> 

Servo servo;
 
int servoPin = D3;
int angle = 0; // servo position in degrees 

// 초기화
void setup() { 
  servo.attach(servoPin);
} 

// 무한 반복
void loop() { 
  // rotate from 0 to 180degrees
  for(angle = 0; angle < 180; angle++) { 
    servo.write(angle); 
    delay(15); 
  } 
}

RC Car - L298N Dual H-Bridge

Reference · ESP8266 Arduino Core

//모터A 컨트롤
int enA = D3;
int IN1=D4;
int IN2=D5;
 
//모터B 컨트롤
int enB = D10;
int IN3=D8;
int IN4=D9;

#define MOTER_SPEED 1023 // MAX 1023
 
void setup() {
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
}
 
void loop() {
  
  analogWrite(enA, MOTER_SPEED);
  analogWrite(enB, MOTER_SPEED);
  
  /*
  digitalWrite(enA,HIGH);
  digitalWrite(enB,HIGH);
  */
  bothMotorStart(); // 전진
  delay(3000);
  turnLeft(); // 왼쪽으로 턴
  delay(3000);
  turnRight(); // 오른쪽으로 턴
  delay(3000);
  motorA_Rotation(); // 오른쪽만 정방향
  delay(3000);
  motorB_Rotation(); // 왼쪽만 정방향
  delay(3000);
  motorA_Reverse(); // 오른쪽만 역방향
  delay(3000);
  motorB_Reverse(); // 왼쪽만 역방향
  delay(3000);
  stopAllMotor(); // 정지
  delay(3000);
}
 
//모터A,B 정회전
void bothMotorStart()
{
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
}
 
//모터A,B Stop
void stopAllMotor()
{
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,LOW);
}
 
//모터A 역회전, 모터B 정회전
void turnLeft()
{
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
}
 
//모터A 정회전, 모터B 역회전
void turnRight()
{
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
}
 
//모터A 정회전, 모터B Stop
void motorA_Rotation()
{
    digitalWrite(IN1,HIGH);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,LOW);
}
 
//모터A Stop, 모터B 정회전
void motorB_Rotation()
{
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,HIGH);
    digitalWrite(IN4,LOW);
}
 
//모터A 역회전, 모터B Stop
void motorA_Reverse()
{
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,LOW);
}
 
//모터A Stop, 모터B 역회전
void motorB_Reverse()
{
    digitalWrite(IN1,LOW);
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW);
    digitalWrite(IN4,HIGH);
}