Skocz do zawartości

PrimeSoul

Użytkownicy
  • Zawartość

    37
  • Rejestracja

  • Ostatnio

Wszystko napisane przez PrimeSoul

  1. Treker, może zadam trochę dziwne pytanie, ale jakiś konkretny powód sprawił, że właśnie na pinie A0 podłączany był pin sterujący taśmą led? Miało to jakieś przełożenie na pracę układu czy też Arduino?
  2. Chumanista - z programami do projektowania schematów i obwodów PCB to jest tak, że jeden woli córkę, drugi matkę, a trzeci ciotkę. Każdy używa tego, w czym się lepiej czuje. Osobiście zaczynałem od KiCAD-a, ale jak dla mnie był on totalnie... "nieużywalny" jak napisał deshipu wyżej. Szybko przerzuciłem się do Eagle'a i w nim już zostałem. Myślę też, że KiCAD odstrasza trochę początkujących formą, która dla laików do prostych nie należy, przynajmniej takie jest moje subiektywne zdanie. A od czegoś w końcu trzeba zacząć, jeśli myśli się o rozwoju w dziedzinie elektroniki.
  3. Żeby stworzyć w pełni iteracyjną jeśli chodzi o liczbę diod wersję programu potrzebowałbym tablicy o bliżej nieokreślonej pojemności. O ile dobrze gdzieś doczytałem chodzi o tablicę dynamiczną. Ale niestety to już wyższa sztuka jazdy w porównaniu ze zwykłymi statycznymi jednowymiarowymi, które dość łatwo jest mi stosować już. Cóż, przerabiam kursy dalej i po cichu gdzieś tam liczę, że tablice dynamiczne pokażą się prędzej lub później
  4. Może jest to mocno po czasie - w końcu kurs został zakończony kilka miesięcy temu, a kontynuacja już się rozpoczęła, to jednak składam wielkie oklaski dla autora. Przejrzysta, przyjemna dla oka i duszy nauka, która sprawia, że chce się człowiekowi rozwijać dla samej przyjemności . Co do propozycji kursów to może powielę, ale myślę, że dość ciekawym i pożądanym tematem jest proces tworzenia układów pracujących z "gołym" procesorem, np. gdzieś w terenie. Mogłoby to obejmować zakres materiału od konstrukcji schematu, poprzez wytrawianie i wgrywanie programu poprzez programator zewnętrzny (lub wewnętrzny). Pozdrawiam i gratuluję wykonania pomysłu z Arduino PrimeSoul
  5. Zadanie nr 1 float read1 = 0, read2 = 0; void setup() { Serial.begin(9600); // transmission start while(!Serial) {}; } void loop() { delayMicroseconds(2); read1=analogRead(A0)/204.8; // left fotoresistor(V) read2=analogRead(A1)/204.8; // right fotoresistor (V) Serial.print(read1); Serial.print('\t'); Serial.println(read2); delay(50); } I zdjątko monitora: Zadanie 2. - dla niezmiennego seed'a nie zmienia się kolejność "randomowych" liczb. Jeśli ręcznie zmieniać seed'y - to oczywiście wszystko się zmienia. Zadanie 3. #define button 2 int x; void setup() { Serial.begin(9600); pinMode(button, INPUT_PULLUP); randomSeed(analogRead(A0)); while(!Serial); } void loop() { Serial.println("Push the button"); while (digitalRead(button)!=LOW) {}; x = random(1, 7); Serial.println(x); delay(1000); } Zadanie nr 4.1 int x = 0; void setup() { Serial.begin(9600); randomSeed(analogRead(A0)); } void loop() { x = random(0, 101); Serial.println(x); if (x<10 || x>90) { Serial.println("Number's meeting assumption"); while(1) {}; } else { Serial.println("Number isn't meeting assumption. Next try"); delay(1000); } } Zadanie nr 4.2 if (x>50 && !(x<85 && x>70)) - zmiana warunku, reszta kodu identyczna Zadanie nr 4.3 if (x==50 || x==40 || x==30 || x==20) Zadanie nr 4.4 if ((x>=10 && x<=40) || (x>=60 && x<=100))
  6. Powrót po pewnym czasie do Arduino okazał się być bolesny, aczkolwiek wszystkiego chyba nie zapomniałem . Zadanie 9.1 float jasnosc = 0; float zmiana = 2.5; #define LED 9 void setup() { pinMode(LED, OUTPUT); } void LaunchLed(){ while(jasnosc!=255){ analogWrite(LED, jasnosc); jasnosc+=zmiana; delay(20); } } void DelaunchLed(){ while(jasnosc!=0){ analogWrite(LED, jasnosc); jasnosc-=zmiana; delay(20); } } void loop() { LaunchLed(); DelaunchLed(); } Zadanie 9.2 int i, tablica[4], j, liczby = 0; String zmienne; void setup() { Serial.begin(9600); while (!Serial) {}; wpisanie_zmiennych(); LED(tablica[0], tablica[1], tablica[2], tablica[3]); } void LED(int on, int off, int count, int pin) { pinMode(pin, OUTPUT); for(i=1; i<=count; i++) { digitalWrite(pin, HIGH); delay(on); digitalWrite(pin, LOW); delay(off); } } void wpisanie_zmiennych() { for (j=1; j<=4; j++) { switch(j) { case 1: Serial.println("Wyslij czas, jaki ma swiecic dioda(w msek)"); break; case 2: Serial.println("Wyslij czas, jaki ma byc zgaszona dioda(w msek)"); break; case 3: Serial.println("Wyslij liczbe, ile razy ma mrugnac dioda"); break; case 4: Serial.println("Do ktorego pinu podlaczyles diode"); break; } while (Serial.available()<=0) {}; zmienne=Serial.readStringUntil('\n'); liczby = zmienne.toInt(); tablica[j-1]=liczby; } } void loop() { } Zadanie 9.1 #include <math.h> String dane; int tablica [ 3 ]; String figura; void setup() { Serial.begin(9600); while(!Serial) {}; } int prostokat(int a, int b) { int wynik = 0; wynik = a*b; return wynik; } float kolo (int r) { float wynik = 0; wynik = 3.14 * r * r; return wynik; } float trojkat (int a, int b, int c) { float wynik = 0; float p = (a+b+c)/2; wynik = sqrt(p*(p-a)*(p-b)*(p-c)); return wynik; } void loop() { int wynik = 0; Serial.println("Podaj nazwe figury, jakiej pole chcesz otrzymac"); while(Serial.available()<=0) {}; figura=Serial.readStringUntil('\n'); if(figura=="prostokat"){ Serial.println("Podaj dlugosc pierwszego boku"); while(Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); tablica[0]=dane.toInt(); Serial.println("Podaj dlugosc drugiego boku"); while(Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); tablica[1]=dane.toInt(); Serial.print("Pole wynosi: "); Serial.println(prostokat(tablica[0], tablica[1])); } else if (figura=="kolo") { Serial.println("Podaj dlugosc promienia kola"); while (Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); Serial.print("Pole wynosi: "); Serial.println(kolo(dane.toInt())); } else if (figura=="trojkat") { Serial.println("Podaj dlugosc pierwszego boku"); while (Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); tablica[0]=dane.toInt(); Serial.println("Podaj dlugosc drugiego boku"); while (Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); tablica[1]=dane.toInt(); Serial.println("Podaj dlugosc trzeciego boku"); while (Serial.available()<=0) {}; dane=Serial.readStringUntil('\n'); tablica[2]=dane.toInt(); Serial.print("Pole wynosi: "); Serial.println(trojkat(tablica[0], tablica[1], tablica[2])); } else { Serial.println("Bledna nazwa figury. Podaj ja jeszcze raz"); loop();} while(1) {}; } EDIT: Dodanie rozw. Zadanie 9.3 - drobna edycja - pozwoliłem sobie dodać parę funkcji; tak skonstruowane i zaprogramowane urządzenie mogłoby pełnić funkcję czujnika parkowania w samochodzie Budowa to oczywiście linijka led, czujnik + buzzer równolegle do ostatniej diody ostrzegawczej. Niestety nie udało mi się wykonać w pełni iteracyjnej wersji programu dla dowolnej liczby diod, brak mi umiejętność dotyczących działania na tablicach . #define trig 12 #define echo 13 int number = 0, i = 0, order = 0, security = 0, distance = 0; int table [9]; // there's only 9 free output pins in Arduino void setup() { // except pin RX, TX, trig and echo clearingtable(); // table reset Serial.begin(9600); pinMode(trig, OUTPUT); pinMode(echo, INPUT); digitalWrite(trig, LOW); number = Led_number(); // counting of connected diodes for (i=1;i<=number;i++) { // ascribing numbers to diodes Serial.print("Write pin of diode number "); // question Serial.println(i); // number of led while(Serial.available()<=0) {}; // waiting for an answer order = converseString(); // converting string to integer pinMode(order, OUTPUT); table[i-1]=order; // writing data about led to table } Serial.println("Announce security distance (cm)"); while(Serial.available()<=0) {}; // value security distance security = converseString(); } void clearingtable() { // table reset function i = 1; for (i=1;i<=9;i++) { table [i-1] = 0; } } int converseString() { // converting string to integer function int x = 0; String info; info = Serial.readStringUntil('\n'); x = info.toInt(); return x; } int Led_number() { // counting leds function int y = 0; while(!Serial) {}; Serial.println("How many diodes have you connected?"); while(Serial.available()<=0) {}; y = converseString(); return y; } int determine_distance(int x, int y) { // function, which measures int measurment = 0; // actual value of distance delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(10); digitalWrite(trig, LOW); measurment = (pulseIn(echo, HIGH))/58; Serial.print("Measurment amounts "); Serial.println(measurment); measurment = 450 - measurment; // data conversions measurment = map(measurment, 0, 450-y, 1, x); return measurment; } void show(int x) { // switching on leds with buzzer function int j = 1; for(j=1;j<=x;j++) { digitalWrite(table[j-1], HIGH); } } void negateshow(int x) { // switching off leds with buzzer function int j=1; for(j=1;j<=x;j++) { digitalWrite(table[j-1], LOW); } } void loop() { distance = determine_distance(number, security); // measurment show(distance); // leds on delay(500); // waiting negateshow(distance); // led off } Next edit: Program wzbogaciłem jeszcze o zabezpieczenie przy "szalejącym" czujniku, gdy odległość większa niż 4,5m za pomocą funkcji if, czego nie uwzględniłem jeszcze w powyższym kodzie.
  7. Treker, pewnie byłoby prościej i nawet ekonomiczniej w pamięci , ale taką wizję miałem, żeby to tak zrobić no i tak zrobiłem . A jak już miałem większość kodu, to dopiero się połapałem, że to nienajlepsza opcja. Tylko wtedy to już nie miało sensu zmieniać
  8. No, nareszcie miałem więcej czasu i mogłem do tego mojego stopera solidnie przysiąść. Oto efekt (za drugim podejściem, w pierwszym pamięć nie działała) : #include <LiquidCrystal.h> // dołączam bibliotekę LCD #define A 11 // start/stop button #define B 12 // save/show button LiquidCrystal lcd (2,3,4,5,6,7); // dołączam obiekt wyświetlacza int tablica [20]; // deklaracja tablicy pamięci; zapis do 5 wyników int ms = 0, s = 0, m = 0, h = 0, i = 0, j = 0, k = 0; // deklaracja zmiennych void setup() { pinMode(A, INPUT_PULLUP); // pin 11 jako wejście do przycisku pinMode(B, INPUT_PULLUP); // pin 12 jako wejście do przycisku lcd.begin (16,2); // deklaracja typu wyświetlacza lcdstart(); // wywołujemy pozycję startową wyświetlacza while (digitalRead(A)!=LOW) {}; // czeka na przycisk A do startu delay(200); // opóźnienie dla rzeczywistego czasu wciśnięcia ms+=20; // doliczenie do liczby milisekund 200 } void lcdstart() { // program zerujący wyświetlacz do pozycji startowej lcd.clear(); // czyszczenie wyświetlacza lcd.setCursor(0,0); // kursor na pozycję startową lcd.print("Time:[h:m:s:ms]"); //15 znaków lcd.setCursor(0,1); // kursor w drugiej lini lcd.print("00:00:00:00"); //11 znaków, podstawa do nadpisywania } void czyszczenie() { // podprogram zerujący stoper i pamiec for (i=0; i<=19; i++) { // pętla for zerująca po kolei każdy tablica[i] = 0; // element tablicy } h = 0; s = 0; m = 0; ms = 0; i = 0; j = 0; k = 0; } void odliczanie() { // podprogram odliczający i wyświetlający czas if (ms>=100) { //warunek naliczenia sekundy ms = 0; s++; } lcd.setCursor(9,1); // ustawiam kursor na pozycji ms if (ms<10) { // ms jednocyfrowe lcd.print("0"); lcd.print(ms); } else // ms dwucyfrowe lcd.print(ms); if (s>=60) { // warunek naliczenia minuty s = 0; m++; } lcd.setCursor(6,1); // ustawiam kursor na pozycji sekund if (s<10) { // s jednocyfrowe lcd.print("0"); lcd.print(s); } else // s dwucyfrowe lcd.print(s); if (m==60) { // warunek naliczenia godziny m = 0; h++; } lcd.setCursor(3,1); // ustawiam kursor na pozycji minut if (m<10) { // m jednocyfrowe lcd.print("0"); lcd.print(m); } else // m dwucyfrowe lcd.print(m); if (h==24) //warunek kończący dzień; zerowanie licznika h = 0; lcd.setCursor(0,1); // ustawiam kursor na pozycji godzin if (h<10) { // h jednocyfrowe lcd.print("0"); lcd.print(h); } else // h dwucyfrowe lcd.print(h); delay(10); // opóźniam o 10 ms, co jest największą czułością stopera ms++; } void pamiec(int x) { // funkcja pamieci tablica[x] = ms - 1; tablica[x+1] = s; tablica[x+2] = m; tablica[x+3] = h; } void interwal(int x) { // funkcja wyniku interwalowego lcd.setCursor(9,1); if (tablica[x]<10) { // pierwszy zapisany wynik (ms) jednocyfrowy lcd.print("0"); lcd.print(tablica[x]); } else // dwucyfrowy lcd.print(tablica[x]); lcd.setCursor(6,1); if (tablica[x+1]<10) { //zapisane s jednocyfrowe lcd.print("0"); lcd.print(tablica[x+1]); } else // zapisane s dwucyfrowe lcd.print(tablica[x+1]); lcd.setCursor(3,1); if (tablica[x+2]<10) { // zapisane m jednocyfrowe lcd.print("0"); lcd.print(tablica[x+2]); } else // zapisane m dwucyfrowe lcd.print(tablica[x+2]); lcd.setCursor(0,1); if (tablica[x+3]<10) { // zapisane h jednocyfrowe lcd.print("0"); lcd.print(tablica[x+3]); } else // zapisane h dwucyfrowe lcd.print(tablica[x+3]); } void loop() { while (digitalRead(A)!=LOW && digitalRead(B)!=LOW) { //odlicza do czasu wciśnięcia przycisku odliczanie(); } if (digitalRead(A)==LOW) { // jeśli wciśnięto przycisk A delay (400); // opóźnienie dla rzeczywistego czasu wciśnięcia while (digitalRead(A)!=LOW && digitalRead(B)!=LOW) {}; // stop if (digitalRead(A) == LOW) { // po wciśnięciu A delay(200); // opóźnienie dla rzeczywistego czasu wcisnięcia ms+=20; // uwzględnienie tego opóźnienia } else if (digitalRead(B)==LOW) { // po wcisnięciu B for (k = 0; k<=4; k++) { // funkcja for dla wyników interwałowych delay(400); // opóźnienie dla rzeczywistego czasu wcisnięcia interwal(4*k); while (digitalRead(B)!=LOW) {}; } czyszczenie(); // czyszczenie pamieci i zmiennych stopera lcdstart(); // czyszczenie wyswietlacza while (digitalRead(A)!=LOW) {}; // czeka na przycisk A do startu delay(200); // opóźnienie dla rzeczywistego czasu wciśnięcia ms+=20; // doliczenie do liczby milisekund 200 } } else if (digitalRead(B)==LOW) { //jesli wcisnieto przycisk B pamiec(4*(j%5)); // zapisywanie wyniku do tablicy z nadpisem j++; // przeskakujemy na następne pola pamięci delay(400); // dla rzeczywistego czasu wcisniecia przycisku ms+=40; // uwzględnienie tego opóźnienia } } Ogólnie mimo wszystko byłbym wdzięczny bardziej zaawansowanym o dokładniejsze przejrzenie kodu, bo pewnie gdzieś wciąż znajdują się jakieś niedociągnięcia, których testy mi nie wskazały. Z góry dzięki
  9. Z tablicami coś tam miałem już do czynienia wcześniej w C++, w Arduino może mniej, ale w sumie to może się pobawię z nimi w tym projekcie stopera, bo podejrzewam, że zasada działania ta sama. C++ ma bardzo dużo wspólnego z Arduino, tak na moje oko, więc spróbować nie zaszkodzi .
  10. Żeby Trekerowi oczy już nie krwawiły więcej przypisy w kodach obecne xD Zadanie 8.1: void setup() { pinMode(5, OUTPUT); //sterowanie prędkością silnika pierwszego pinMode(6, OUTPUT); //sterowanie prędkością silnika drugiego pinMode(7, OUTPUT); //piny 7 i 8 sterują kierunkiem obrotu silnika pierwszego pinMode(8, OUTPUT); pinMode(9, OUTPUT); //piny 9 i 10 sterują kierunkiem obrotu silnika drugiego pinMode(10, OUTPUT); digitalWrite(5, HIGH); // ustawienie maksymalnej prędkości obrotowej na obu silnikach digitalWrite(6, HIGH); } void loop() { digitalWrite(7, HIGH); //odpalamy do przodu oba silniki digitalWrite(8, LOW); digitalWrite(9, HIGH); digitalWrite(10, LOW); delay(2000); digitalWrite(9, LOW); //negujemy kierunek obrotu drugiego silnika digitalWrite(10, HIGH); // oba obracają się w przeciwfazie delay(2000); digitalWrite(7, LOW); //negujemy kierunek obrotu drugiego silnika digitalWrite(8, HIGH); // oba obracają się przeciwnie do stanu początkowego delay(2000); } Zadanie 8.2 - wersja z pętlą for: int i; // deklaracji zmiennej chyba nie trzeba opisywać :P void setup() { pinMode(5, OUTPUT); //sterowanie prędkością silnika pinMode(7, OUTPUT); //piny 7 i 8 sterują kierunkiem obrotu silnika pinMode(8, OUTPUT); digitalWrite(5, HIGH); // ustawienie maksymalnej prędkości obrotowej silnika for(i=1;i<=5;i++){ //zainicjowanie pętli for - ma przebiec 5 razy digitalWrite(7, HIGH); // odpalamy silnik digitalWrite(8, LOW); delay(1000); digitalWrite(7, LOW); // stopujemy silnik delay(1000); } } void loop() { } Zadanie 8.2 - wersja z pętlą while: int i = 5; // deklaracji zmiennej chyba nie trzeba opisywać :P void setup() { pinMode(5, OUTPUT); //sterowanie prędkością silnika pinMode(7, OUTPUT); //piny 7 i 8 sterują kierunkiem obrotu silnika pinMode(8, OUTPUT); digitalWrite(5, HIGH); // ustawienie maksymalnej prędkości obrotowej silnika while(i!=0){ //zainicjowanie pętli while - ma przebiec 5 razy digitalWrite(7, HIGH); // odpalamy silnik digitalWrite(8, LOW); delay(1000); digitalWrite(7, LOW); // stopujemy silnik delay(1000); i--; //dekrementujemy zmienną int do warunku while } } void loop() { } Zadanie 8.3 - pozwoliłem sobie je zmodyfikować tak, aby wprowadzenie każdej liczby (nie tylko od 0 do 9) dawało taką samą liczbę gwiazdek (zamiast Serial.read() skorzystałem z konwersji zmiennej string na integer): String znak; // deklaracja zmiennej string - ciągu znaków wprowadzanych przez UART int liczba = 0; // deklaracja zmiennej liczbowej - zamienionego stringa na integer int i; // zmienna potrzebna do pętli for void setup() { Serial.begin(9600); // zainicjowanie transmisji UART } void loop() { while(!Serial) {}; // zatrzymanie programu do otwarcia seriala Serial.println("Please send o number"); while(Serial.available()<=0) {}; // zastopowanie programu do czasu wpisania danych do konsoli //UART znak = Serial.readStringUntil('\n'); // odczytanie z transmisji UART ciągu znaków (stringa) liczba = znak.toInt(); // konwersja zmiennej string w integer for (i=1; i<=liczba; i++) { // zainicjowanie pętli for - ma działać tak długo, jak duża liczba została //wpisana przez UART Serial.print("*"); // wpisanie gwiazdki } Serial.print("\n"); // przejście do następnej lini } No i ostatnie zadanie 8.4 : int i; // wprowadzam zmienną sterującą PWM void setup() { pinMode(5, OUTPUT); // deklaruję piny sterujące pracą silnika pinMode(7, OUTPUT); pinMode(8, OUTPUT); digitalWrite(7, HIGH); // ustalam kierunek pracy silnika digitalWrite(8, LOW); digitalWrite(5, LOW); // ustawiam stan początkowy prędkości silnika } void loop() { for (i=0;i<=255;i++){ // zainicjowanie pierwszego fora analogWrite(5, i); // silnik przyspiesza z prędkością od 0 do max delay(20); } delay(2000); // opóźnienie dla efektu for (i=255;i>=0;i--){ // zainicjowanie drugiego fora analogWrite(5, i); // silnik z max zwalnia do 0 delay(20); } delay(2000); // opóźnienie dla lepszego efektu }
  11. No właśnie kwestia taka, że nie wiem, gdzie byłoby najlepiej zapisać te wartości. A służyłyby wyłącznie do odczytu na samym końcu pomiaru czasu (w sensie wyświetlałoby po kolei każdy interwałowy czas). O ile w asemblerze skorzystałbym ze stosu pewnie i przerzucałbym od razu wartości z akumulatora na wyświetlacz, ewentualnie po drodze korzystając z jakichś rejestrów pomocniczych, tak w Arduino no cóż, zielony jestem
  12. Co do stopera - zedytowałem sobie trochę zadanie z kursu dodając opcje interwałową (w sensie, że można przyciskiem zastopować odliczanie i ruszyć dalej z tego samego punktu) i wykonałem coś takiego na dwóch przyciskach: #include <LiquidCrystal.h> //Dołączenie bilbioteki LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza int ms = 20; int s = 0; int m = 0; int h = 0; void setup() { lcd.begin(16, 2); lcd.clear(); lcd.setCursor(0,0); lcd.print("Czas:[h:m:s:ms]"); lcd.setCursor(0,1); lcd.print("00:00:00:00"); pinMode(11, INPUT_PULLUP); pinMode(12, INPUT_PULLUP); } void loop() { while(digitalRead(11)!=LOW) {}; delay(200); while(digitalRead(11)!=LOW && digitalRead(12)!=LOW) { if(ms>=100){ ms=0; s+=1; } lcd.setCursor(9,1); if(ms<10) { lcd.print("0"); lcd.print(ms); } else { lcd.print(ms); } if(s>=60) { s=0; m+=1; } lcd.setCursor (6,10); if(s<10) { lcd.print("0"); lcd.print(s); } else { lcd.print(s); } if(m>=60) { m=0; h+=1; } lcd.setCursor(3,1); if(m<10) { lcd.print("0"); lcd.print(m); } else { lcd.print(m); } if (h==23 && m==59 && s==59 && ms==99) { h=0; m=0; s=0; ms=0; } lcd.setCursor(0,1); if(h<10) { lcd.print("0"); lcd.print(h); } else { lcd.print(h); } delay(10); ms+=1; } while (digitalRead(11)==LOW){ lcd.setCursor(0,0); lcd.print("Ending's time: "); delay(500); while (digitalRead(11)!=LOW) {}; lcd.clear(); lcd.setCursor(0,0); lcd.print("Czas:[h:m:s:ms]"); lcd.setCursor(0,1); lcd.print("00:00:00:00"); h=0; m=0; s=0; ms=20; delay(200); } while (digitalRead(12)==LOW) { while(digitalRead(11)!=LOW) {}; ms+=20; } } Domyślam się, że Treker to mnie wypatroszy za zupełny brak komentarzy w kodzie, ale urządzenie działa . Zastanawiałem się jeszcze jakby zrobić zapisywanie tych interwałowych wyników, ale żeby jakoś to zręcznie i elegancko bez kilkunastu zmiennych wykonać to w tym języku jest dla mnie za trudne. Prędzej w asemblerze na stosie coś takiego bym wykminił .
×
×
  • Utwórz nowe...