Sprawdziłem i to co napisałem wcześniej nie działa przynajmniej na konsoli.
Kod:
// przypisanie nazw do pinów
#define trigPin 3 // podłączenie czujnika ultradźwiękowego
#define echoPin 2 // podłączenie czujnika ultradźwiękowego
#define ldgr 52 // dioda zielona odtwarzania sekwencji
#define ldrd 53 // dioda czerwona zatrzymania sekwencji
#define fr 11 // wejscie z fotorezystora
#define sw 12 // dodatkowy przycisk wyzwalania
#define k1 22 // przekaźnik 1
#define k2 23 // przekaźnik 2
#define k3 24 // przekaźnik 3
#define k4 25 // przekaźnik 4
#define k5 26 // przekaźnik 5
#define k6 27 // przekaźnik 6
#define k7 28 // przekaźnik 7
#define k8 29 // przekaźnik 8
#define k9 30 // przekaźnik 9
#define k10 31 // przekaźnik 10
#define k11 32 // przekaźnik 11
#define k12 33 // przekaźnik 12
#define k13 34 // przekaźnik 13
#define k14 35 // przekaźnik 14
#define k15 36 // przekaźnik 15
#define k16 37 // przekaźnik 16
// przypisanie stanów do pinów
int l = 1; // licznik zdarzeń
int sk1 = HIGH; // włączone
int sk2 = HIGH; // włączone
int sk3 = HIGH; // włączone
int sk4 = HIGH; // włączone
int sk5 = HIGH; // włączone
int sk6 = HIGH; // włączone
int sk7 = HIGH; // włączone
int sk8 = HIGH; // włączone
int sk9 = HIGH; // włączone
int sk10 = HIGH; // włączone
int sk11 = HIGH; // włączone
int sk12 = HIGH; // włączone
int sk13 = HIGH; // włączone
int sk14 = HIGH; // włączone
int sk15 = HIGH; // włączone
int sk16 = HIGH; // włączone
int sk = HIGH;
int czastrwania = 15; // przypisanie wartości do czasu trwania sekwencji
int tempo = 8000; // określenie tempa załączania
// przypisanie wartośki częstotliwości załąćzania
unsigned long migk1 = tempo;
unsigned long migk2 = tempo;
unsigned long migk3 = tempo;
unsigned long migk4 = tempo;
unsigned long migk5 = tempo;
unsigned long migk6 = tempo;
unsigned long migk7 = tempo;
unsigned long migk8 = tempo;
unsigned long migk9 = tempo;
unsigned long migk10 = tempo;
unsigned long migk11 = tempo;
unsigned long migk12 = tempo;
unsigned long migk13 = tempo;
unsigned long migk14 = tempo;
unsigned long migk15 = tempo;
unsigned long migk16 = tempo;
// przypisanie wartości przesunięcia w czasie załączenia
unsigned long memczask1 ;
unsigned long memczask2 ;
unsigned long memczask3 ;
unsigned long memczask4 ;
unsigned long memczask5 ;
unsigned long memczask6 ;
unsigned long memczask7 ;
unsigned long memczask8 ;
unsigned long memczask9 ;
unsigned long memczask10 ;
unsigned long memczask11 ;
unsigned long memczask12 ;
unsigned long memczask13 ;
unsigned long memczask14 ;
unsigned long memczask15 ;
unsigned long memczask16 ;
unsigned long czasstart=0;
unsigned long aczas = 0;
unsigned long StartCzas ;
byte stat = 0;
void setup() {
Serial.begin(9600);
pinMode(k1, OUTPUT);
pinMode(k2, OUTPUT);
pinMode(k3, OUTPUT);
pinMode(k4, OUTPUT);
pinMode(k5, OUTPUT);
pinMode(k6, OUTPUT);
pinMode(k7, OUTPUT);
pinMode(k8, OUTPUT);
pinMode(k9, OUTPUT);
pinMode(k10, OUTPUT);
pinMode(k11, OUTPUT);
pinMode(k12, OUTPUT);
pinMode(k13, OUTPUT);
pinMode(k14, OUTPUT);
pinMode(k15, OUTPUT);
pinMode(k16, OUTPUT);
pinMode (sw, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(sw) == HIGH )
{
stat = 0;
// tu trzeba dopisać sekwencję stop
}
if (digitalRead(sw) == LOW && stat == 0){
stat = 1;
StartCzas = millis();
memczask1 = StartCzas - 1000;
memczask2 = StartCzas - 2000;
memczask3 = StartCzas - 3000;
memczask4 = StartCzas - 4000;
memczask5 = StartCzas - 5000;
memczask6 = StartCzas - 6000;
memczask7 = StartCzas - 7000;
memczask8 = StartCzas - 8000;
memczask9 = StartCzas - 1000;
memczask10 = StartCzas - 2000;
memczask11 = StartCzas - 3000;
memczask12 = StartCzas - 4000;
memczask13 = StartCzas - 5000;
memczask14 = StartCzas - 6000;
memczask15 = StartCzas - 7000;
memczask16 = StartCzas - 8000;
}
if (digitalRead(sw) == LOW && stat == 1){
aczas = millis();
if ( aczas - memczask1 >= migk1) { //załączanie przekaźnika 1
memczask1 = aczas;
sk1 = !sk1;
digitalWrite(k1, sk1); Serial.print(" 1,");
}
if (aczas - memczask2 >= migk2) { //załączanie przekaźnika 2
memczask2 = aczas;
sk2 = !sk2;
digitalWrite(k2, sk2); Serial.print(" 2,");
}
if (aczas - memczask3 >= migk3) { //załączanie przekaźnika 3
memczask3 = aczas;
sk3 = !sk3;
digitalWrite(k3, sk3); Serial.print(" 3,");
}
if (aczas - memczask4 >= migk4) { //załączanie przekaźnika 4
memczask4 = aczas;
sk4 = !sk4;
digitalWrite(k4, sk4); Serial.print(" 4,");
}
if (aczas - memczask5 >= migk5) { //załączanie przekaźnika 5
memczask5 = aczas;
sk5 = !sk5;
digitalWrite(k5, sk5); Serial.print(" 5,");
}
if (aczas - memczask6 >= migk6) { //załączanie przekaźnika 6
memczask6 = aczas;
sk6 = !sk6;
digitalWrite(k6, sk6); Serial.print(" 6,");
}
if (aczas - memczask7 >= migk7) { //załączanie przekaźnika 7
memczask7 = aczas;
sk7 = !sk7;
digitalWrite(k7, sk7); Serial.print(" 7,");
}
if (aczas - memczask8 >= migk8) { //załączanie przekaźnika 8
memczask8 = aczas;
sk8 = !sk8;
digitalWrite(k8, sk8); Serial.print(" 8,");
}
if (aczas - memczask9 >= migk9) { //załączanie przekaźnika 9
memczask9 = aczas;
sk9 = !sk9;
digitalWrite(k9, sk9); Serial.println(" 9,");
}
if (aczas - memczask10 >= migk10) { //załączanie przekaźnika 10
memczask10 = aczas;
sk10 = !sk10;
digitalWrite(k10, sk10); Serial.print(" 10,");
}
if (aczas - memczask11 >= migk11) { //załączanie przekaźnika 11
memczask11 = aczas;
sk11 = !sk11;
digitalWrite(k11, sk11); Serial.print(" 11,");
}
if (aczas - memczask12 >= migk12) { //załączanie przekaźnika 12
memczask12 = aczas;
sk12 = !sk12;
digitalWrite(k12, sk12); Serial.print(" 12,");
}
if (aczas - memczask13 >= migk13) { //załączanie przekaźnika 13
memczask13 = aczas;
sk13 = !sk13;
digitalWrite(k13, sk13); Serial.print(" 13,");
}
if (aczas - memczask14 >= migk13) { //załączanie przekaźnika 14
memczask14 = aczas;
sk14 = !sk14;
digitalWrite(k14, sk14); Serial.print(" 14,");
}
if (aczas - memczask15 >= migk15) { //załączanie przekaźnika 15
memczask15 = aczas;
sk15 = !sk15;
digitalWrite(k15, sk15); Serial.print(" 15,");
}
if (aczas - memczask16 >= migk16) { //załączanie przekaźnika 16
memczask16 = aczas;
sk16 = !sk16;
digitalWrite(k16, sk16); Serial.print(" 16,");
}
}
}
Wykorzystałem przycisk sw na 12 porcie.
Jak nacisnę to sekwencja leci jak puszczę to się zatrzymuje i rusza po naciśnięciu przycisku od początku.
Czas zwiększyłem 10 razy, aby było łatwiej obserwować.