6050
좌표
위(0,0,-1)
앞(0,-1,0)
오른쪽(-1,0,0)
??시계각도계(좌표평면기준)
좌표가 전부 반대방향이니 주의
이렇게 놓으면 유니티랑 똑같음
'아두이노' 카테고리의 다른 글
아두이노 Due 설치방법 (0) | 2020.06.27 |
---|---|
attiny 쓰기 (0) | 2018.02.11 |
각도 계산 스크립트 (0) | 2017.10.20 |
6050
좌표
위(0,0,-1)
앞(0,-1,0)
오른쪽(-1,0,0)
??시계각도계(좌표평면기준)
좌표가 전부 반대방향이니 주의
이렇게 놓으면 유니티랑 똑같음
아두이노 Due 설치방법 (0) | 2020.06.27 |
---|---|
attiny 쓰기 (0) | 2018.02.11 |
각도 계산 스크립트 (0) | 2017.10.20 |
겜메 시절에 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 |
그런건 없다
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 |