Skocz do zawartości

Kurs Arduino - #4 - Przetwornik ADC


Pomocna odpowiedź

zadanie 4.2 - zakłócenia są! Ale nie spodziewałem się, że aż tak duże. Bo to przecież oznacza, że jest różnica napięcia wielkości nawet 5V. Jak dodałem "antenkę" z folii, to efekt jest taki, że jak zbliżam rękę, to zapalają się po kolei wszystkie diody (od czerwonej do zielonej) i powoli wracają z powrotem.

Pytanie: dlaczego tego samego nie można zarejestrować na mierniku napięcia? I dlaczego bez kabelka też nie ma takich zakłóceń?

zadanie 4.4 - dzielniki napięcia mamy tu dwa, więc przekazuję oba napięcia. Kod:

#define dioda 8
int odczytanaWartosc = 0; //Zmienna do przechowywania odczytu ADC
int prog = 0; //Próg włączenia światła - ustawiany potencjometrem

void setup() {
  pinMode(8, OUTPUT); //Konfiguracja wyjść pod diodę LED
  Serial.begin(9600);//Uruchomienie komunikacji przez USART
}

void loop() {
  odczytanaWartosc = analogRead(A5);//Odczytanie wartości z ADC
  prog = analogRead(A4);//Odczytanie wartości z ADC

  if (odczytanaWartosc < prog) { //Czy jest ciemniej od ustawionego progu?
    if (digitalRead(dioda) == LOW) { //jeżeli dioda jest wyłączona, czyli zaraz będzie włączona
      // napiecie = odczytanaWartosc * (5.0/1024.0); //Przeliczenie wartości na napięcie
      Serial.println("Fotorezystor: " + String(odczytanaWartosc * (5.0 / 1024.0)) + "V a potencjometr " + String(prog * (5.0 / 1024.0)) + "V."); //wyślij wartośc napięcia na dzielnikach
    }
    digitalWrite(dioda, HIGH);//Włączenie diody
  } else {
    digitalWrite(dioda, LOW);//Wyłączenie diody
  }

  delay(50);
}

zadanie 4.5 - ciekawe zadanie. Gra działa. Kod:

//gra w zgadywanie pozycji potencjometru
#define zielona 11
#define zolta 10
#define czerwona 9
#define przycisk 2
#define potencjometr A5

int potencjometrWartosc = 0; //Zmienna do przechowywania odczytu ADC
int odebranaWartosc = 0;
int pytanieNumer = 1;

void setup() {
  pinMode(zielona, OUTPUT); //Konfiguracja wyjść pod diodę LED
  pinMode(zolta, OUTPUT); //Konfiguracja wyjść pod diodę LED
  pinMode(czerwona, OUTPUT); //Konfiguracja wyjść pod diodę LED
  pinMode(przycisk, INPUT_PULLUP);
  Serial.begin(9600);//Uruchomienie komunikacji przez USART
}

void loop() {
  Serial.println("Ustaw potencjometr i naciśnij przycisk");
  while (digitalRead(przycisk) == HIGH) {
    //nic
  }
  digitalWrite(zielona, LOW); //Wyłączamy diody
  digitalWrite(zolta, LOW);
  digitalWrite(czerwona, LOW);
  pytanieNumer = 1;
  potencjometrWartosc = analogRead(potencjometr);
  //debug: Serial.println(potencjometrWartosc);
  while (pytanieNumer <= 3) {
    Serial.println("Podaj liczbę:");
    while (Serial.available() == 0) { //tak długo jak nie ma danych
      delay(25);
    }
    odebranaWartosc = Serial.readStringUntil('\n').toInt(); //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w zmiennej odebraneDane
    Serial.println("Podane: " + String(odebranaWartosc));
    if ((potencjometrWartosc - 50 < odebranaWartosc) && (odebranaWartosc < potencjometrWartosc + 50)) {
      //dobry wynik
      digitalWrite(zielona, HIGH);
      Serial.println("Brawo, była to liczba : " + String(potencjometrWartosc));
      pytanieNumer = 4; //od poczatku
    }
    else {
      //zły wynik
      if (pytanieNumer >= 3) { //w sumie mogło by być =3
        //trzecai zła odpowiedz
        digitalWrite(czerwona, HIGH);
        pytanieNumer = 4; //od poczatku
      }
      else {
        digitalWrite(zolta, HIGH);
        pytanieNumer++;
      }
    }
  }
}

Uwaga: jako, że jest to kurs dla początkujących (w tym w programowaniu), to brakuje wskazówki rzutowania String na int : https://www.arduino.cc/en/Tutorial/BuiltInExamples/StringToInt

zadanie 4.6 - Tak dla formalności: zrobione. Kod:

/*z której strony mocniejsze światło
  dwa fotorezystory i 5xdioda pomiedzy nimi*/
#define fotoLewy  A1
#define fotoPrawy A0
#define diodaLewa         8
#define diodaLewaSrodek   9
#define diodaSrodek      10
#define diodaPrawaSrodek 11
#define diodaPrawa       12

int diody[] = {diodaLewa, diodaLewaSrodek, diodaSrodek, diodaPrawaSrodek, diodaPrawa}; //lista diod do iterowania
int roznica = 0; //wyliczona roznica oswietlenia

void setup() {
  pinMode(diodaLewa, OUTPUT); //Konfiguracja wyjść pod diody LED
  pinMode(diodaLewaSrodek, OUTPUT);
  pinMode(diodaSrodek, OUTPUT);
  pinMode(diodaPrawaSrodek, OUTPUT);
  pinMode(diodaPrawa, OUTPUT);

  Serial.begin(9600);//Uruchomienie komunikacji przez USART
}

void zaswiecDiode(int diodaWlacz) {
  for (int i = 0; i < sizeof diody / sizeof diody[0]; i++) {
    if (diody[i] == diodaWlacz) {
      digitalWrite(diody[i], HIGH);
    } else {
      digitalWrite(diody[i], LOW);
    }
  }
}

void loop() {
  roznica = analogRead(fotoLewy) - analogRead(fotoPrawy);
  //debug: Serial.println("lewa " + String(analogRead(fotoLewy)) + " - prawa:" + String(analogRead(fotoPrawy)) + " roznica: " + String(roznica));
  if (roznica > 20) {
    zaswiecDiode(diodaPrawa);
  } else if (roznica > 10) {
    zaswiecDiode(diodaPrawaSrodek);
  } else if (abs(roznica) < 2) { //czyli praktycznie brak różnicy
    zaswiecDiode(diodaSrodek);
  } else if (roznica < -20) {
    zaswiecDiode(diodaLewa);
  } else if (roznica < -10) {
    zaswiecDiode(diodaLewaSrodek);
  }
  delay(50);
}

 

  • Lubię! 1
Link do komentarza
Share on other sites


#define dioda1 2
#define dioda2 3
int napiecie=0;
int liczba;
int proby=0;
#define przycisk 4
void setup() {
  // put your setup code here, to run once:
pinMode(dioda1, OUTPUT);
digitalWrite(dioda1 , 0);
pinMode(dioda2, OUTPUT);
digitalWrite(dioda2 , 0);
pinMode( przycisk , INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
napiecie=analogRead(A0);
if( digitalRead(przycisk)==0){
Serial.println ( "Zmien pozycje pot");
//Serial.println ( napiecie);
Serial.println ( "Masz dwie proby by zgadnosc");
Serial.println ( "Naciskniej przyciks!");
delay(500);
while(digitalRead(przycisk)==1){
  //Serial.println ( "Wprowadz liczbe");
 // delay(25);
  }
//liczba=Serial.readStringUntil('\n').toInt();
//Serial.println ( liczba);
Serial.println ( napiecie);
Serial.println ( "Masz dwie proby");
Serial.println ( "Naciskniej przyciks!");
delay(500);
while(digitalRead(przycisk)==1){
  }
  Serial.println ( "Wprowadz liczbe");
while(Serial.available()==0){
  }
  liczba=Serial.readStringUntil('\n').toInt();
  Serial.println ( "Wprowadzono");
  Serial.println ( liczba);
  if(napiecie-liczba<=50 && napiecie-liczba>=-50){
digitalWrite(dioda1 , 1);

digitalWrite(dioda2 , 0);
    Serial.println ( "wygrana");
  }else{
    Serial.println("Zla liczba");}
    while (proby>2){
        Serial.println ( "Wprowadz liczbe");
while(Serial.available()==0){
  }
  liczba=Serial.readStringUntil('\n').toInt();
  Serial.println ( "Wprowadzono");
  Serial.println ( liczba);
      if(napiecie-liczba<=50 && napiecie-liczba>=-50){
digitalWrite(dioda1 , 1);

digitalWrite(dioda2 , 0);
    Serial.println ( "wygrana");
    break;
      }else{
        Serial.println ( "Ostatnia proba");
        proby++;
        }
  }
}}

Mam kilka problemów.

Czemu program nie wchodzi do petli while?

Edytowano przez Antagonista99
Link do komentarza
Share on other sites

Dnia 20.02.2021 o 23:17, pawelmb napisał:

Pytanie: dlaczego tego samego nie można zarejestrować na mierniku napięcia? I dlaczego bez kabelka też nie ma takich zakłóceń?

@pawelmb Miernik ma pewnie zastosowane jakieś filtrowanie, zauważ też jaki jest czas reakcji - na moim modelu interwał odświeżania to niecała sekunda... więc jest tam też jakieś uśrednianie wyników. W porównaniu z tym ADC jest superszybkie.

Kabelek jest anteną, przez indukcję jest w stanie zebrać dodatkowe zakłócenia.

Pisząc o miernikach możesz zaobserwować ciekawe zjawiska na nieco innym mierniku - na oscyloskopie. To taki miernik napięcia tylko dużo szybszy nawet od ADC Arduinio. Sprzęt taki ciężko mieć pod ręką, ale pozwala zobrazować szybkozmienne sygnały. I dla przykładu takie coś możesz zaobserwować jak dotnie się sondę:

image.thumb.png.f5d824a79bf5a00fd8cc02705131fe22.png

Amplituda blisko 9V, częstotliwość 50 Hz to już wiemy skąd to pochodzi - z sieci, oczywiście prąd który płynie przez ciało jest bardzo mały (człowiek działa tu jak kondensator) ale jak widać w około jest sporo szumów, nawet taki z sieci. Nie wspominając o ładunkach od elektryzowania, które potrafią wygenerować wyładowanie o kilku tyś V. 

Poza tym fajnie że robisz dodatkowe zadania 🙂 tak trzymaj 💪

@Antagonista99 a którą konkretnie masz na myśli? Strzelam że nie masz jakiegoś połączenia. W jednej z pętli sprawdzasz czy jest stan 1 więc jeżeli masz pullup to pewnie przelatuje przez pętlę.

Więc jeżeli nie pomogło to poproszę wrzuć zdjęcie układu i program ale ładnie sformatowany - ze wcięciami itp, bo taki poszarpany ciężko się czyta.

Link do komentarza
Share on other sites

@Treker 1. Chodziło mi o to czy wyświetlany sygnał w monitorze interfejsu szeregowego jest analogowy czy cyfrowy.

2. Mniej więcej taki ciąg znaków mi wyświetla się, po przekroczeniu wartości wartości zero. tzn wyświetla mi wartość zero, ale mogę jeszcze bardziej pokręcić potencjometrem do wartości malejących i gdy już bardziej nie mogę pokręcić wyskakują mi takie wartości.

image.thumb.png.c373e3716e61de80a698064e2a0e8e9c.png

 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Zadanie 4.5 Zrobione, dawno nic nie przyniosło mi tyle satysfakcji co dojście do tego, jak to zaprogramować 😄 

To mój kod:

#define G 8   //green
#define O 9    //orange
#define R 10    //red
#define button 7 

int volGuess_int = 0; //zmiana string na int
int volRead = 0;  //definiowanie wartosci odniesienia
int blad = 0; //definiowanie blednego wyboru gracza
int czasSwiecenia = 1000;
String volGuess = ""; // liczba podana przez gracza

void setup() {
  Serial.begin(9600); //rozpoczecie komunikacji
  pinMode(G, OUTPUT); //konfiguracja pinow
  pinMode(O, OUTPUT);
  pinMode(R, OUTPUT);
  pinMode(button, INPUT_PULLUP);

  digitalWrite(R, LOW); //zgas diody
  digitalWrite(O, LOW);
  digitalWrite(G, LOW);

  Serial.println("Witaj!");
  delay(500);
  Serial.println("Aby rozpocząć - ustaw potencjometr, a następnie wciśnij przycisk");
  
}

void loop() {
 volRead = analogRead(A5); //odczyt z potencjometru
 

  if (digitalRead(button) == LOW) {  //jesli przycisk jest wcisniety
    Serial.print("Podaj liczbę od 0 do 1023:");   //popros o podanie numeru
    delay(1000);  //czekaj 1 s
  } else{}
    
  if (Serial.available()>0) { //jesli dane dostepne
      volGuess = Serial.readStringUntil('\n'); //odczyt liczby wpisanej przez gracza
      volGuess_int = volGuess.toInt(); //zamiana ciagu znakow na int
      delay(500); //czekaj 0,5s
      Serial.println(volGuess_int); //napisz liczbe wpisana przez gracza
      delay(1000); //czekaj 1 s
      if (blad < 2) { //jeśli gracz ma 3, lub 2 życia
       if (abs(volGuess_int - volRead) < 50) { //jesli bezwzgledna roznica liczby podanej przez gracza i liczby odczytanej z potenjometru wynosi mniej niz 50
             digitalWrite(G, HIGH); //zapal zielona diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             Serial.println("Gratulacje! Wygrałeś!");
             delay(czasSwiecenia); //swiec czasSwiecenia
             digitalWrite(G, LOW); //zgas zielona diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             blad = 0; //wyzeruj życia
  }    else {
             digitalWrite(O, HIGH); //jesli nie - zapal pomaranczowa
             digitalWrite(G, LOW);
             digitalWrite(R, LOW);
             Serial.println("BŁĄD!");
             delay(500);
             Serial.print("Podaj liczbę od 0 do 1023:");
             delay(czasSwiecenia); //swiec czasSwiecenia
             digitalWrite(G, LOW); //zgas pomaranczowa diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             blad = blad + 1;  //usuń życie
    }
  
  }   else {
          if (blad = 2) { //jeśli gracz ma ostatnie życie
             if (abs(volGuess_int - volRead) < 50) { //jesli bezwzgledna roznica liczby podanej przez gracza i liczby odczytanej z potenjometru wynosi mniej niz 50
             digitalWrite(G, HIGH); //zapal zielona diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             Serial.println("Gratulacje! Wygrałeś!");
             delay(czasSwiecenia); //swiec czasSwiecenia
             digitalWrite(G, LOW); //zgas zielona diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             blad = 0; //wyzeruj życia
  }    else {
             digitalWrite(O, LOW); //jesli nie - zapal czerwona
             digitalWrite(G, LOW);
             digitalWrite(R, HIGH);
             Serial.println("PRZEGRAŁEŚ! Spróbuj ponownie.");
             delay(czasSwiecenia); //swiec czasSwiecenia
             digitalWrite(G, LOW); //zgas czerwona diodę
             digitalWrite(R, LOW);
             digitalWrite(O, LOW);
             blad = 0;} //resetuj gre
          }
          
  
  }
  }
}

 

Link do komentarza
Share on other sites

No mnie tak bardzo wciągnął ten odcinek, że postanowiłem napisać i zrobić coś na wzór Saymon Says - powtarzaniem za wzorem. Jak później sprawdziłem sporo osób zrobiło coś takiego, ale sam spędziłem miłe niedzielne popołudnie kodując to od zera. Muszę powiedzieć, że takie projekty uczą wiele. Przypuszczam, że kod, można jeszcze znacząco poprawić, a pewne rzeczy zrobić inaczej. Jak ktoś ma ochotę to można się zapoznać, a nawet wypróbować (symulator działa dość opornie): https://www.tinkercad.com/things/9EiX3vNLkOc

Co więcej korzystając z umiejętności z kursu lutowania i podstaw elektroniki zrobiłem prototyp na Nano na uniwersalnej płytce PCB i może znowu wyszło dość przeciętnie, ale też mnie sporo nauczyło. Naprawdę super sprawa.

IMG_20210319_195605.jpg

Edytowano przez Shary
  • Lubię! 1
Link do komentarza
Share on other sites

Super kurs! A to jest moje rozwiązanie zadania 4.6

#define czerwonaL 3 //lewa dioda czerwona
#define zoltaL 4 //lewa dioda żółta
#define zielona 5 //dioda zielona
#define zoltaP 6 //prawa dioda żółta
#define czerwonaP 7 //prawa dioda czerwona

int fotorezystorL = 0; //zmienna do wyrażenia wartosci wskazywanej przez lewy fotorezystor
int fotorezystorP = 0; //zmienna do wyrażenia wartosci wskazywanej przez prawy fotorezystor
int roznica = 0;

void setup() {
  pinMode(czerwonaL, OUTPUT); //diody jako wyjscia
  pinMode(zoltaL, OUTPUT);
  pinMode(zielona, OUTPUT);
  pinMode(zoltaP, OUTPUT);
  pinMode(czerwonaP, OUTPUT);

  digitalWrite(czerwonaL, LOW); //wyłączenie diod
  digitalWrite(zoltaL, LOW);
  digitalWrite(zielona, LOW);
  digitalWrite(zoltaP, LOW);
  digitalWrite(czerwonaP, LOW);
}

void loop() {
  fotorezystorL = analogRead(A5); //przypisanie wartosci odczytom fotorezystorów
  fotorezystorP = analogRead(A4);

  roznica = fotorezystorL - fotorezystorP; //obliczenie różnicy wartosci lewego i prawego fotorezystora
  
  digitalWrite(czerwonaL, LOW);//wyłączenie diod
  digitalWrite(zoltaL, LOW);
  digitalWrite(zielona, LOW);
  digitalWrite(zoltaP, LOW);
  digitalWrite(czerwonaP, LOW);
  
  if(roznica <= -240){ 
    digitalWrite(czerwonaP, HIGH); 
  }
  if(roznica > -240 && roznica < -35){
    digitalWrite(zoltaP, HIGH);
  }
  if(roznica >= -35 && roznica <= 35){
    digitalWrite(zielona, HIGH);
  }
  if(roznica < 240 && roznica > 35){ 
    digitalWrite(zoltaL, HIGH);
  }
  if(roznica >= 240) {
    digitalWrite(czerwonaL, HIGH); 
  }
}

 

  • Lubię! 1
Link do komentarza
Share on other sites

W zadaniu domowym 4.1 w skrajnej pozycji potencjometrów dioda jest przyciemniona ale nie miga.

Dzieje się tak dla tego że jest ustawiona bardzo duża częstotliwość migania, a kiedy dioda miga bardzo szybko to człowiekowi wydaje się że dioda jest przyciemniona

  • Lubię! 1
Link do komentarza
Share on other sites

Podpinam się pod pytanie kolegów wyżej. 

Jak zapobiec wahaniom odczytu potencjometru? Zrobiłem projekt dot. sterowania serwomechanizmami ale mam ciągle problem z potencjometrami, które nawet dotykania generują rożne wartości. Próbowałem kombinować z zew. źródeł zasilania. Różne przewody, potencjometry, płytki itd. Zawsze są wachania. Teraz podpiąłem pod arduino uno wyłącznie potencjometr ale i tak odczyt się wacha 😞 Czy ta się to jakoś ustabilizować by korzystanie z potencjometru jako manipulatora miało realny sens?

forbot_skoki.gif

Link do komentarza
Share on other sites

@MarekGolan witam na forum 🙂 Jeśli testy robisz na płytce stykowej to ona wprowadza pewnie sporo zamieszania. Te wahania wcale nie są duże 😉 Najprościej będzie, jeśli wykorzystasz funkcję map i zmniejszysz trochę zakres np. z 0-1023 do 0-800. Już powinno być stabilniej. Oczywiście możesz też napisać jakiś "cyfrowy" filtr sygnału.

Link do komentarza
Share on other sites

@Treker Dziękuje za odpowiedź i również witam 🙂

Docelowo projekt robię w oparciu o pudełko, które sobie wydrukowałem:

arm_panel.thumb.jpg.65c43c45ea611dbabfbe12df976f96a7.jpg

 

Na razie to zostawiam. Podpiąłem potencjometr bezpośrednio do Arduino:

arm_arduino..thumb.jpg.66ea55852f824362a50adeac495f3641.jpg

 

Wgrałem kod z kursu oraz dodałem mapowanie:
 

int odczytanaWartosc = 0;//Odczytana wartość z ADC
float napiecie = 0;//Wartość przeliczona na napięcie w V
 
void setup() {
  Serial.begin(9600);//Uruchomienie komunikacji przez USART
}
 
void loop() {
  odczytanaWartosc = analogRead(A0);//Odczytujemy wartość napięcia
  napiecie = map(odczytanaWartosc, 0, 800, 0, 180);
  Serial.println(napiecie);//Wysyłamy zmierzone napięcie
  delay(100);//Czekamy, aby wygodniej odczytywać wyniki  
}

i w zasadzie zamiana w mapowaniu z 1023 na 800 zrobiło bardzo dobrą robotę:

arduino_wynik_v2.thumb.gif.454a405231c0bb09b9f4b8f5a3d0b843.gif
 

Przeskoków jest dużo mniej a jeśli już to tylko o "1". 

 

Zatem najrozsądniej będzie teraz zrobić sprawdzanie czy ostatnia pozycja zmieniła się o min 2 by wywołać daną funkcję (np. ruszenie serwer)? Dobrze rozumiem? Można jeszcze jakoś to zoptymalizować by działania potencjometrów było bardziej precyzyjne? 

  • Lubię! 1
Link do komentarza
Share on other sites

11 godzin temu, MarekGolan napisał:

czy ostatnia pozycja zmieniła się o min 2 by wywołać daną funkcję (np. ruszenie serwer)? Dobrze rozumiem?

@MarekGolan raczej nie ma takiej potrzeby - możesz te wartości dawać cyklicznie na serwo, bo jak zamienisz ten przedział wartości na wartości pobierane przez funkcję obsługi serwa to i tak się znowu się je przeskaluje i tych 1 -2 nie będzie widać.

13 godzin temu, Treker napisał:

Oczywiście możesz też napisać jakiś "cyfrowy" filtr sygnału.

Możesz zrobić jak radzi @Treker i dać np. średnią kroczącą - tablica 10 zmiennych do których wrzucasz nowe odczyty i ze średniej wyznaczasz wartość.

Link do komentarza
Share on other sites

Moje rozwiązanie do zadania 4.4:

int foto = 0;
int pot = 0;
void setup() {
  pinMode(11, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  foto = analogRead(A0);
  pot = analogRead(A5);

  if (foto < pot) {
    digitalWrite(11, HIGH);
    Serial.println(foto);
    while(foto < pot) {
        foto = analogRead(A0);
        pot = analogRead(A5);
        delay(50);
      }
  } else {
    digitalWrite(11, LOW);
  }
  delay(50);
}

 

  • Lubię! 1
Link do komentarza
Share on other sites

@luksonski witam na forum 🙂 

Fajnie że wrzucasz swoje rozwiązanie, widzę, że sprytnie to wymyśliłeś. Ale mam jedną uwagę, albo nawet dwie.

  • Pierwsza prostsza sprawa - nie używaj w kodzie A0 A5 4 i innych tzw. magicznych wartości. Nie ma tragedii bo domyślilem się co robi A0 po nazwie zmiennej do której zapisujesz pomiar, ale na przyszłość używaj etykiet z dyrektywy #define.
  • Druga to jak popatrzysz na kod, to jest powtórzenie odczytu analogRead. A może daloby się umieścić to tylko w jednym miejscu? Oczywiście będzie to wymagać dodatkowej zmiennej trzymającej stan.

Przejrzyj temat o obsłudze przycisków, wiem że nie jest przycisk ale zachowuje się tak samo - coś zmienia stan. 

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.