Get it on Google Play


Wm뮤 :: '아두이노' 카테고리의 글 목록 (3 Page)

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
퇴직한 전자과 게임프로그래머
2020.3.48f1 , 2022.3.6f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


'아두이노'에 해당되는 글 19건

  1. 2018.02.11 attiny 쓰기
  2. 2017.10.20 각도 계산 스크립트
  3. 2017.06.02 VirtualWire 사용하기
2018. 2. 11. 20:16

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2017. 10. 20. 03:23 아두이노

 

겜메 시절에 3D구현한다고 만들어 쓰던거

유니티에선 쓸일이 없지만 윈폼, 아두이노등 3D 연산 미지원 언어들에선 쓸만함

 

double Rad2Deg=180.0/3.14;

double Deg2Rad=3.14/180.0;  



Vector3 len_vec(float len, float dir_x, float dir_y, float dir_z)

{



    Vector3 _return;

    double _len_z_x;

    _len_z_x= len_x(len, (double)dir_y);



    _return.x = (float)len_x(_len_z_x, (double)dir_z);

    _return.y = (float)len_y(_len_z_x, (double)dir_z);

    _return.z = (float)len_y(len, (double)dir_y);

    return _return;

}

Vector3 len_vec(float len, Vector3 dir)

{



    Vector3 _return;

    double _len_z_x;

    _len_z_x= len_x(len, (double)dir.y);



    _return.x = (float)len_x(_len_z_x, (double)dir.z);

    _return.y = (float)len_y(_len_z_x, (double)dir.z);

    _return.z = (float)len_y(len, (double)dir.y);

    return _return;

}



Vector3 len_vec(double len, Vector3 dir)

{

    //unity

    Vector3 _return;

    double _len_z_x;

    

    _len_z_x= len_x(len, -dir.x);

    _return.y = len_y(len, -dir.x);

    _return.z = len_x(_len_z_x, dir.y);

    _return.x = len_y(_len_z_x, dir.y);

    return _return;

}

float len_vec(Vector3 vec, Vector3 dir)

{

Vector3 _return_vec=vec;

float dir_t;



dir_t=_return_vec.y;

_return_vec.y=len_x(dir_t,_return_vec.z,dir.x);

_return_vec.z=len_y(dir_t,_return_vec.z,dir.x);



dir_t=_return_vec.x;

_return_vec.x=len_x(dir_t,_return_vec.z,dir.y);

_return_vec.z=len_y(dir_t,_return_vec.z,dir.y);



dir_t=_return_vec.x;

_return_vec.x=len_x(dir_t,_return_vec.y,dir.z);

_return_vec.y=len_y(dir_t,_return_vec.y,dir.z);



return _return_vec;

}



    

float len_x(float x, float y, float dir)

{

float _return_x;

_return_x=len_x(x,dir);

_return_x+=len_y(y,-dir);

return _return_x;

}

float len_y(float x, float y, float dir)

{

float _return_y;

_return_y=len_y(x,dir);

_return_y+=len_x(y,-dir);

return _return_y;

}

Vector2 len_vec(Vector2 vec, float dir)

{

Vector2 _return_vec;

_return_vec.x=len_x(vec.x,dir);

_return_vec.y=len_y(vec.x,dir);

_return_vec.x+=len_y(vec.y,-dir);

_return_vec.y+=len_x(vec.y,-dir);

return _return_vec;

}



//x와 각도를 이용해 y를 구함

float x_and_angle_get_y(float x , float dir)

{

//return y

return tan(dir*0.01745329222)*x;

}

    float len_x(float len, float dir)//유니티

    {

        return Mathf.Cos((float)(dir * Mathf.PI / 180.0)) * len;

    }

    float len_y(float len, float dir)//유니티

    {

        return Mathf.Atan((float)(dir * Mathf.PI / 180.0)) * len;

    }

float len_x(float len, float dir)

{

return cos(dir*0.01745329222)*len;

}


float len_y(float len, float dir)

{

return sin(dir*0.01745329222)*len;

}


    float dir_normalized(float dir)

    {

        if (dir < 0)

        {

            return 360-(-dir % 360);

        }

        return dir % 360;

    }

    float get_dir(Vector2 FromVec, Vector2 ToVec)

    {

        return get_dir(ToVec-FromVec);

    }



    float get_dir( Vector2 ToVec)

    {

        ToVec = ToVec.normalized;

        return Mathf.Atan2(ToVec.x, ToVec.y) * Mathf.Rad2Deg;

    }


    float get_dir( Vector2 ToVec)

    {

        ToVec = ToVec.normalized;

        return Mathf.Atan(ToVec.y/ToVec.x) * Mathf.Rad2Deg;

    }

        public double d_set(double _Dir)
        {
            if (_Dir < 0d)
            {
                _Dir = 360d - ((-_Dir) % 360d);
            }
            if (_Dir >= 360d)
            {
                return _Dir % 360d;
            }
            return _Dir;
        }
        public double d_set(double _Dir)
        {
           while(_Dir < 0)
            {
                _Dir += 360;
            }
           while(_Dir >= 360)
            {
                _Dir -= 360;
            }
            return _Dir;
        }



public double d_set_a(double _Dir)

{

    _Dir=d_set(_Dir);

    if(_Dir>180)

    {

      return _Dir-360;

    }

    return _Dir;

}

Vector3 d_set(Vector3 _Dir)

{

  //unity

    _Dir.x=d_set_a(_Dir.x);

    _Dir.y=d_set(_Dir.y);

    _Dir.z=d_set(_Dir.z);

    if(abs(_Dir.x)>90)

    {

      _Dir.x=d_set_a(180-_Dir.x);

      _Dir.y=d_set(_Dir.y+180);

      _Dir.z=d_set(_Dir.z+180);

    }

    return _Dir;

}
 
 
 
 
 
 

 

 

 

 

 

 

 

 

'아두이노' 카테고리의 다른 글

자이로 좌표계  (0) 2018.02.17
attiny 쓰기  (0) 2018.02.11
VirtualWire 사용하기  (0) 2017.06.02
posted by 모카쨩
2017. 6. 2. 16:39 아두이노

 

 

 

 

그런건 없다

VirtualWire는 죽은 라이브러리기 때문이다. RadioHead를 쓰자

 

RadioHead는 다음 링크에서 구할수 있다

공식홈페이지:http://www.airspayce.com/mikem/arduino/RadioHead/

다운로드(v1.74): http://www.airspayce.com/mikem/arduino/RadioHead/RadioHead-1.74.zip

 

 

'아두이노설치경로\libraries'에 넣어줘야 하는데

일반적으로 아래경로에 있다. 

C:\Users\사용자이름\Documents\Arduino\libraries

여기에 다운받은 RadioHead폴더를 풀어서 넣어주자

 
 

설치가 완료되면 RH_ASK.h를 쓸수 있게된다. 복잡하게 볼 필요없이 아래 코드를 적절하게 이용하자

 

 

#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile

#define RH_speed 2000
#define RH_pin_RX 11
#define RH_pin_TX 12
#define RH_pin_PTT 10
#define RH_PTT_inverted false

RH_ASK driver(RH_speed,RH_pin_RX,RH_pin_TX,RH_pin_PTT,RH_PTT_inverted);

uint8_t RF_buff[64];//uno192max
uint8_t RF_buff_sizeof = sizeof(RF_buff);







void setup()
{
    Serial.begin(9600);
    if (driver.init())
    {
         Serial.println("RH init success");
    }
    else
    {
         Serial.println("RH init failed");
    }
}

void RH_print(String Message)
{

    int MessageLength = Message.length();

    uint8_t msg[MessageLength];

    Message.getBytes(msg,MessageLength+1);

    driver.send(msg, MessageLength);
    driver.waitPacketSent();

}



String RH_readString()
{

    uint8_t buflen = sizeof(RF_buff);

    if (driver.recv(RF_buff, &RF_buff_sizeof))
    {
      return (String)(char*)RF_buff;
    }

    return "";
}

void loop()
{

    String message = RH_readString();

    if(message!="")
    {
      Serial.println(message);
    }



    RH_print("Hello World!");

    delay(1000);

}

 

 

 

부품은 아두이노 RF 433이라고 치면 나온다

내가 살때당시에는 안테나 따로 달아야 했는데 요샌 비싼거사면 안테나도 같이 주더라

'아두이노' 카테고리의 다른 글

자이로 좌표계  (0) 2018.02.17
attiny 쓰기  (0) 2018.02.11
각도 계산 스크립트  (0) 2017.10.20
posted by 모카쨩

  • total
  • today
  • yesterday

Recent Post

저사양 유저용 블로그 진입