AndrzejWi Lipiec 15, 2020 Udostępnij Lipiec 15, 2020 9 minut temu, ethanak napisał: 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? "czysty kod" to mój taki skrót myślowy. Nie jestem przekozakiem programowania(programistycznie wychowałem się na php) i dla mnie istnieje rozróżnienie na dwie możliwości, czysty język, lub framework, Więc czy setup/loop, to coś takiego jak framework, czy taki powiedzmy podstawowy C/C++? Bo jeśli to drugie, to pytam tylko czy lepiej się uczyć na tych nakładkach, czy na czymś bardziej podstawowym. Przepraszam, jeśli nie wyrażam się dość jasno, być może to wynika z mojej ignorancji. Pozdrawiam serdecznie. Link do komentarza Share on other sites More sharing options...
ethanak Lipiec 16, 2020 Udostępnij Lipiec 16, 2020 10 godzin temu, AndrzejWi napisał: programistycznie wychowałem się na php Taaa... to wiele wyjaśnia 😉 10 godzin temu, AndrzejWi napisał: dla mnie istnieje rozróżnienie na dwie możliwości, czysty język, lub framework Tak z ciekawości: czy w świecie Programistów PHP takie cosie jak: gd mysqli phpmailer to elementy czystego języka czy frameworki? 10 godzin temu, AndrzejWi napisał: Bo jeśli to drugie, to pytam tylko czy lepiej się uczyć na tych nakładkach, czy na czymś bardziej podstawowym. Ucz się tego, czego Ciebie uczą. Wyjdź z założenia, że nauczyciel z zasady wie więcej niż uczeń i decyduje, czego się takowy uczeń powinien uczyć żeby się nauczyć. A poza tym przyznaj się: w link który Ci podesłałem to pewnie nawet nie kliknąłeś? Link do komentarza Share on other sites More sharing options...
AndrzejWi Lipiec 16, 2020 Udostępnij Lipiec 16, 2020 8 godzin temu, ethanak napisał: A poza tym przyznaj się: w link który Ci podesłałem to pewnie nawet nie kliknąłeś? Nawet kliknąłem, ale coś mi jeszcze umyka. 🙂 Co do pytania z 3 punktami, to nie wiem, nie bywam w tym świecie, zawodowo nie zajmuję się programowaniem.😉 Umiem tylko pisać programy, których sam potrzebuję i znam się tak na poziomie max b2 . Link do komentarza Share on other sites More sharing options...
Kubaaa Lipiec 17, 2020 Udostępnij Lipiec 17, 2020 Dnia 14.07.2020 o 10:52, ethanak napisał: 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". U mnie nic nie ma. Programy działają tak samo. W internecie szczątkowe informacje na ten temat. Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
AndrzejWi Lipiec 17, 2020 Udostępnij Lipiec 17, 2020 (edytowany) 32 minuty temu, Kubaaa napisał: U mnie nic nie ma. Programy działają tak samo. W internecie szczątkowe informacje na ten temat. Kuba, a programowałeś kiedyś w czymś? Edytowano Lipiec 17, 2020 przez AndrzejWi Link do komentarza Share on other sites More sharing options...
Kubaaa Lipiec 17, 2020 Udostępnij Lipiec 17, 2020 Nie właśnie 😔 Link do komentarza Share on other sites More sharing options...
AndrzejWi Lipiec 17, 2020 Udostępnij Lipiec 17, 2020 (edytowany) 1 godzinę temu, Kubaaa napisał: Nie właśnie 😔 void setup() { pinMode(8, OUTPUT); pinMode(7, INPUT_PULLUP); } void loop() { if(digitalRead(7) == LOW) //jeśli guzik ma stan niski { digitalWrite(8, HIGH); // dioda się świeci } if(digitalRead(7) == HIGH) //jeśli guzik ma stan wysoki { digitalWrite(8, LOW); // dioda się nie świeci } Podłącz przycisk i diodę. jak naciśniesz, to się zapali, jak puścisz zgaśnie. void setup() { pinMode(8, OUTPUT); pinMode(7, INPUT_PULLUP); } void loop() { while(digitalRead(7) == HIGH) //jeśli guzik ma stan wysoki { digitalWrite(8, LOW); // dioda się świeci delay(1000); // spowolnienie, żeby był efekt digitalWrite(8, HIGH); // dioda się nie świeci delay(1000); } } W tym wypadku, możesz uzyskać ten efekt, nie ruszając guzika. Dzięki pętli, sekwencja może trwać w nieskończoność, a przy warunku tylko raz i za każdym razem gdy chcesz mignąc, musisz nacisnąć guzik. Chłopaki gdzieś tutaj tłumaczyli i ja też o tym pisałem, że loop to taki while. A Ty twierdzisz, że if to to samo, no więc gdyby nie było loop, to nie mógłbyś uzyskać efektu migania samym if'em, możesz to uzyskać tylko dlatego, że loop jest potraktowane pętlą while i powoduje sekwencje. Inaczej mówiąc, te dwa programiki pokazują, co by się działo, gdybyś nie umieszczał tego w loop, tylko tak po prostu(gdyby się dało) Edytowano Lipiec 17, 2020 przez AndrzejWi 1 Link do komentarza Share on other sites More sharing options...
Kriss2707 Sierpień 2, 2020 Udostępnij Sierpień 2, 2020 C:\Users\LENOVO\Documents\Arduino\sketch_aug02d\sketch_aug02d.ino: In function 'void loop()': sketch_aug02d:16:2: error: a function-definition is not allowed here before '{' token { ^ sketch_aug02d:29:3: error: expected initializer before 'digitalWrite' digitalWrite(10, LOW); //Czerwona ^~~~~~~~~~~~ C:\Users\LENOVO\Documents\Arduino\sketch_aug02d\sketch_aug02d.ino: At global scope: sketch_aug02d:53:1: error: expected declaration before '}' token } ^ exit status 1 a function-definition is not allowed here before '{' token Czy ktoś może pomóć i powiedzieć gdzie jest błąd? takie błędy pokazuje program...niestety ja zupełnie się nie znam i nie wiem jak pomóc synowi. Link do komentarza Share on other sites More sharing options...
Gieneq Sierpień 3, 2020 Udostępnij Sierpień 3, 2020 @Kriss2707 witam na forum. Patrząc na to no cóż, ciężko stwierdzić. Najlepiej jak wstawisz tu kod. 🙂 Link do komentarza Share on other sites More sharing options...
Kriss2707 Sierpień 3, 2020 Udostępnij Sierpień 3, 2020 (edytowany) 7 godzin temu, Gieneq napisał: @Kriss2707 witam na forum. Patrząc na to no cóż, ciężko stwierdzić. Najlepiej jak wstawisz tu kod. 🙂 void setup() { pinMode(10, OUTPUT); //Dioda czerwona pinMode(9, OUTPUT); //Dioda żółta pinMode(8, OUTPUT); //Dioda zielona pinMode(7, INPUT_PULLUP); //Przycisk digitalWrite(10, LOW); //Wyłączenie diod digitalWrite(9, LOW); digitalWrite(8, LOW); } void loop() { digitalWrite(10, LOW); //Czerwona digitalWrite(9, LOW); //Pomarańczowa digitalWrite(8, HIGH); //Zielona delay(1000); //Czekamy 1 sekundę digitalWrite(10, LOW); //Czerwona digitalWrite(9, HIGH); //Pomarańczowa digitalWrite(8, LOW); //Zielona delay(1000); //Czekamy 1 sekundę digitalWrite(10, HIGH); //Czerwona digitalWrite(9, LOW); //Pomarańczowa digitalWrite(8, LOW); //Zielona delay(1000); //Czekamy 1 sekundę digitalWrite(10, HIGH); //Czerwona digitalWrite(9, HIGH); //Pomarańczowa digitalWrite(8, LOW); //Zielona delay(1000); //Czekamy 1 sekundę } to jest kod ze szkolenia ze strony forbot... Edytowano Sierpień 3, 2020 przez Gieneq Link do komentarza Share on other sites More sharing options...
Gieneq Sierpień 3, 2020 Udostępnij Sierpień 3, 2020 @Kriss2707 co prawda kod który wstawiłeś nie kompiluje mi się ale to wina jakiegoś dziwnego kodowania znaków, ale kod z kursu jest ok. Najwyraźniej problem jest z samym programem. Dla testu - wejdź w przykłady i sprawdź czy przykład blink się skompiluje. Jeżeli nie, to może był problem z instalacją. Spróbuj pobrać i instalować jeszcze raz Arduino IDE. Jaki to system? Link do komentarza Share on other sites More sharing options...
KosMar Sierpień 5, 2020 Udostępnij Sierpień 5, 2020 (edytowany) "Prawdopodobnie pomyślałeś tutaj o instrukcji warunkowej if. Jednak jak chciałbyś zrealizować miganie diodą?" void setup() { pinMode(10, OUTPUT); pinMode(6, INPUT_PULLUP); } void loop() { if (digitalRead(6) == LOW) { digitalWrite(10, HIGH); delay(500); digitalWrite(10, LOW); delay(500); } } Nie wiem czemu gdyż przygodę z Arduino zacząłem jakieś 12h temu ale u mnie działa na IF EDIT: Nie działa natomiast żaden z dwóch programów z kursu, świeci zielona dioda a przycisk robi nic... Edytowano Sierpień 6, 2020 przez Gieneq Dopisanie pojedynczego zdania zamiast tworzenia nowego wpisu Link do komentarza Share on other sites More sharing options...
Gieneq Sierpień 6, 2020 Udostępnij Sierpień 6, 2020 @KosMar witam na forum 🙂 a jak masz podłączony przycisk? 23 godziny temu, KosMar napisał: Nie wiem czemu gdyż przygodę z Arduino zacząłem jakieś 12h temu ale u mnie działa na IF Też będzie działać, w tym programie efekt będzie taki sam, ale już w innych nabierze to znaczenia (chociażby w kolejnym ćwiczeniu poniżej cytatu). Link do komentarza Share on other sites More sharing options...
Opinel Grudzień 4, 2020 Udostępnij Grudzień 4, 2020 Cześć! Zrobiłem w pełni zadania, ale chciałem się sprawdzić i zmodyfikować ostatni z nich. Z racji, że mimo puszczeniu przycisku, cała sekwencja musi się skończyć, chciałem: 1. Ustawić, aby sekwencja świateł kończyła się w miejscu, w którym odrywam palec od przycisku 2. Po ponownym naciśnięciu pętla zaczynała się od początku. Obecnie mam coś takiego: void loop() { while(digitalRead(7) == LOW) { //aktywacja pętli przyciskiem digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, HIGH); //Zielona ON delay(500); // Opóźnienie wyłączenia = Długość świecenia zielonej digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF while(digitalRead(7) == HIGH) { //puszczenie przycisku i zatrzymanie pętli digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF } digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, HIGH); //Zółta ON digitalWrite(8, LOW); //Zielona OFF delay(500); // Długość świecenia Żółtej digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF while(digitalRead(7) == HIGH) { //puszczenie przycisku i zatrzymanie pętli digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF } digitalWrite(12, HIGH); //Czerwona ON digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF delay(500); //Długość świecenia czerwonej digitalWrite(12, LOW); //Czerwona OFF digitalWrite(10, LOW); //Żółta OFF digitalWrite(8, LOW); //Zielona OFF //Pętla automatycznie zatrzymana bez potrzeby wywoływania while jak wyżej } } I o ile swoje zadanie z punktu pierwszego spełnia, tyle po ponownym naciśnięciu pętla jest kontynuowana. Czy jest jakiś sposób, aby ustawić by pętla w pewnym momencie, po spełnieniu danego warunku zostałaby przerywana i wracała na początek? Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Grudzień 4, 2020 Udostępnij Grudzień 4, 2020 4 godziny temu, Opinel napisał: Czy jest jakiś sposób, aby ustawić by pętla w pewnym momencie, po spełnieniu danego warunku zostałaby przerywana i wracała na początek? Jeśli chciałbyś w dowolnym momencie wyjść z pętli to możesz wywołać polecenie "break;". Więcej na ten temat znajdziesz np. w dokumentacji Arduino: https://www.arduino.cc/reference/en/language/structure/control-structure/break/ 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »