// Deklaracja wejsc
const int WE1_pin = 14;
const int WE2_pin = 15;
const int WE3_pin = 16;
const int WE4_pin = 17;
const int WE5_pin = 18;
const int WE6_pin = 19;
//Deklaracja wyjsc
const int WY1_pin = 9;
const int WY2_pin = 8;
const int WY3_pin = 7;
const int WY4_pin = 6;
const int WY5_pin = 5;
const int WY6_pin = 4;
const int led_pin = 13;
//Deklaracja wejscia ustalajacego prog
const int Prog_pin = A6;
//Deklaracja zmiennych
int WE1_licznik = 0;
int WE2_licznik = 0;
int WE3_licznik = 0;
int WE4_licznik = 0;
int WE5_licznik = 0;
int WE6_licznik = 0;
int WE1_stan = 0;
int WE2_stan = 0;
int WE3_stan = 0;
int WE4_stan = 0;
int WE5_stan = 0;
int WE6_stan = 0;
int WE1_pop_stan = 0;
int WE2_pop_stan = 0;
int WE3_pop_stan = 0;
int WE4_pop_stan = 0;
int WE5_pop_stan = 0;
int WE6_pop_stan = 0;
int Prog_odczyt = 0;
int Prog = 0;
int led = LOW;
//Deklaracja odmierzania czasu
unsigned long Czas = 0;
unsigned long Pop_czas = 0;
const long Przedzial = 5000;
void setup()
{
//Inicjalizacja wejsc
pinMode(WE1_pin, INPUT_PULLUP);
pinMode(WE2_pin, INPUT_PULLUP);
pinMode(WE3_pin, INPUT_PULLUP);
pinMode(WE4_pin, INPUT_PULLUP);
pinMode(WE5_pin, INPUT_PULLUP);
pinMode(WE6_pin, INPUT_PULLUP);
//Inicjalizacja wyjsc
pinMode(WY1_pin, OUTPUT);
pinMode(WY2_pin, OUTPUT);
pinMode(WY3_pin, OUTPUT);
pinMode(WY4_pin, OUTPUT);
pinMode(WY5_pin, OUTPUT);
pinMode(WY6_pin, OUTPUT);
pinMode(led_pin, OUTPUT);
}
void loop()
{
//Odczyt wejsc
WE1_stan = digitalRead(WE1_pin);
WE2_stan = digitalRead(WE2_pin);
WE3_stan = digitalRead(WE3_pin);
WE4_stan = digitalRead(WE4_pin);
WE5_stan = digitalRead(WE5_pin);
WE6_stan = digitalRead(WE6_pin);
Prog_odczyt = analogRead(Prog_pin);
//Konwersja progu z pomiaru ADC
Prog = map(Prog_odczyt, 0, 1023, 0, 50);
//Odczyt czasu
Czas = millis();
//Porownanie stanu wejsc z poprzednim
if (WE1_stan != WE1_pop_stan)
{
if (WE1_stan == LOW)
{
WE1_licznik++;
}
}
if (WE2_stan != WE2_pop_stan)
{
if (WE2_stan == LOW)
{
WE2_licznik++;
}
}
if (WE3_stan != WE3_pop_stan)
{
if (WE3_stan == LOW)
{
WE3_licznik++;
}
}
if (WE4_stan != WE4_pop_stan)
{
if (WE4_stan == LOW)
{
WE4_licznik++;
}
}
if (WE5_stan != WE5_pop_stan)
{
if (WE5_stan == LOW)
{
WE5_licznik++;
}
}
if (WE6_stan != WE6_pop_stan)
{
if (WE6_stan == LOW)
{
WE6_licznik++;
}
}
delay(5);
//Zapis aktualnego stanu jako poprzedni
WE1_pop_stan = WE1_stan;
WE2_pop_stan = WE2_stan;
WE3_pop_stan = WE3_stan;
WE4_pop_stan = WE4_stan;
WE5_pop_stan = WE5_stan;
WE6_pop_stan = WE6_stan;
if (Czas - Pop_czas >= Przedzial)
{
//Wysterowanie wyjsc
if (WE1_licznik >= Prog)
{
digitalWrite(WY1_pin, HIGH);
}
else
{
digitalWrite(WY1_pin, LOW);
}
if (WE2_licznik >= Prog)
{
digitalWrite(WY2_pin, HIGH);
}
else
{
digitalWrite(WY2_pin, LOW);
}
if (WE3_licznik >= Prog)
{
digitalWrite(WY3_pin, HIGH);
}
else
{
digitalWrite(WY3_pin, LOW);
}
if (WE4_licznik >= Prog)
{
digitalWrite(WY4_pin, HIGH);
}
else
{
digitalWrite(WY4_pin, LOW);
}
if (WE5_licznik >= Prog)
{
digitalWrite(WY5_pin, HIGH);
}
else
{
digitalWrite(WY5_pin, LOW);
}
if (WE6_licznik >= Prog)
{
digitalWrite(WY6_pin, HIGH);
}
else
{
digitalWrite(WY6_pin, LOW);
}
Pop_czas = Czas;
WE1_licznik = 0;
WE2_licznik = 0;
WE3_licznik = 0;
WE4_licznik = 0;
WE5_licznik = 0;
WE6_licznik = 0;
if (led == LOW)
{
led = HIGH;
}
else
{
led = LOW;
}
digitalWrite(led_pin, led);
}
}