問題点
・テープLEDを光らす ◯
・可変抵抗でLEDの光の調整 ◯
・スイッチを押したときにテープLEDが光る ◯
・可変抵抗でテープLEDの光の調整 ◯
・スイッチを押してテープLEDを光らせる。可変抵抗で調整した輝度で ←今ここ
可変抵抗で光の調整まではできたのですが、スイッチを入れると、
スイッチを押しながら可変抵抗を回さないと調整ができません。
押しながらではなく、先に調整してからスイッチを押して光らせたいです。
スケッチ
Arduino
1#include "FastLED.h" 2 3#define DATA_PIN 6 4#define NUM_LEDS 144 5#define PIN_BRI A0 6const int switch8 = 8; 7 8CRGB leds[NUM_LEDS]; 9 10int bri = 0; 11 12void setup(){ 13 pinMode(switch8, INPUT); 14 LEDS.addLeds<WS2812,DATA_PIN,RGB>(leds,NUM_LEDS); 15} 16 17void loop(){ 18 if (load_vol()) { 19 set_FastLED(); 20 FastLED.show(); 21 } 22 delay(1); 23} 24 boolean load_vol() { 25 static int prev_bri = 0; 26 int vol_bri = analogRead(PIN_BRI); 27 boolean changed = false; 28 int diff = 0; 29 diff = prev_bri - vol_bri; 30 if (abs(diff) > 10) { 31 bri = constrain(map(vol_bri, 10, 1000, 0, 255), 0, 150); 32 prev_bri = vol_bri; 33 changed = true; 34 } 35 return changed; 36 } 37 38 void set_FastLED(){ 39 if (HIGH,digitalRead(switch8)) { 40 FastLED.showColor(CHSV(255, 255, bri)); 41} 42 }
前の質問で言ったことの繰り返しになりますが、
プログラムはめちゃくちゃにいじって「当たり」を狙ってもそうそうあたるものではありません。
初心者だから、とか言ってもコンピュータは容赦してくれないので、最低限の言語文法とか基本的な構成は学んでください。
ArduinoはC++をベースにしています。C++はCをベースにしています。少なくともCの入門書のレベルを(本を見ながらで構いませんが)それなりにこなせないとオリジナルのプログラムを作るのは厳しいと思います。
それは十分理解しています。Arduino入門などは何冊も読みました。
ただC++の本は読んでいませんでした。何かおすすめの本とかありますか?
ArduinoはあまりC++の機能を使わないプログラムが多いのですが、FastLEDはわりとC++っぽい部分が多いように思います。
C++の入門書って全然把握してないので、私からおすすめできるようなのはありません。
純粋にC++の話であれば、ここ数年で結構規格に追加項目があったので新しめの本の方がいいかとは思いますが、Arduinoの世界で暮らすにはその辺はあまり気にしなくてもいいかとは思います。本屋に行ってパラパラと眺めてみて自分に合いそうなものを探す...とかいうことになるでしょうか。
回答1件
あなたの回答
tips
プレビュー