前提・実現したいこと
三軸加速度から値を受け取ってその値をLEDから出力したいんですけど回路が分かりません。
どのようにつなげたらよいでしょうか。
ソースコードです
const int B_PWMpin = 9;
const int G_PWMpin = 10;
const int R_PWMpin = 11;
int dataX, dataY, dataZ;
int slantX, slantY, slantZ;
int R_value, G_value, B_value;
void setup() {
Serial.begin(9600);
}
void loop() {
dataX = analogRead( A0 ) * 5.0 / 1023.0 - 2.5; //A0から読み取る
dataY = analogRead( A1 ) * 5.0 / 1023.0 - 2.5;
dataZ = analogRead( A2 ) * 5.0 / 1023.0 - 2.5;
slantX = 180.0 * atan2( dataX, sqrt( dataY * dataY + dataZ * dataZ) ) / M_PI;
slantY = 180.0 * atan2( dataY, sqrt( dataX * dataX + dataZ * dataZ) ) / M_PI;
slantZ = 180.0 * atan2( sqrt( dataX * dataX + dataY * dataY), dataZ ) / M_PI;
if(slantX<0){
slantX=slantX*(-1);
R_value=256/90slantX;
}else if(slantX>=0){
R_value=256/90slantX;
}
if(slantY<0){
slantX=slantX*(-1);
G_value=256/90slantY;
}else if(slantY>=0){
G_value=256/90slantY;
}
if(slantZ<0){
slantZ=slantZ*(-1);
B_value=256/90slantZ;
}else if(slantZ<0){
B_value=256/90slantZ;
}
//x軸の変位で赤の強さが変わる
for(int i=0;i++;i<200){
analogWrite(R_PWMpin,R_value);
analogWrite(G_PWMpin,G_value);
analogWrite(B_PWMpin,B_value);
delay(1000);
}
}