Повтор части кода
- Войдите на сайт для отправки комментариев
Пнд, 28/11/2016 - 01:01
Привет Всем!
Народ, помогите пожалуйста! В общем, нужно сделать повтор части кода. Например, чтобы красный диод мигал, а не моргнул 1 раз и "сдох".
unsigned long x;
int r = 2; //Красный диод
int g = 3; //Зелёный диод
int b = 4; //Синий диод
int d = 1;
void setup()
{
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
void loop()
{
if (Serial.available())
{
x = Serial.parseInt();
//Красный
if (x>=2 && x<=100)
{
d = 101-x;
{
analogWrite(r, 0);
analogWrite(g, 255);
analogWrite(b, 255);
delay(d);
analogWrite(r, 255);
delay(d);
}
}
//Зелёный
if (x>=102 && x<=200)
{
d = 201-x;
{
analogWrite(r, 255);
analogWrite(g, 0);
analogWrite(b, 255);
delay(d);
analogWrite(g, 255);
delay(d);
}
}
//Синий
if (x>=202 && x<=300)
{
d = 301-x;
{
analogWrite(r, 255);
analogWrite(g, 255);
analogWrite(b, 0);
delay(d);
analogWrite(b, 255);
delay(d);
}
}
}
}
Забыл дописать: команды идут через блютуз модуль HC-05, со смартфона.
Закрывающую фигурную скобку из строки 69 вставьте после строки 26.
неа, всё так же, 1 раз моргнул и погас
про скобку правильно сказали, и почему analogWrite ?
уверены, что PWM есть на этих пинах ?
В двух словах задачу то опишите.
Переместив скобку получил тоже самое, ничего не изменилось. Суть следующая: имеется Arduino Mega 2560, HC-05, 12 RGB диодов, смартфон и программа, сделанная в App Invertor'e. Чтобы упростить код оставил только 1 лампочку. Плавное изменение цвета я делать не буду, интересует только ВКЛ/ВЫКЛ. Управление будет осуществляться, соответственно, со смартфона, 3-мя слайдерами. PWM на пинах 2-13.
Как то раз получилось сделать через оператор "return", но как так вышло так и не понял. Просто игрался со скобками и случайно вышло.
Он моргает один раз после каждого поступления команды с модуля?
Нуу хочу чтоб мигал постоянно. Двинул слайдер красного диода - мигает, например, чаще. Двинул в другую - реже. Двинул слайдер зелёного диода - замигал зелёный. Как то так)
На сколько я могу судить у тебя код считывает целое число из сериал. Далее ты иксу присваиваешь значение. Далее ты прогоняешь все по ифам. а потом ты ждешь нового значения в сериал и цыкл у тебя замкнут на это ожидание. по этому при приходе какого-либо значения у тебя красный/синий/желтый моргает только один раз.
Тебе надо уйти от вечного ожидания значения. я ыижу это так:
if (Serial.available()) { x = Serial.parseInt(); } else { все, что у тебя написано ниже}Дописал "else"... И тут понял: косяк были и в коде, и в приложении. Скачал Bluetooth Terminal, ввёл "50" и лампочка замигала. Сейчас всё работает. Спасибо всем, кто откликнулся, не оставили в беде! :-)