RGB LED

Тема в разделе "Arduino & Shields", создана пользователем Nikita, 16 окт 2013.

  1. Nikita

    Nikita Гик

    Написал код для управления RGB LED. Можите провеить мой код на правильность написания?


    Код (Text):
    //включаем библиотеки
    #define RED 11
    #define GREEN 10
    #define BLUE 9
    #define FADESPEED 6 // чем выше число, тем медленнее будет эффект затухание
     
    void setup() {
      pinMode(RED, OUTPUT);//выводим пины как выход
      pinMode(GREEN, OUTPUT);
      pinMode(BLUE, OUTPUT);
    }
     
     
    void loop() {
      int R, G, B; //пишем переменную
     
     
      // затухание  от голубого к фиолетовому
      for (R = 0; R < 256; R++) {
        analogWrite(RED, R);
        delay(FADESPEED);
      }
      // затухание от фиолетового к красному
      for (B = 255; B > 0; B--) {
        analogWrite(BLUE, B);
        delay(FADESPEED);
      }
      // затухание от красного к желтому
      for (G = 0; G < 256; G++) {
        analogWrite(GREEN, G);
        delay(FADESPEED);
      }
      // затухание от желтого к зеленому
      for (R = 255; R > 0; R--) {
        analogWrite(RED, R);
        delay(FADESPEED);
      }
      // затухание от зеленого к зеленовато-голубому
      for (B = 0; B < 256; B++) {
        analogWrite(BLUE, B);
        delay(FADESPEED);
      }
      // затухание от зеленовато-голубого к голубому
      for (G = 255; G > 0; G--) {
        analogWrite(GREEN, G);
        delay(FADESPEED);
      }
    }
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    В циклах на убывание последним шагом запишется 1, а не 0.
    Используйте операцию >=.
    А что мешает подключить и проверить? ;)
     
  3. fr0ster

    fr0ster Гик

    ИМХО разница между 1 в порт и 0 в порт малозаметна.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    В данном случае совсем незаметна. А если элементы массива перебирать, например?
    Лучше сразу делать правильно :)
     
  5. Nikita

    Nikita Гик

    я не знаю какой транзисторнадо исполюзовать :)
     
  6. Nikita

    Nikita Гик

    написать этот код было просто по примеру который вы мне когда то давали ;)
     
  7. Unixon

    Unixon Оракул Модератор

    Код (Text):
    const byte COLORS_COUNT = 3;
    const byte PINS_RGB_LED[COLORS_COUNT] = {11,10,9};
    const byte FADE_SPEED = 6;

    void setup()
    {
     for (byte i = 0; i < COLORS_COUNT; i++) pinMode(PINS_RGB_LED[i], OUTPUT);
    }


    void loop()
    {
     for (int color = 0; color < COLORS_COUNT; color++)
     {
      for (byte brightness = 0; brightness <= 255; brightness++)
      {
       analogWrite(PINS_RGB_LED[color], brightness);
       delay(FADE_SPEED);
      }
      for (byte brightness = 255; brightness >= 0; brightness--)
      {
       analogWrite(PINS_RGB_LED[color], brightness);
       delay(FADE_SPEED);
      }
     }
    }
     
  8. Nikita

    Nikita Гик

    а транзистор tip122 подойдёт
     
  9. Unixon

    Unixon Оракул Модератор

    TIP122 довольно мощная штука. Напомните, какая у вас нагрузка. Светодиодная лента?
     
  10. Nikita

    Nikita Гик

    12v 0.5w на метр
     
  11. Unixon

    Unixon Оракул Модератор

    А метров сколько?
     
  12. Nikita

    Nikita Гик

    пака 1метр а потом будет 5