Treker (Damian Szymański) Luty 18, 2023 Udostępnij Luty 18, 2023 @lukasz957 w jakim środowisku masz taki efekt (najlepiej z wersją)?
lukasz957 Luty 18, 2023 Udostępnij Luty 18, 2023 @Treker nie bardzo rozumiem, jeżeli chodzi o wersję to mam 2.0.3 Dodam, że wcześniej nie miałem takiego problemu z komunikacją UART, dzisiaj przed pierwszym komunikatem pojawiają się te kwadraciki, im dłuższy komunikat tym więcej jest tych kwadracików.
Treker (Damian Szymański) Luty 18, 2023 Udostępnij Luty 18, 2023 @lukasz957 nie mam teraz dostępu do płytki, aby to sprawdzić (może to być kwestia jakiegoś błędu w najnowszej wersji środowiska), sprawdź dla formalności, czy któreś z tych rozwiązań pomoże: dodaj delay(1000); na samym początku setup lub pod serial.begin dodaj: while (!Serial) { ; } Daj znać, czy coś z tego pomogło
lukasz957 Luty 18, 2023 Udostępnij Luty 18, 2023 @Treker pomogło z delay(1000), ale czy da się tego pozbyć bez dodawaniu tego opóźnienia? jakiś reinstall pomoże
Treker (Damian Szymański) Luty 19, 2023 Udostępnij Luty 19, 2023 @lukasz957 to może zależeć od wielu czynników, jeśli koniecznie chcesz pozbyć się tych znaków to spróbuj jeszcze zmniejszać to opóźnienie - bo na pewno wystarczy znacznie mniejsze. Możesz też wymienić monitor portu szeregowego na inny, bo w niektórych nawet nie zobaczysz tych znaków. Inne programy tego typu opisałem w tym artykule: https://forbot.pl/blog/4-alternatywy-dla-monitora-portu-szeregowego-arduino-id27736
Wejmon Marzec 19, 2023 Udostępnij Marzec 19, 2023 Sterowanie silnikiem oraz pętla for opanowana Gdyby ktoś potrzebował pomocy, poniżej podrzucam własne spostrzeżenia oraz działające kody programów do zadań domowych Zadanie domowe 8.1 Wykonując to zadanie należy pamiętać, aby wejście ENABLE określające prędkość drugiego silnika połączyć z pinem PWM (~): void setup () { pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1 digitalWrite(6, HIGH); //Stan wysoki pinMode(7, OUTPUT); //Kierunek obrotów silnika nr 1 pinMode(8, OUTPUT); pinMode(11, OUTPUT); //Sygnał PWM silnika nr 2 digitalWrite(11, HIGH); //Stan wysoki pinMode(12, OUTPUT); //Kierunek obrotów silnika nr 2 pinMode(13, OUTPUT); } void loop() { digitalWrite(7, LOW); //Silnik nr 1 - obroty w prawo digitalWrite(8, HIGH); digitalWrite(12, LOW); //Silnik nr 2 - obroty w prawo digitalWrite(13, HIGH); delay(3000); digitalWrite(7, LOW); //Silnik nr 1 - obroty w prawo digitalWrite(8, HIGH); digitalWrite(12, HIGH); //Silnik nr 2 - obroty w lewo digitalWrite(13, LOW); delay(3000); digitalWrite(7, HIGH); //Silnik nr 1 - obroty w lewo digitalWrite(8, LOW); digitalWrite(12, LOW); //Silnik nr 2 - obroty w prawo digitalWrite(13, HIGH); delay(3000); digitalWrite(7, HIGH); //Silnik nr 1 - obroty w lewo digitalWrite(8, LOW); digitalWrite(12, HIGH); //Silnik nr 2 - obroty w lewo digitalWrite(13, LOW); delay(3000); } Zadanie domowe 8.2 Pętla for: #define DIODA 6 void setup () { pinMode(DIODA, OUTPUT); } void loop () { for (int i = 0; i <= 4; i = i + 1) { digitalWrite(DIODA, HIGH); delay(500); digitalWrite(DIODA, LOW); delay(500); } digitalWrite(DIODA, LOW); delay(2000); } Pętla while: #define DIODA 6 void setup () { pinMode(DIODA, OUTPUT); } void loop () { int i = 0; while (i <= 4) { digitalWrite(DIODA, HIGH); delay(500); digitalWrite(DIODA, LOW); delay(500); i = i + 1; } digitalWrite(DIODA, LOW); delay(2000); } Zadanie domowe 8.3 String liczbaPodana = ""; void setup () { Serial.begin(9600); } void loop () { Serial.println("Podaj liczbe od 0 do 9"); Serial.println(); int i = 0; int liczba = 0; while (Serial.available() == 0) {} //Czekaj do momentu podania liczby delay(50); if (Serial.available() > 0) { liczbaPodana = Serial.readStringUntil('\n'); liczba = liczbaPodana.toInt(); //Zmiana znaków na wartość (int) } if ((liczba >= 0) && (liczba <= 9)) { for (i = 0; i < liczba; i++) { Serial.print("*"); delay(50); } } else { Serial.print("Niewlasciwa liczba!"); delay(50); } Serial.println("\n"); } Zadanie domowe 8.4 Do rozwiązania tego zadania wykorzystałem zapis "i--". Więcej informacji na ten temat możecie znaleźć na oficjalnej stronie Arduino [link]: void setup() { pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); digitalWrite(7, LOW); digitalWrite(8, HIGH); } void loop() { for (int i = 0; i <= 255; i++) { analogWrite(6, i); //Spokojne rozpędzanie silnika delay(25); } for (int i = 255; i >= 0; i--){ //Spokojne hamowanie silnika analogWrite(6, i); delay(25); } } 2
Treker (Damian Szymański) Marzec 20, 2023 Udostępnij Marzec 20, 2023 @Wejmon jak zawsze dobra robota! Powodzenia w dalszych eksperymentach z Arduino w praktyce 1
Rychu2115 Kwiecień 16, 2023 Udostępnij Kwiecień 16, 2023 8.2 dla for void setup() { pinMode(8, OUTPUT); for(int i=1;i<=5;i++){ //zainicjowanie pętli for - ma przebiec 5 razy digitalWrite(8, HIGH); // odpalamy silnik delay(1000); digitalWrite(8, LOW); // stopujemy silnik delay(1000); } } void loop() { } 8.2 dla while void setup() { pinMode(8, OUTPUT); int i = 0; while(i <5){ digitalWrite(8, HIGH); delay(1000); digitalWrite(8,LOW); delay(1000); i++ ; } } void loop() { } 8.3 String tekst = ""; void setup(){ Serial.begin(9600); Serial.println("Wpisz cyfre z zakresu 0 - 9"); //Informacje dla użytkownika } void loop() { if(Serial.available() > 0){ //Czy Arduino odebrano dane tekst = Serial.readStringUntil('\n'); //Jeśli tak, to odczytaj je do znaku końca linii i zapisz w tekst int liczba = tekst.toInt(); //Zmiana String na int if (liczba > 9) //Jesli odczytana wieksza niz 9 {Serial.println("Zbyt duzo - zakres 0-9"); //Określ jako błąd } else { Serial.print("Ilosc gwaizdek: "); for (int i = 0; i < liczba; i++) //Wyswietl tyle ile było "liczba" { Serial.print("* "); } Serial.print("\n"); //Przeskoczenie do nowej linii } } delay(100); //Opóznienie } 1
MMJ5XD Kwiecień 20, 2023 Udostępnij Kwiecień 20, 2023 wydałem na zestaw mistrz arduino 500 złotych polskich... i co dostaję? część 6 niezrobiona bo NIE MAM INFORMACJI. Dokładniej ujmując: co to jest obok tranzystora? kto potrzebuje tej informacji. Część 9: czy autorze jest to tak trudne aby wpisać co będzie potrzebne jako listę? bo to że potrzebuję kondensatora dużo nie mówi a wystarczy napisać pod obrazkiem z potrzebnymi rzeczami: kondensator 110µF, rezystor 10 Ω, . 144p to nie jest to czego bym oczekiwał po wydaniu 500 zł.
Treker (Damian Szymański) Kwiecień 21, 2023 Udostępnij Kwiecień 21, 2023 @MMJ5XD staram się, aby materiały były pomocne. Wiem, że kursy nie są idealne i na pewno wiele można tu poprawić. Dla formalności przypominam jednak, że treść kursów jest udostępniana całkowicie za darmo i można się z nimi zapoznać przed zamówieniem zestawów. Jeśli coś nie jest dla Ciebie zrozumiałe to wystarczy zapytać pod konkretnym artykułem - chętnie pomogę. Jeśli Twoje problemy dotyczą głównie elektroniki to zachęcam do przeczytania kursu podstaw elektroniki - to na pewno sporo wyjaśni w kontekście tranzystorów i kondensatorów (nawet, jeśli tylko przeczytasz ten kurs bez wykonywania ćwiczeń). Większość osób decyduje się właśnie na naukę w tej kolejności: kursy elektroniki > kursy Arduino. Treść kursu podstaw elektroniki również dostępna jest za darmo: https://forbot.pl/blog/kurs-elektroniki-napiecie-prad-opor-zasilanie-id3947 17 godzin temu, MMJ5XD napisał: to nie jest to czego bym oczekiwał po wydaniu 500 zł. Jeśli nie jesteś zadowolony ze sprzętu, który zamówiłeś to bez problemu możesz go zwrócić. Jeśli zestawy były kupione w Botlandzie to masz 30 dni na zwrot.
Noob Sierpień 23, 2023 Udostępnij Sierpień 23, 2023 Cześć. Mostek l293d ma możliwość podpięcia zasilania do 36 V. Czysto teoretycznie w jakiś sposób to zrobić? Podłączyć po prostu zasiadanie pod Vs? Gdzie wtedy przyłączyć masę tejże baterii, do jednego z czterech wyjść mostka? Od kilku dni się nad tym zastanawiam.
Treker (Damian Szymański) Sierpień 23, 2023 Udostępnij Sierpień 23, 2023 @Noob witam na forum Jeśli w projekcie używa się kilka źródeł zasilania to łączy się ich masy. Także w tym przypadku masy po prostu należy połączyć - gdzie fizycznie, to już nie ma większego znaczenia. Grunt, aby zasilanie 36 V doprowadzić wtedy tylko do tego wyjścia, którym zasila się silniki.
Sito89 Styczeń 7, 2024 Udostępnij Styczeń 7, 2024 Zadanie 8.3 int licznik = 0; //zmienna licząca odebraną liczbę od użytkownika int i = 0; //zmienna dla pętli for String odebrane; // treść odebrana od użytkownika void setup() { Serial.begin(9600); //nawiązanie połącznenia przez UART } void loop() { if (Serial.available() > 0) { //jeżeli użytkownik wpisał dane, to odebrane = Serial.readStringUntil('ln'); //czytaj dane aż do nowej linii licznik = odebrane.toInt(); //zamień treść tych danych na liczbę całkowitą if (licznik >= 0 and licznik <= 9) { //jeżeli ta liczba całkowita jest w przedziale 0-9, to for (i = 1; i <= licznik; i++) { //powtarzaj poniższe czynności tyle razy ile wynosi ta liczba całkowita Serial.print("*"); //zapisz gwiazdkę } } Serial.println(); //po zakończeniu pętli zacznij od nowego wiersza } } 1
Sito89 Styczeń 9, 2024 Udostępnij Styczeń 9, 2024 Zadanie domowe 8.4 Napisz program, który za pomocą 2 pętli for będzie płynnie rozpędzał oraz hamował silnik. void setup() { pinMode(6, OUTPUT); // sterowanie prędkością pinMode(7, OUTPUT); pinMode(8, OUTPUT); // sterowanie kierunkiem obrotu silnika digitalWrite(8, LOW); digitalWrite(7, HIGH); // obrót w danym kierunku } void loop() { for (int i = 0; i < 255; i++) { //płynne rozpędzanie silnika analogWrite(6, i); delay(10); } for (int i = 255; i > 0; i--) { // płynne zwalnianie analogWrite(6, i); delay(20); } } Opóźnienia w pętlach for są dobrane tak, żeby świecenie diody dawało ładny efekt. 1
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ę »