суббота, 23 марта 2013 г.

Задачка для Arduino: 3 кнопки и 3 светодиода (3Buttons_3LEDs)

Попалась на глаза задачка попрограммировать:
Написать программу осуществляющую опрос трех кнопок,нажатие каждой из кнопок назначит выключение светодиода соответствующего цвета.Время выключения каждого 1 секунда. Программа должна выполнятся бесконечно.
Так как время было свободное, да и с целью показать, насколько BlockDuino подходит для обучающих целей написал программку-решение и реализовал все это в железе. Благо, всё было под рукой.

Итак код:

const int buttonPin[] = {2,3,4};
const int ledPin[] =  {11,12,13};

long previousMillis[] = {0,0,0}; 

long interval = 1000;

void setup() {
  for(int i=0; i<3; i++)
  {
    pinMode(ledPin[i], OUTPUT);
    digitalWrite(ledPin[i], HIGH);
    pinMode(buttonPin[i], INPUT);
  }
}

void loop() {
  unsigned long currentMillis = millis();
  for(int i=0; i<3; i++)
  {
    if (digitalRead(buttonPin[i]) == HIGH)
    {
      digitalWrite(ledPin[i], LOW);
      previousMillis[i] = currentMillis;
    } else
    if (currentMillis - previousMillis[i] > interval)
    {
      digitalWrite(ledPin[i], HIGH);
    }
  }
}

Железо:
 Состоит из BlockDuino, PlugIO, 3шт CleClo_Button, 3шт CleClo_LED  и 6шт трехжильных проводов.
Задачка для Arduino: кнопки и светодиоды

Видеоотчет: