船のやつをつくる②
こんにちは。文理融合系女子のすしこ🍣とお茶子🍵です。
前回の記事はこちら⇒観覧車をつくる①
メリーゴーランドをつくる①
船のやつをつくる①
最後のコード解説、船を揺らすと角度によって色が変わるコード内容に触れていきたいと思います。
コード内容がこちら
#include <Wire.h>
#include "MMA7660.h"
MMA7660 accelemeter;
#include "ChainableLED.h"
ChainableLED leds(4, 5, 4);
void setup()
{
accelemeter.init();
Serial.begin(9600);
}
void loop()
{
int8_t x;
int8_t y;
int8_t z;
accelemeter.getXYZ(&x,&y,&z);
Serial.print("x = ");
Serial.println(x);
int val = x;
int led = map(val , -25,25 , 0, 255);
Serial.println("*************");
leds.setColorRGB(0,led,255-led,0);
leds.setColorRGB(1,led,255-led,0);
leds.setColorRGB(2,led,255-led,0);
leds.setColorRGB(3,led,255-led,0);
delay(100)
}
前半部分(初期設定)
(//以降の文が説明文です。実際のコードではありません)
#include <Wire.h>
#include "MMA7660.h"
//ライブラリの読み込み
MMA7660 accelemeter;
//MMA7660加速度センサーを使いますと宣言
#include "ChainableLED.h"
//ライブラリの読み込み
ChainableLED leds(4, 5, 4);
// (接続ピンの場所, 接続ピン+1, LED数 )のRGBledを使いますという宣言
void setup()
{
accelemeter.init(); //加速度センサーの値を一度初期化する
Serial.begin(9600);
}
前半はざっくり説明していきました。
加速度センサーを使うための初期設定と観覧車の記事で説明したのと同様にLEDのコードを差し込む位置などを指定しています。
後半部分
(//以降の文が説明文です。実際のコードではありません)
後半部分で角度の数値によう色の設定をしています。今回使用した加速度センサーは私たちでも難しかったので、説明が分かりにくいかもしれません…
void loop()
{
int8_t x; //1 バイトの符号付き整数(256文字)をxに入れる
int8_t y;
int8_t z;
accelemeter.getXYZ(&x,&y,&z); //X軸Y軸Z軸方向の傾きの情報を取得
Serial.print("x = ");
Serial.println(x);
int val = x;//valという変数にxの値を代入
int led = map(val , -25,25 , 0, 255);
//valには-25から25までの数字が入っているのでそれを0から255の割合に書き換える
Serial.println("*************");
leds.setColorRGB(0,led,255-led,0);
leds.setColorRGB(1,led,255-led,0);
leds.setColorRGB(2,led,255-led,0);
leds.setColorRGB(3,led,255-led,0);
//ledの色を決める。(〇番目のLED,赤色の度合い,緑色の度合い,青色の度合い)
delay(100) //void loopの中身を0.01秒ごとに繰り返す
}
ざっくりとはこんな感じです。傾きの数字を設定しているのがこの部分
int led = map(val , -25,25 , 0, 255);
このvalはxに代入するための入れ物です。
//valには-25から25までの数字が入っているのでそれを0から255の割合に書き換えるという意味ですが
例えばval = 25ならば led = 255、val = 0ならば led = 125、 val = -25 ならば led = 0
なぜ0から255に変えるのかというと、RGBledで赤、緑、青、をそれぞれ示す値は0(無色)から255(赤)となるようにできているからです。
つまり、valの数値が25=傾きが25の値になると、ledの数値が255=赤みが最大になる。相対する角度と色味をここで設定しています。
ちなみにLEDの色はいろんな色に変えることができます。
leds.setColorRGB(0,led,0,255-led);
leds.setColorRGB(1,led,0,255-led);
leds.setColorRGB(2,led,0,255-led);
leds.setColorRGB(3,led,0,255-led);
これは青色と赤色に変化します。
ぜひ、いろんな色を試してみてください!!!
長々と難しいことを書きましたが、完成したときは楽しいので
頑張りましょう…☺
すしこ🍣&お茶子🍵