見出し画像

船のやつをつくる②

こんにちは。文理融合系女子のすしこ🍣とお茶子🍵です。
前回の記事はこちら⇒観覧車をつくる①
          メリーゴーランドをつくる①
          船のやつをつくる①

最後のコード解説、船を揺らすと角度によって色が変わるコード内容に触れていきたいと思います。

コード内容がこちら

#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);

これは青色と赤色に変化します。

ぜひ、いろんな色を試してみてください!!!

長々と難しいことを書きましたが、完成したときは楽しいので
頑張りましょう…☺


すしこ🍣&お茶子🍵