# 하드웨어 구성
아두이노 나노 [SZH-EK017]
초음파센서 [HC-SR04]
L298N V2/Dc Moter/Stepper 
스텝모터 [17HS4401]




 #소스코드

#define H 1

#define L 0


#define trigpin 11

#define echopin 12

#define delay_time 990

int Motor[4] = {4,5,6,7};

int M_En[2] = {8,9};

int i, deg = 0;

int flag = 0;

float duration, distance;

  

void setup() {

  //pinMode(4, OUTPUT);   //A

  //pinMode(5, OUTPUT);   //B

  //pinMode(6, OUTPUT);   //An

  //pinMode(7, OUTPUT);   //Bn

  //pinMode(8, OUTPUT);   //enable1

  //pinMode(9, OUTPUT);   //enable2

 

  for (i=0;i<4;i++){

    pinMode(Motor[i], OUTPUT);

  }

  for (i=0;i<2;i++){

    pinMode(M_En[i], OUTPUT);

  }  

  

  pinMode(trigpin, OUTPUT);   //Trig

  pinMode(echopin, INPUT);   //Echo  


  Serial.begin(9600); //보레이트 설정

}

void M_Enable(){

  for (i=0;i<2;i++){

    digitalWrite(M_En[i], H);

  }  

}

void M_Disable(){

  for (i=0;i<2;i++){

    digitalWrite(M_En[i], L);

  } 

}


void UltraSonic_command(){

/////////////////////////UltraSonic 동작 및 거리계산

////////////////////////////////////////////////// 대충 검색해서 퍼옴 - 구지... 이해할필요까지.. 없어보임.

  digitalWrite(trigpin, H);

  delay(10);

  digitalWrite(trigpin, L);


  duration = pulseIn(echopin, H);

  distance = ((float)(340*duration) / 10000) /2 ;

/////////////////////////시리얼로 프린트? TX 구문인지... 

  Serial.print("distance : ");

  Serial.println(distance);


}

// 한스텝 동작 -> 거리측정 -> Serial Send

void M_move(int a, int b, int c, int d){

  M_Enable();

  digitalWrite(4, a);   // turn the LED on (HIGH is the voltage level)

  digitalWrite(5, b);   // turn the LED on (HIGH is the voltage level)

  digitalWrite(6, c);   // turn the LED on (HIGH is the voltage level)

  digitalWrite(7, d);   // turn the LED on (HIGH is the voltage level)  

  UltraSonic_command();

  M_Disable();  

}

// 오른쪽 동작

void r_Stepping(){  

  M_move(H,L,L,H);  

  delay(delay_time);                       // wait for a second

  M_move(H,H,L,L);  

  delay(delay_time);                       // wait for a second

  M_move(L,H,H,L);  

  delay(delay_time);                       // wait for a second

  M_move(L,L,H,H);  

  delay(delay_time);                       // wait for a second

}

// 왼쪽 동작

void l_Stepping(){  

  M_move(L,L,H,H);  

  delay(delay_time);                       // wait for a second

  M_move(L,H,H,L);    

  delay(delay_time);                       // wait for a second

  M_move(H,H,L,L);  

  delay(delay_time);                       // wait for a second

  M_move(H,L,L,H);  

  delay(delay_time);                       // wait for a second

}

// 오른쪽 360도 -> 왼쪽 360도 

void loop() { 

  if(!flag){

    r_Stepping();  

    if(deg < 52)

      deg = deg + 1; 

    else

      flag = 1;    

  }

  else {

    l_Stepping();  

    if(deg > 1)

      deg = deg - 1; 

    else 

      flag = 0;          

  }

}


# 이후 숙제

- 시리얼로 받은 데이터로 윈도우에 그리기 (Visual Basic ?)


아두이노 나노 이용하여 자동 워킹인식 만들기... (어플속이기 ㅎ)


#include <Stepper.h>

// 1스텝 0.17578125도

// 2048 = 360도  // 1024 = 180도  // 

#define STEPS 96   //128                //각도 16.87도

#define Speed (8192 / STEPS)*4       //안정적인 최고 스피드


// IN4 = 11 = 12

// IN3 = 10 = 11 

// IN2 = 9 = 10

// IN1 = 8 = 9

// IN4, IN2, IN3, IN1 

Stepper stepper(STEPS, 12, 10, 11, 9);


void setup() {

  stepper.setSpeed(Speed);

}


void loop() {

  stepper.step(STEPS);


  stepper.step(-STEPS);

}

대표적인 걷기만으로 포인트 받는 어플

#1. 캐시워크 - 적립형 만보기 잠금화면

https://play.google.com/store/apps/details?id=com.cashwalk.cashwalk&hl=ko



#2. AIA Vitality x T건강걷기

https://play.google.com/store/apps/details?id=com.aia.vitality.kr&hl=ko

#3. 캐시슬라이드 - No.1 잠금화면 플랫폼


(아직 신뢰가 없지만.. 함 써봄... 이번주안에 삭제할 꺼 같지만.)

(2만보를 했는데 5원주내.. 삭제)



#결론 

캐시워크 : 하루에 10,000보 100포인트 정립

AIA Vitality : 1주일간 미션달성 - sk 텔레콤 3,000원 할인


1달 = 4주 = 28일 = 20일(토,일 제외)

AIA Vitality = 4주 = 12,000원

캐시워크 = 20일 = 2,000원




+ Recent posts