пятница, 14 марта 2014 г.

Светодиодная шкала

Несколько вариантов работы светодиодной шкалы:
слева-направо и наоборот
Одиночное передвижение или в возрастающем порядке.
С кнопочкой пока не срослось все, но доделаю.

Главное преимущество данной работы - использование функций. На первых этапах работы не каждый начнет работу с ними, но они значительно упрощают код программы.

Так как каждая функция выдает в результат мигание, а не какое-либо значение, то функции задаются через недействительными функции, в противном случае задавалось бы через тип переменных, например, внутр функции

# Определить FIRST_LED_PIN 2
# Определить LAST_LED_PIN 13
внутр контактный;
внутр пит;



недействительными установки ()
{
    для (внутр контактный = FIRST_LED_PIN; контактный <= LAST_LED_PIN; + + контактный)
    pinMode (контактный, ВЫХОД);
}

недействительными петля ()
{
  пит = пит +1;
  переключатель (число) {
    Случай 1: away1 (FIRST_LED_PIN, LAST_LED_PIN, 1000); сломать;
    Случай 2: away2 (FIRST_LED_PIN, LAST_LED_PIN, 1000); сломать;
    Случай 3: away3 (FIRST_LED_PIN, LAST_LED_PIN, 1000); сломать;
    Случай 4: away4 (FIRST_LED_PIN, LAST_LED_PIN, 1000); сломать;
    по умолчанию: не (FIRST_LED_PIN, LAST_LED_PIN); сломать;
  }
}

недействительным, не (внутр минимальны, внутр максимальная) {
  для (контактный = минимальны; контактный <= максимальная; + + контактный) {
    digitalWrite (контактный, LOW);
  };
};
/ / Непрерывная дорожка, потом исчезает справа-налево
недействительными away1 (внутр минимальны, внутр максимальна, внутр long_time)
{
  для (контактный = минимальны; контактный <= максимальная; + + контактный) {
    digitalWrite (контактный, HIGH);
    задержка (long_time);
  };
  для (контактный = минимальны; контактный <= максимальная; + + контактный) {
    digitalWrite (контактный, LOW);
  };
}

/ / Непрерывная дорожка, потом исчезает слева-направо
недействительными away2 (внутр минимальны, внутр максимальна, внутр long_time)
{
  для (контактный = максимальная; контактный> минимальны;-контактный) {
    digitalWrite (контактный, HIGH);
    задержка (long_time);
  };
  для (контактный = максимальная; контактный <= минимальны;-контактный) {
    digitalWrite (контактный, LOW);
  };
}

/ / По одному сегменту справа-налево
недействительными away3 (внутр минимальны, внутр максимальна, внутр long_time)
{
  для (контактный = минимальны; контактный <= максимальная; + + контактный) {
    digitalWrite (контактный, HIGH);
    задержка (long_time);
    digitalWrite (контактный, LOW);
  };
}

/ / По одному сегменту cлева-направо
недействительными away4 (внутр минимальны, внутр максимальна, внутр long_time)
{
  для (контактный = максимальная; контактный> минимальны;-контактный) {
    digitalWrite (контактный, HIGH);
    задержка (long_time);
    digitalWrite (контактный, LOW);
  };
}