Go Down

Topic: Помогите с написанием кода (RGB-светодиод) (Read 12077 times) previous topic - next topic

neznayka_V_shlape

Пользуясь книгой написал код (arduino UNO), при котором RGB-светодиод по нажатию кнопки меняет цвета (всего 7 цветов).
Но очень хотелось бы изменить его так, чтобы каждый цвет еще и мигал. Подскажите пож , как это сделать, сам уже пробовал, но не получилось!

Вот код:
Code: [Select]

const int BUTTON=2;
const int GLED=10;
const int RLED=11;
const int BLED=9;


boolean lastButton = LOW;
boolean currentButton = LOW;
int ledMode=0;

void setup()
{
 
  pinMode (BLED, OUTPUT);
  pinMode (GLED, OUTPUT);
  pinMode (RLED, OUTPUT);
  pinMode (BUTTON, INPUT);

}


boolean debounce(boolean last)
{
  boolean  current = digitalRead(BUTTON);
if (last != current)
{
  delay(5);
  current = digitalRead (BUTTON);
  return current;
}
}

void setMode( int mode)
{
  // КРАСНЫЙ
  if (mode ==1)
  {
 digitalWrite(RLED, HIGH);     
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
  }
 
 
// зеленый
else if( mode==2)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED,HIGH );
digitalWrite(BLED, LOW);
}

// синий
else if( mode==3)
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
//ПУРПУРНЫЙ КР+С
else if( mode==4)
{
digitalWrite(RLED, 127);
digitalWrite(GLED, 0);
digitalWrite(BLED, 127);
}
//бирюзовый с+зел
else if( mode==5)
{
digitalWrite(RLED, 0);
digitalWrite(GLED, 200);
digitalWrite(BLED, 90);
}
//ОРАНЖЕВЫЙ ЗЕЛ+КР
else if( mode==6)
{
digitalWrite(RLED, 224);
digitalWrite(GLED, 1);
digitalWrite(BLED, 0);
}
// БЕЛЫЙ  ЗЕЛ+КР+С
else if( mode==7)
{
digitalWrite(RLED, 127);
digitalWrite(GLED, 127);
digitalWrite(BLED, 127);
}

 else
 {
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
 }
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW &&  currentButton== HIGH)
{
ledMode++;
}
lastButton=currentButton;
if (ledMode==8)
ledMode=0;
setMode(ledMode);
}





Nilab

Вам надо что то типа так
Code: [Select]

void loop()
{

setMode(yourcolor);
delay(100)
setMode(off);
delay(100);

}


Go Up