質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

3287閲覧

Arduino カウンターがなぜか進みません。

Tats.N

総合スコア62

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2016/02/12 06:25

Arduino初心者です。
3色LEDを1色づつ順番に光らせようとしているのですが、colorSwitchが1から進まず、出来ません。
試しにif(colorSwitch = 0){...}else if(colorSwitch = 1){...}else if(colorSwitch = 2){...}を削除してみると、なぜかcolorSwitchのカウンターは回りました。何が間違ってるのかさっぱりです、、、分かる方おられましたらご教授ください。

Arduino

1int red = 9; 2int blue = 10; 3int green = 11; 4int brightnessRed = 0; 5int brightnessGreen = 0; 6int brightnessBlue = 0; 7int fadeAmount = 5; 8int loopCount = 0; 9int colorSwitch = 0; 10 11void setup() { 12 // put your setup code here, to run once: 13 pinMode(red, OUTPUT); 14 pinMode(green, OUTPUT); 15 pinMode(blue, OUTPUT); 16 Serial.begin(9600); 17 18} 19 20void loop() { 21 // put your main code here, to run repeatedly: 22 analogWrite(red, brightnessRed); 23 analogWrite(green, brightnessGreen); 24 analogWrite(blue, brightnessBlue); 25 26 loopCount++; 27 28 if(loopCount >= 103){//Fadeで光って消えるまでのループ回数が102回 29 loopCount = 0; 30 colorSwitch++; 31 } 32 33 if(colorSwitch >= 3){ 34 colorSwitch = 0; 35 } 36 37 38 39 if(colorSwitch = 0){ 40 brightnessRed = brightnessRed + fadeAmount; 41 42 if(brightnessRed == 0 || brightnessRed == 255){ 43 fadeAmount = -fadeAmount; 44 } 45 delay(30); 46 47 }else if(colorSwitch = 1){ 48 brightnessGreen = brightnessGreen + fadeAmount; 49 50 if(brightnessGreen == 0 || brightnessGreen == 255){ 51 fadeAmount = -fadeAmount; 52 } 53 delay(30); 54 55 }else if(colorSwitch = 2){ 56 brightnessBlue = brightnessBlue + fadeAmount; 57 58 if(brightnessBlue == 0 || brightnessBlue == 255){ 59 fadeAmount = -fadeAmount; 60 } 61 delay(30); 62 } 63 64 65 Serial.print("colorSwitch:"); 66 Serial.print(colorSwitch); 67 Serial.print("loopCount:"); 68 Serial.println(loopCount); 69} 70

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

厳密にはC言語ではないですが、C言語でありがちなケアレスミスですね。

if(colorSwitch = 0)の演算子が、=(イコール1つ)になっています。
if(colorSwitch == 0)(イコール2つ)にしてみるとどうでしょうか。
他の2つも同様です。

投稿2016/02/12 08:31

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tats.N

2016/02/12 08:39

なるほど!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問