前提・実現したいこと
加速度センサーを用いて、力を加えると色が変わるライトを作りたいです。
arduinoのハード面とコード、できたつもりなのですが、ライトがうまく光りません。
動かさないと白い光がつくのですが、力を加えると光がつきません。
発生している問題・エラーメッセージ
以下のサイトを参考にしています。
第42回 Arduinoでカラーセンサ! 〜Arduino+センサの開発が劇的に楽になる!ローム・センサ評価キットを試してみた
ArduinoでハイパワーのフルカラーLEDを制御する
試しに2つ目のサイトのコードを読み込んだのですが、上手く光らず、何がだめなのかわからなくなりました。
使用している道具は以下です。
加速度センサモジュール
センサシールド
放熱基盤付き1WハイパワーフルカラーLED
可変抵抗
arduino Uno
コード
Processing
1#include <Wire.h> 2#include <KX224_I2C.h> 3 4KX224 kx224(KX224_DEVICE_ADDRESS_1E); 5 6void setup() { 7 byte rc; 8 9 Serial.begin(9600); 10 while (!Serial); 11 12 Wire.begin(); 13 14 rc = kx224.init(); 15 if (rc != 0) { 16 Serial.println(F("KX224 initialization failed")); 17 Serial.flush(); 18 } 19 20 pinMode(9,OUTPUT); 21 pinMode(10,OUTPUT); 22 pinMode(11,OUTPUT); 23} 24 25void loop() { 26 byte rc; 27 float acc[3]; 28 int colR = 0; 29 int colG = 0; 30 int colB = 0; 31 32 rc = kx224.get_val(acc); 33 if (rc == 0) { 34 Serial.write("KX224 (X) = "); 35 Serial.print(acc[0]); 36 Serial.println(" [g]"); 37 Serial.write("KX224 (Y) = "); 38 Serial.print(acc[1]); 39 Serial.println(" [g]"); 40 Serial.write("KX224 (Z) = "); 41 Serial.print(acc[2]); 42 Serial.println(" [g]"); 43 Serial.println(); 44 } 45 46 delay(500); 47 48 //色を決定 49 if(acc[2] < 3){ 50 colR = 255; 51 colG = 255; 52 colB = 255; 53 } 54 else if(3 <= acc[2] < 500){ 55 colR = 0; 56 colG = 255; 57 colB = 0; 58 } 59 else if(500 <= acc[2] < 1000){ 60 colR = 0; 61 colG = 0; 62 colB = 255; 63 } 64 else if(1000 <= acc[2] < 1500){ 65 colR = 0; 66 colG = 234; 67 colB = 234; 68 } 69 else{ 70 colR = 0; 71 colG = 255; 72 colB = 0; 73 } 74 delay(20); 75 76 analogWrite(9,colR); 77 analogWrite(10,colG); 78 analogWrite(11,colB); 79 80 delay(20); 81}
試したこと
コードのもとは、加速度センサのサンプルコードを改変しています。
製品ページに行くとダウンロードができるので、それに継ぎ足した感じです。
赤色が強く出るので、赤色の抵抗の強さを大きくしました。(RGB各255で白の状態にした)
揺れる大きさや色の設定はかなり適当です。Z軸にどれだけ力がかかるかで光の色が変わる設定にしているつもりなので、改善点や問題点があればご指摘お願いします。Z軸への力のかけ方はスーパーの袋に入れて振り回しています。
様々なサイトを参考にしましたが、主に上げた2つのサイトを見ていました。
私はプログラミングに詳しいわけではないのですが、やってみたいという興味で初めて見ました。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー