Skocz do zawartości

ethanak

Użytkownicy
  • Zawartość

    2992
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    139

ethanak wygrał w ostatnim dniu 4 lipca

ethanak ma najbardziej lubianą zawartość!

Reputacja

1485 Mistrz

3 obserwujących

O ethanak

  • Ranga
    8/10
  • Urodziny 05.02.1960

Informacje

Ostatnio na profilu byli

1943 wyświetleń profilu
  1. Co ma wspólnego "czysty kod" (nie wiem co przez to rozumiesz) ze standartem Wiring? Po coś powstał, prawda? Poza tym ta linijka, którą pokazałem to uproszczenie: zajrzyj na własny dysk, zobacz jak w rzeczywistości wygląda main.cpp, pokaż gdzie tam masz jakiś "nieczysty kod" (cokolwiek byś przez to rozumiał)... Równie dobrze możesz programować bez stdio i napisać własnego printfa... tylko po co?
  2. Bardzo dobrze wynika. Jeśli dokładnie poszukasz na swoim dysku, znajdziesz plik main.cpp, w którym kluczowa linijka wygląda mniej więcej tak: while (true) loop(); Wcale nie musisz używać wiringowego setup/loop. Możesz sobie stworzyć funkcję main(), a wtedy kompilator użyje Twojej, a nie tej wbudowanej. Możesz równie dobrze stworzyć pustą funkcję loop która nigdy nie będzie wywoływana, a cały kod umieścić w setup().
  3. No to co? Dorób metodę np. music() w stylu: if (isPlaying) { pause(); isPlaying = false; } else { play(); isPlaying=true: } i ją wywołuj. isPlaying to jakaś zmienna prywatna typu bool (ew. statyczna, jeśli music() będzie zwykłą funkcją a nie metodą). Ja tu nie widzę konieczności żeby pause() i play() były innego typu niż void... A nie masz tam jakiej metody zwracającej Ci czy muzyka gra czy się skończyła? Bo wtedy można bez tej zmiennej...
  4. Tyle że tu mam wybór: albo kupuję drukarkę od Prusy, albo jakąś Anetkę czy innego Endera. Na początek wystarczy, a jak przestanie wystarczać to się będę zastanawiać. Skomplikowana? W porównaniu z drukarką zwykła mechaniczna maszyna do pisania to szczyt precyzji i skomplikowania... Akurat producenci odkurzaczy przewidują w większości przypadków użycie ich jako pompy próżniowej (czy nawet w niektórych przypadkach kompresora) do domowych zastosowań. Do niektórych są nawet konkretne przystawki. Raczej nie kupiłbym odkurzacza, którego nie mogę podłączyć np. do worka próżniowego na ubranie Co nie zmienia faktu, że urządzenie jak na swoje możliwości jest za drogie (w eksploatacji również) i raczej określenie "dla każdego" nie jest specjalnie szczęśliwie dobrane...
  5. Krótki, mówisz... no to masz: void setup() { pinMode(13,OUTPUT); pinMode(12,INPUT_PULLUP); digitalWrite(13,LOW); Serial.begin(9600); } void loop() { if (digitalRead(12) == LOW) { // klawisz naciśnięty digitalWrite(13, HIGH); // zapalamy diodę delay(500); // czekamy digitalWrite(13, LOW); // gasimy diodę delay(500); // czekamy } Serial.println("Koniec instrukcji IF"); delay(2000); } void setup() { pinMode(13,OUTPUT); pinMode(12,INPUT_PULLUP); digitalWrite(13,LOW); Serial.begin(9600); } void loop() { while (digitalRead(12) == LOW) { // klawisz naciśnięty digitalWrite(13, HIGH); // zapalamy diodę delay(500); // czekamy digitalWrite(13, LOW); // gasimy diodę delay(500); // czekamy } Serial.println("Koniec instrukcji WHILE"); delay(2000); } Podłącz klawisz do pinu 12 i wciśnij go na dłużej niż sekundę (np. na 5 sekund) - zobaczysz różnicę. Trzeba pamiętać, że w programie istnieje jeszcze jedna pętla while, której co prawda nie widać ale jak dobrze poszukasz to znajdziesz. W skrócie wygląda to tak: int main(void) { setup(); while (1) loop(); } Stąd może brać się wrażenie, że while i if robią to samo - w rzeczywistości zadziała tu instrukcja while z funkcji main. Jeśli z podanych przeze mnie przykładów usuniesz dwie ostatnie linijki (czyli Serial.println() i delay() ) - programy będą zachowywać się tak samo. Spróbuj sobie odpowiedzieć na pytanie "dlaczego".
  6. A czym się różni "dopóki" od "jeśli"? while (coś) - dopóki warunek jest spełniony wykonuj następną instrukcję (lub blok) if (coś) - jeśli warunek jest spełniony, wykonaj następną instrukcję (lub blok)
  7. No to już dużo wiemy Moja rada (może ktoś inny zaproponować coś innego) - zrobić tak jak Ichmościowie Informatykierzy sugerowali (czyli VPN). Co do zabezpieczeń: jeśli serwer VPN będzie odpowiednio zabezpieczony to powinno wystarczyć. Co do samego RPI - poczytaj coś o firewallach, iptables, ustawieniach sshd i tym podobnych dyrdymałach.
  8. Normalny Debian, tyle że w małej obudowie. Jeśli nigdy wcześniej nie miałeś do czynienia z Linuksem, to tu może być lekki problem... No ale bez dokładniejszych danych to możemy sobie dyskutować ile diabłów zmieści się na końcu szpilki. Bo to jest tak jak z kupnem samochodu: wybierzesz Twoim zdaniem najlepszego merca, a potem się okaże że masz tym przewieźć tonę węgla... Nie możesz podjąć decyzji "jak to zrobić" jeśli tak naprawdę nie wiesz, co masz zrobić i z czego. A nikt tu Ci nic nie doradzi, jeśli nawet nie wiadomo gdzie toto ma stać, jakim drutem ma być podłączone i do czego...
  9. Co przez to rozumiesz? Bo nawet najpewniejszy sposób (tzn. RPi bez dostępu do sieci zamknięty w sejfie) nie zabezpiecza przed kasiarzem, który wlezie do pomieszczenia, rozpruje sejf i ukradnie malinkę... Najprostszy sposób to zewnętrzny adres IPv6 dla każdej malinki... może być? Nie wiem, jak to jest podłączone do sieci, jakie możliwości daje Twój ISP... trochę więcej szczegółów, bo bez tego to można sobie teoretyzować a Ty za chwilę odpowiesz "ale tak się nie da bo coś tam".
  10. if (a) fun1(); else if (b) {if (c) fun2(); else fun3()} else fun4(); Co o tym sądzisz? Jak się skroluje kod który ma np. 1000 linii to i tak całego wzrokiem nie obejmiesz, a zaręczam że 1000 linii to wcale nie jest tak dużo. Przerabiałem kiedyś kod (w sumie kilka tysięcy linii) pisany przez niewidomego, który co prawda wszystko pięknie umieszczał w oddzielnych linijkach, ale nie wpadł na to żeby robić wcięcia (choć to trochę dziwne, zarówno brajlowski monitor jak i gadacz czytają poziom wcięć). Niestety - bez użycia indenta się nie obeszło... A co do komentarzy - nie chodzi tu o jakieś komentowanie każdej linii, ale raczej o napisanie czegoś w stylu "a to jest po to". Rozumiem, że bez problemu za pięć lat będziesz wiedział, co robi linia 4276 w Twoim pisanym dzisiaj kodzie nawet i bez komentarza... ale zastanów się, czy na 100% będziesz pamiętał po kiego grzyba ją tam wsadziłeś i co, do ciężkiej cholewy, robi ta funkcja...
  11. Oczywiście jest klient VNC na Androida. Alternatywnie - czasem jest wygodniej - możesz skorzystać z klienta SSH (ja próbowałem kiedyś ConnectBota) lub androidowego terminala (działa polecenie ssh z hasłem). Do tego jakaś klawiaturka podpięta do telefonu i można działać.
  12. Powiem inaczej: skracanie kodu nie polega na usuwaniu spacji (bo to tak, jakbyś z książki chciał usunąć myślniki i znaki nowej linii, co byłoby pewnie szczególnie przydatne przy dialogach), ale na zastępowaniu jakichś długaśnych konstrukcji prostszymi, krótszymi i bardziej czytelnymi. Oto przykład: Bez usuwania znaków nowej linii i wiodących spacji byłoby to: if (odleglosc < (i * mnoznik)) digitalWrite(i, HIGH); // to wyjasnione ponizej poniewaz komentarz bylby zbyt dlugi :D else digitalWrite(i, LOW); Trochę czytelniejsze, prawda? Zapoznaj się z programami typu indent czy clang-format, one potrafią skrócić zapis nie tracąc czytelności. Ale rozumiem, że chcesz to koniecznie i bezwarunkowo skrócić. Proszę bardzo: digitalWrite(i, odległość < i * mnożnik); Wypadł jeden if, z dwóch instrukcji zrobiła się jedna, a czytelność nawet większa[1]. To jest skracanie kodu. To, co pokazałeś, to nie jest skracanie kodu (bo kod przecież się nie zmienia, zmienia się tylko jego zapis z czytelnego na nieczytelny). Aha, sensowności takiego czegoś nie komentuję. Nie ma o czym mówić. --- [1] pod warunkiem że wie się o C/C++ trochę więcej niż po przeczytaniu pierwszego rozdziału podręcznika
  13. Bo nie ma czegoś takiego jak "opór diody". Dioda jest elementem nieliniowym i taki "opór" nie jest wartością stałą, ale wyrażałby się pewnym dość skomplikowanym wzorem - tak że z prawa Ohma i jednego pomiaru nie da się go wyliczyć. @gryszard Możesz spróbować wyznaczyć ów "opór" dla różnych prądów (tzn. narysować wykres zależności spadku napięcia na diodzie od prądu, np. w zakresie od 1 mA do 20 mA).
  14. Tak na szybciora: ESP32 pracuje na 3.3V i czujniki muszą być do tego dopasowane. Na szczęście większość (z wyjątkiem HC-04 i podobnych) można podłączyć bezpośrednio. Swoją drogą na razie radzę zostać przy UNO, dopóki nie zaznajomisz się z całą zabawą z mikrokontrolerami i nie przejdziesz z Javy na C/C++. I nie, nie popełniłeś błędu. Sam trochę robię na Nano/Mini, dyżurny UNO leży sobie na biurku i służy do eksperymentów. Po prostu dobieram sprzęt do zastosowań. Ostatnio robiłem takie maleństwo właśnie na WS2812, ognisko dla lalek, siedem led plus ATtiny13 A zanim zaprogramowałem ATtiny wszystko sobie sprawdziłem właśnie na UNO.
  15. To już lepiej ESP32 - dużo większe możliwości (np. wbudowane WiFi i Bluetooth, że nie wspomnę o ilości pamięci i 30 razy szybszym taktowaniu 32-bitowego procka), przy porównywalnej cenie (zdaje się że oryginał ESP32 jest nieco tańszy od paszczatego chińskiego klona Arduino Mega). Programuje się toto też w Arduino IDE, zresztą na 100% będziesz chciał w końcu poznać inne możliwości (ESP8266, ESP32, może wspomniane STM-y) i wybierzesz taką, która będzie Ci najbardziej odpowiadać. Wiesz - dwie-trzy dychy (no, w porywach do czterech) w porównaniu do ceny samego paska LED to chyba nie jest dużo?
×
×
  • Utwórz nowe...