21-11-2021, 16:08
Dopiero się uczę i proszę o pomoc w dopisaniu paru linijek. Jeżeli void zielona() nie zostanie wykonana to void czerwona() też nie zostanie wykonana i odwrotnie i każde przyciśnięcie przycisku mignie przypisana do niej led.
long cm; //zielona
long cm1; //czerwona
long pm,pm_1; //zielona
long pm0,pm_2; //czerwona
long licznik; //zielona
long licznik2; //czerwona
byte start; //zielona
byte start1; //czerwona
int liczbaliosci3 = 0;
int statz,startz_1; //zielona
int statcz,startcz_2; //czerwona
byte czas_oczekiwania = 5; //zielona
byte czas_oczekiwania2 = 5; //czerwona
int liczba1 = 3; //ilość przyciśnięć zielona
int liczba2 = 3; //ilość przyciśnięć czerwona
int liczbaczas1 = 10; //czas wyłączenia led zielona
int liczbaczas2 = 10; //czas wyłączenia led czerwona
void setup() {
Serial.begin(9600);
pinMode(5, INPUT_PULLUP); //przycisk zielonej
pinMode (12, OUTPUT); //led zielonej
pinMode(4, INPUT_PULLUP); //przycisk czerwonej
pinMode (11, OUTPUT); //led czerwonej
}
void loop() {
zielona();
czerwona();
}
void zielona() {
//=========================zielona=============================
if ( start > 0 ){
start1 = 0;}
//if (start==3){
//liczbaliosci3 ++;
//}
cm = millis()/100;
if ( digitalRead(5) == HIGH ){statz = 0;}
if ( digitalRead(5) == LOW and statz == 0 )
{start ++;statz = 1;pm = cm;}
if ( start > 0 ){
if ((cm - pm) == 1){licznik ++;pm = cm;}}
if ( licznik > czas_oczekiwania and digitalRead(12) == 0 )
{licznik = 0;start = 0;}
if ( start >= liczba1 )
{digitalWrite(12, LOW);}
if ( digitalRead(12) == LOW ){
licznik = 0;start = 0;
if ((cm - pm_1) > 0){startz_1 ++;pm_1 = cm;}
if ( startz_1 > liczbaczas1 ){digitalWrite(12, HIGH);startz_1 = 0;}}
}
//=========================czerwona=============================
void czerwona() {
if ( start1 > 0 ){
start = 0;}
cm1 = millis()/100;
if ( digitalRead(4) == HIGH )statcz = 0;
if ( digitalRead(4) == LOW and statcz == 0 )
{start1 ++;statcz = 1;pm0 = cm1;}
if ( start1 > 0 ){
if ((cm1 - pm0) == 1){licznik2 ++;pm0 = cm1;}}
if ( licznik2 > czas_oczekiwania2 and digitalRead(11) == 0 )
{licznik2 = 0;start1 = 0;}
if ( start1 >= liczba2 )
{digitalWrite(11,LOW);}
if ( digitalRead(11) == LOW ){
licznik2 = 0;start1 = 0;
if ((cm1 - pm_2) > 0){startcz_2 ++;pm_2 = cm1;}
if ( startcz_2 > liczbaczas2 ){digitalWrite(11,HIGH);startcz_2 = 0;}
}
//Serial.print(liczbaliosci3);
Serial.print("ZIELONY");
Serial.print(" - ");
Serial.print(start);
Serial.print(" / ");
Serial.print(startz_1);
Serial.print(" i ");
Serial.print("CZERWONY");
Serial.print(" - ");
Serial.print(start1);
Serial.print(" / ");
Serial.println(startcz_2);
}
long cm; //zielona
long cm1; //czerwona
long pm,pm_1; //zielona
long pm0,pm_2; //czerwona
long licznik; //zielona
long licznik2; //czerwona
byte start; //zielona
byte start1; //czerwona
int liczbaliosci3 = 0;
int statz,startz_1; //zielona
int statcz,startcz_2; //czerwona
byte czas_oczekiwania = 5; //zielona
byte czas_oczekiwania2 = 5; //czerwona
int liczba1 = 3; //ilość przyciśnięć zielona
int liczba2 = 3; //ilość przyciśnięć czerwona
int liczbaczas1 = 10; //czas wyłączenia led zielona
int liczbaczas2 = 10; //czas wyłączenia led czerwona
void setup() {
Serial.begin(9600);
pinMode(5, INPUT_PULLUP); //przycisk zielonej
pinMode (12, OUTPUT); //led zielonej
pinMode(4, INPUT_PULLUP); //przycisk czerwonej
pinMode (11, OUTPUT); //led czerwonej
}
void loop() {
zielona();
czerwona();
}
void zielona() {
//=========================zielona=============================
if ( start > 0 ){
start1 = 0;}
//if (start==3){
//liczbaliosci3 ++;
//}
cm = millis()/100;
if ( digitalRead(5) == HIGH ){statz = 0;}
if ( digitalRead(5) == LOW and statz == 0 )
{start ++;statz = 1;pm = cm;}
if ( start > 0 ){
if ((cm - pm) == 1){licznik ++;pm = cm;}}
if ( licznik > czas_oczekiwania and digitalRead(12) == 0 )
{licznik = 0;start = 0;}
if ( start >= liczba1 )
{digitalWrite(12, LOW);}
if ( digitalRead(12) == LOW ){
licznik = 0;start = 0;
if ((cm - pm_1) > 0){startz_1 ++;pm_1 = cm;}
if ( startz_1 > liczbaczas1 ){digitalWrite(12, HIGH);startz_1 = 0;}}
}
//=========================czerwona=============================
void czerwona() {
if ( start1 > 0 ){
start = 0;}
cm1 = millis()/100;
if ( digitalRead(4) == HIGH )statcz = 0;
if ( digitalRead(4) == LOW and statcz == 0 )
{start1 ++;statcz = 1;pm0 = cm1;}
if ( start1 > 0 ){
if ((cm1 - pm0) == 1){licznik2 ++;pm0 = cm1;}}
if ( licznik2 > czas_oczekiwania2 and digitalRead(11) == 0 )
{licznik2 = 0;start1 = 0;}
if ( start1 >= liczba2 )
{digitalWrite(11,LOW);}
if ( digitalRead(11) == LOW ){
licznik2 = 0;start1 = 0;
if ((cm1 - pm_2) > 0){startcz_2 ++;pm_2 = cm1;}
if ( startcz_2 > liczbaczas2 ){digitalWrite(11,HIGH);startcz_2 = 0;}
}
//Serial.print(liczbaliosci3);
Serial.print("ZIELONY");
Serial.print(" - ");
Serial.print(start);
Serial.print(" / ");
Serial.print(startz_1);
Serial.print(" i ");
Serial.print("CZERWONY");
Serial.print(" - ");
Serial.print(start1);
Serial.print(" / ");
Serial.println(startcz_2);
}