프로젝트

자는데 깨우면 안되는 로봇 아두이노 프로젝트

페이지 정보

작성자 용용죽겠지 작성일17-04-14 02:36 조회3,133회 댓글0건

본문

쓸모없어도 귀여운거 또 만들었습니다. 


쓸모있는걸 만드는건 너무 어려운 거같습니다.

쓸모가 있더라도 이미 나와있는걸 만드는건 더더욱 제가 납득을 못하겠습니다.

그래도 일단 만들다 보면 언젠가 쓸모가 생길지도 모르는 일이고...


지난번에 머리흔드는 로봇하나 만들었는데 그놈의 또다른 버전입니다.


http://blog.naver.com/roboholic84/220840383632




보기만 해도 귀엽지요? 안 그런가요?


일단 영상이라도 볼까요?




로봇의 가장큰 역할 은 바로 자는 것입니다.


그러다 주위에서 조금 큰소리가 나면 일어나서  주위한번 둘러보고


그러다 눈좀 껌뻑이다가.. 다시잡니다....


쓸모 없는 수준을 제 부족한 문학적 감성으로 표현하자면 고깃집에서 고기 굽는법도 모르고 어느게 익은건지도 몰라서 먹어도 된다 해야지만 먹는 친구 와 같은 느낌을 줍니다.


그래도 귀여워서 봐줍니다.


그럼 그동안의 절차대로 진행해 보겠습니다.


부품 알아보기



위 링크에서 부품 목록을 확인 할 수 있습니다.


회로도 알아보기



http://blog.naver.com/roboholic84/220840383632

전체적인 회로도는 위의 링크에서 정리 되어있으니 참고하시면 좋습니다.

사운드 센서의 GND, VDD , OUT 을 아두이노의 GND, VCC, OUT 에 연결 해줍니다.

소스코드 알아보기

소스코드가 조금 깁니다. 그래서 파일로 첨부하고 메인 ino 파일만 설명하겠습니다

 #include <Servo.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include "yobot.h"


#define OLED_MOSI   9

#define OLED_CLK   10

#define OLED_DC    11

#define OLED_CS    12

#define OLED_RESET 13


Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);


YOBOT yobot(&display, 6, 7);

const int sampleWindow = 30; //샘플링 시간 ms

unsigned int sample;

double volts;

int wakeup = 3;



void setup() {

  yobot.init();

  delay(1000);

  yobot.eyeOpen();

  delay(1000);

}


void loop() {

  unsigned long startMillis = millis(); // 생플링 시작

  unsigned int peakToPeak = 0;   // 음성신호의 진폭


  unsigned int signalMax = 0;

  unsigned int signalMin = 1024;


  // 생플링 구간동안 최댓값과 최소값을 읽어들입니다.

  while (millis() - startMillis < sampleWindow)

  {

    sample = analogRead(0);

    if (sample < 1024)  // toss out spurious readings

    {

      if (sample > signalMax)

      {

        signalMax = sample;  // save just the max levels

      }

      else if (sample < signalMin)

      {

        signalMin = sample;  // save just the min levels

      }

    }

  }

  peakToPeak = signalMax - signalMin;  // 최대값에서 최소값을 빼서 진폭을 계산

  volts = (peakToPeak * 5.0) / 1024;  // 이를 전압단위로 변경합니다.

  if (wakeup > 0) {//깨어있는동안은 눈을 깜빡인다.

    yobot.Blink();

    delay(2000);

    wakeup--;

    if (wakeup == 0) {

      yobot.eyeClose();

    }

    return;

  }

  if (volts > (float)1) {//전압이 1v이상으로 측정되면 일어난다

    yobot.eyeOpen();

    yobot.See(0, 0);

    yobot.Blink();

    delay(1000);

    yobot.See(0, 30);

    delay(500);

    yobot.See(0, -30);

    delay(500);

    yobot.See(0, 0);

    wakeup = 3;

  }

}

 
로봇의 표정은 소스코드에서 수정할 수 있습니다. 

감사합니다.

출처: 메카솔루션


댓글목록

등록된 댓글이 없습니다.


모바일 버전으로 보기