• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
z pętlą zgubiłem się w czasie
#11
(05-12-2019, 17:44)Jarewa0606 napisał(a): https://forbot.pl/blog/kurs-arduino-ii-w...is-id18418

Ale przykład jest bardzo prosty jak budowa "cepa" i własnie pokazuje to co chcesz uzyskać, nawet jest taki przykład.. Pomigaj sobie pierw dwoma diodami zrozum funkcje millis()  a nie idziesz w zaparte i chcesz "wieloryba" wędkę już dostałeś wiec zaczynaj od małej rybki ....
z tego właśnie przykładu korzystałem... zmieniłem tylko troszkę nazewnictwo zmiennych i powieliłem ilość
 
Odpowiedź
#12
I przerobiłeś po swojemu nie znając się na matematyce. Bo gdybyś wiedział ile to 10-2>1 to byś nie popełnił tego błędu w kodzie.

if(czas- ostatniczas >= interval){
ostatniczas=czas;
}

czas i ostatni czas się nie rusza to są zegary millis(). jedynie możesz zmieniać "interval" czyli co ile warunek ma się spełnić. Ewentyalnie jak potrzebna synchronizacja to można sie posiłkować

if(czas- ostatniczas >= interval){
ostatniczas=czas+50;
}
if(czas- ostatniczas >= interval){
ostatni czas=czas+100;
}
itd....... Ale to nic innego jak dla każdego warunku inny interval.
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#13
(05-12-2019, 19:25)Agregacik napisał(a): @maniekdii  zastanów co się dzieje jak zatrzymasz wyświetlanie. Co zapisane jest w zmiennych memczask1 do  16. Zapisany jest jakiś czas millis()  w czasie zatrzymania. Jak ponownie uruchomisz sekwencję to pomyśl co się będzie działo w każdym ifie. Każdy if będzie spełniony  bo millis() "jest już daleko z przodu" więc wszystkie przekaźniki zadziałają jednocześnie i tak jak piszesz wszystkie mrugają jednocześnie bo  "memczasy" robią się jednakowe po jednym obiegu pętli. Ty ich różnicujesz w setupie i potem to działa do czasu zatrzymania.
Musisz to wszystko przemyśleć jeszcze raz i zmienić taktykę załączania.

w sumie najlepszym rozwiązaniem powinno być "wyzerowanie" millis() przy każdym uruchomieniuWink

, ale to co jest zapisane w tych zmiennych Memczas.. chyba nie do końca ma wpływ bo  idąc za tym  , funkcja po dwóch czy trzech pętlach również powinna się automatycznie "rozjechać" bo czas już pobiegł mocno do przodu, a jednak tak się nie dzieje. 
nie mogę do końca dojść do punktu "zero" od którego zaczyna się liczenie w przypadku użycia guzika czy jakiegokolwiek innego warunku.
Na początku myślałem że problem jest z kwestiami czasu przy czujniku i myslalem zeby kwestie czujników i czasów odtwarzania przenieść na uno a na mega pozostawić tylko sterowanie przekaźnikami. najprostszym sposobem "spięcia" tych dwóch płytek miało być podanie jakiegoś stanu na któryś pin, dlatego pojawił się dodatkowy guzik któy jak się okazało też nie przynosi spodziewanego efektuSad
 
Odpowiedź
#14
(05-12-2019, 22:55)Jarewa0606 napisał(a): I przerobiłeś po swojemu nie znając się na  matematyce. Bo gdybyś wiedział ile to 10-2>1  to byś nie popełnił tego błędu w kodzie....
Mam do Pana jedną mała prośbę. Jeśli chce Pan  pomóc to proszę  wyjaśnienie i merytoryczna odpowiedź.  Jeśli natomiast w każdym poście  ma Pan zamiar traktować wszystkich w koło jak idiotów lub nieuków to lepiej nie zabierać tego głosu bo to niestety nie najlepiej świadczy o Pańskiej kulturze. Nie znamy się i i nie przypuszczam byśmy w najbliższym czasie mieli wybrać się gdzieś na wspólne piwo, czego nie wykluczam , ale do tego czasu bardzo bym prosił o powstrzymanie się od tego typu docinków, przynajmniej w stosunku do mojej osoby.Dziękuję bardzo

Z Pańskich uwag i podanych przykładów kodu też niestety nic nie wychodzi. Zmieniony kod na Pańskiej zasadzie kompletnie odbiega od efektu jaki mam w "gołej" sekwencji i obawiam się że nie do końca rozumie Pan o jakim problemie ja piszę. 

poniżej troszkę zmodyfikowany kod w którym na monitorze portu widać w jakiej kolejności załączają się przekaźniki.(pojawiają się numery przekaźników) 

po dodaniu warunku if(digitalRead(sw)==LOW) na początku pętli zaburza działanie


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;
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);
}


int czastrwania = 15;  // przypisanie wartości do czasu trwania sekwencji
int tempo = 1000;  // 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 = -100;
unsigned long memczask2 = -200;
unsigned long memczask3 = -300;
unsigned long memczask4 = -400;
unsigned long memczask5 = -500;
unsigned long memczask6 = -600;
unsigned long memczask7 = -700;
unsigned long memczask8 = -800;
unsigned long memczask9 = -100;
unsigned long memczask10 = -200;
unsigned long memczask11 = -300;
unsigned long memczask12 = -400;
unsigned long memczask13 = -500;
unsigned long memczask14 = -600;
unsigned long memczask15 = -700;
unsigned long memczask16 = -800;
unsigned long czasstart=0;
unsigned long aczas = 0;



void loop() {





  {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.print(" 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 >= migk14) {    //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,");
  }
}

}
 
Odpowiedź
#15
Podparłem program "guzikiem".
Trzeba dorobić jego użycie. Pewnie będzie się to rozjeżdżać, ale spróbuj ja nie mam jak przetestować na tą chwilę.
Jakbyś opisał co chcesz osiągnąć to łatwiej było by Ci coś podpowiedzieć.



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;
byte guzik = HIGH; //Taka zmienna która wyzwaka sekwencję świecenia




int czastrwania = 15;  // przypisanie wartości do czasu trwania sekwencji
int tempo = 1000;  // 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 (guzik == HIGH )
  {
    stat = 0;
    // tu trzeba dopisać sekwencję stop
  }
  if (guzik == LOW && stat == 0){
    stat = 1;
    StartCzas = millis();
    memczask1 = StartCzas + 100;
    memczask2 = StartCzas + 200;
    memczask3 = StartCzas + 300;
    memczask4 = StartCzas + 400;
    memczask5 = StartCzas + 500;
    memczask6 = StartCzas + 600;
    memczask7 = StartCzas + 700;
    memczask8 = StartCzas + 800;
    memczask9 = StartCzas + 100;
    memczask10 = StartCzas + 200;
    memczask11 = StartCzas + 300;
    memczask12 = StartCzas + 400;
    memczask13 = StartCzas + 500;
    memczask14 = StartCzas + 600;
    memczask15 = StartCzas + 700;
    memczask16 = StartCzas + 800;
  }
 
  if (guzik == 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.print(" 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 >= migk14) {    //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,");
    }
  }

}
 
Odpowiedź
#16
Ile razy można walkowac że unsinged long nie może być ujemna liczba? 0-600 ILE BĘDZIE?? Zdziwił byś się jak bym powiedział tobie...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#17
Dzięki Agregacik.
nad kodem jeszcze popracuję w wolnej chwili.
efekt jaki chce osiągnąć to uruchomienie mojej sekwencji w dowolnym momencie od załączenia płytki tak by się ona nie rozjeżdżałaSmile
postaram się jeszcze raz opisać problem może tym razem jaśniejSmile

w przykładzie który zacytował Jarewa różnica w miganiu diodami polega na tym że obie "startują" w tym samym czasie ale mrugają w różnym tempie(z inną częstotliwością). Ja oprócz tego efektu chciałem jeszcze uzyskać możliwość że wszystkie diody mrugają z tą samą częstotliwością, ale "startują" z opóźnieniem w stosunku do siebie czyli np najpierw 1 z 8 po chwili 2z9 następnie 3z10itd. co daje wtedy efekt "płynięcia".
Efekt ten uzyskałem różnicując poszczególne wartości memczas (z mojego kodu ). wszystko wtedy działa i można się bawić robiąc różne kombinacje i efekty.
Problem zaczyna sie pojawiać gdy sekwencje trzeba uruchomić po jakimś czasie od momentu uruchomienia płytki.
Jedyne w co mogę wtedy zaingerować to częstotliwość z jaką migają, ale nie mogę odzyskać tego przesunięcia w czasie jakie miałem zmieniając parametr memczas.
skoro czas już pobiegł bardzo daleko i nie spełnia on warunków z Ifów to nie bardzo moge sobie poradzić z "cofnięciem" tego czasu tak by po wciśnięciu guzika (lub jakimś innym warunku) uruchamiającym sekwencję czas byłby zaczytany tak jakby dopiero co była uruchomiona płytka.

mam nadzieję że teraz troszkę jaśniej opisałem problemSmile
 
Odpowiedź
#18
(06-12-2019, 14:40)Jarewa0606 napisał(a): Ile razy można walkowac że unsinged long nie może być ujemna liczba? 0-600 ILE BĘDZIE?? Zdziwił byś się jak bym powiedział tobie...

Też tak myślałem, że nie może być ujemna, ale to co chciał autor działa prawidłowo. Odejmuje ujemną i faktycznie dodaje się ta wartość prawidłowo. Dziwne, ale działa sprawdzone programem na arduino nano.
 
Odpowiedź
#19
(06-12-2019, 14:40)Jarewa0606 napisał(a): Ile razy można walkowac że unsinged long nie może być ujemna liczba? 0-600 ILE BĘDZIE?? Zdziwił byś się jak bym powiedział tobie...
 skoro osiągnąłem cel stosując takie wartości to widocznie jest to możliwe ponieważ wartości dodatnie nie przynosiły oczekiwanego rezultatu. 

Zastosowanie Twoich przykładów i uwag niestety nie przyniosły rozwiązania problemu który chcę rozwiązać, więc też nie upieraj się tak bardzo przy swoim.
 
Odpowiedź
#20
(06-12-2019, 14:45)Agregacik napisał(a):
(06-12-2019, 14:40)Jarewa0606 napisał(a): Ile razy można walkowac że unsinged long nie może być ujemna liczba? 0-600 ILE BĘDZIE?? Zdziwił byś się jak bym powiedział tobie...

Też tak myślałem, że nie może być ujemna, ale to co chciał autor działa prawidłowo. Odejmuje ujemną i faktycznie dodaje się ta wartość prawidłowo. Dziwne, ale działa sprawdzone programem na arduino nano.
jakby nie patrzeć odjęcie "ujemnej" daje w rezultacie dodatnią....
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości