Skocz do zawartości

BananWszyscy

Użytkownicy
  • Zawartość

    72
  • Rejestracja

  • Ostatnio

Wszystko napisane przez BananWszyscy

  1. Nie to, że krytykuję... Ale efekt wygląda jak na tych filmach, gdzie zdarzają się katastrofy i światło tak miga zwierając się gdzieś :D
  2. ten zapis od razu wyłapałem, że chodzi o element nie tablicę, ale już o tym nie wspomniałem, więc luz. Nadal mówię, że ja bym teraz tę choinkę zrobił inaczej (nawet napisałęm, że mam tylko głównie atmegi i musiałbym multiplexować (parę tranzystorów i może ekspander musiałbym wrzucić, żeby uciec i mieć pająka..), ale jest jak jest i trzeba było ratować obecną sytuację (znaczy wiadomo nic nie trzeba, ale na studiach na podstawach automatyki wykładowca powiedział taką mądrą rzecz "często automatyk nie może zmienić obiektu, a musi jakoś uratować projekt" i podszedłem z tej strony). Sprawdzone zostało, że natłok tak mocno pracujących wyjść nie wpływał na błędne działanie całego kodu i problem leżał gdzie indziej i nadal nie wiemy gdzie :3. Nadal przy wywaleniu doraźnego lekarstwa w postaci delay'a staje zawsze w tym samym miejscu, a możliwości debugowania mam ograniczone. A te ify to tak wynika z mojego małego doświadczenia i często patrzenie na kody w maszynach na plckach, które nierzadko są jakie są...<nie pomaga> a że te mikroklocki to nie jest póki co moja wybitna strona to wiadomo. Chciałem nawet dopisywać fragmencik ze stanem czekania na zmianę kroku, żeby nie latał po pinach w kółko... ale jestem leniem ostatnimi dniami edit. z drugiej strony jak na początku kminiłem co jest nie tak, to też myślałem, że może być problem z zasilaniem. Teraz wiem, że 5v trzyma, ale nawet myślałem, że do wspólnego masowego przycisku wrzucić jakiś tranzystor i pyknąć wypełnienie jakieś niewielkie i zobaczyć co się dzieje. ale odłączenie wszystkich światełek nie poprawiło sytuacji to odpuściłem
  3. Dodam już jako następny post. Sprawdziłem na masowym przewodzie ile płynie: 294 miliampery przy ciągłym świeceniu całego dobrobytu (nie będę teraz sprawdzał każdej nóżki xD).. trochę sporo ale tragedii nie ma. No ale odpiąłem przewód masy tych diodek, wgrałem od nowa, paczam na port szeregowy co się dzieje i.. nic się nie zmieniło. Zgłupiałem absolutnie. EDIT. No to problem rozwiązałem doraźnie - na początku program2(); do debugowania wrzuciłem println("rozp_prog2") i wszystko zadziałało z marszu... więc dopisałem na starcie delay(1); i działa...
  4. O, nawet nie wiedziałem, że digitalWrite może obsługiwać tablice dobra już nic, jednak zmęczenie powoduje braki w czytaniu Prawdopodobnie takie sterowanie było brane przy użyciu info z załącznika. Wiem też, że programik pisany "chamsko" z delay'ami śmiga aż miło. Jak wrócę to spróbuję wyhaczyć moment dokładnie w którym staje dęba... bo on się nie resetuje tylko staje dęba. Już był z tą płytką problem, że przerwania zewnętrzne przy dobrym (tak jak w poprzednim załączniku) podłączeniu microswitcha zawsze wykonywały się dwukrotnie... może ona jest jakaś nie ten teges... ja niestety mam same atmegi i musiałbym multiplexować wsio, an ie chce mi się sklejać takiego pająka. edit2. po prostu też odepnę wszystkie masy oprócz przycisków i zobaczę, czy program odpowiada
  5. Świecenie wszystkimi diodami działa bez zarzutów. poza tym wejście w program2 zaswieca 2 ledy i kaplica. przy ciągłym świeceniu na wyjściu z pinu procka jest 13mA. nie zmierzę ile jest w stanie przełączania, bo nie mam jak. A tam w przerwaniu jak poprawiałem to nie zauważyłem, że stoi int. poza tym program0 zaświeca all i kontroler dalej jest responsywny nawet po minucie świecenia. edit. jeszcze przed wyjściem do pracy zauważyłem, że jak zakomentuje cały program3, a odkomentuje program2 w całości to też działa... xD
  6. Wpierw kod: //47 zwykłych diod //3 czubek //2 przyciski //rozklad warstwowo: /*1w 0-1 2w 2-5 3w 6-9 4w 10-14 5w 15-19 6w 20-25 7w 26-31 8w 32-38 9w 39-46*/ #include "TimerOne.h" #define przycisk1 A15 #define przycisk2 A14 #define gwiazda_zielony A0 #define gwiazda_niebieski A1 #define gwiazda_czerwony A2 int numer_programu = 0; int tryb_gwiazdy = 0; uint8_t krok_programu = 1; boolean tablica_led[47]; int licznik_timera = 0; //licznik, ktory zmienia wartosc o 1 co przerwanie //deklaracje funkcji void program0(); void program1(); void program2(); void program3(); void program4(); void program5(); void kontrola_krokow(uint8_t liczba_krokow, int czas_opoznienia_swiecenia); void wystaw_wyjscia_diod(); void obsluga_przyciskow(); void migajaca_gwiazda(); void przerwanie_od_timera(); void setup() { //wyjscia for (int i = 0; i < 47; i++) pinMode( i, OUTPUT); //wejscia pinMode(gwiazda_zielony, OUTPUT); pinMode(gwiazda_niebieski, OUTPUT); pinMode(gwiazda_czerwony, OUTPUT); pinMode(przycisk1, INPUT); pinMode(przycisk2, INPUT); //przerwanie od timera na 1ms Timer1.initialize(1000); Timer1.attachInterrupt(przerwanie_od_timera); delay(500); digitalWrite(gwiazda_czerwony, LOW); digitalWrite(gwiazda_niebieski, LOW); digitalWrite(gwiazda_zielony, LOW); // Serial.begin(9600); } void loop() { int czas_opoznienia_swiecenia; uint8_t liczba_krokow; switch (numer_programu) { case 0: program0(); break; case 1: liczba_krokow = 2; czas_opoznienia_swiecenia = 500; program1(); break; case 2: liczba_krokow = 9; czas_opoznienia_swiecenia = 80; program2(); break; case 3: liczba_krokow = 8; czas_opoznienia_swiecenia = 60; program3(); break; case 4: program4(); break; case 5: program5(); break; } switch (tryb_gwiazdy) { case 1: { digitalWrite(gwiazda_czerwony, LOW); digitalWrite(gwiazda_niebieski, LOW); digitalWrite(gwiazda_zielony, LOW); break; } case 2: { migajaca_gwiazda(); break; } } wystaw_wyjscia_diod(); if (numer_programu != 0) kontrola_krokow(liczba_krokow, czas_opoznienia_swiecenia); obsluga_przyciskow(); //debugowanie // Serial.print(numer_programu); // Serial.print(" "); // Serial.print(krok_programu); // Serial.print(" "); // Serial.print(licznik_timera); // Serial.print(" "); // Serial.print(tablica_led[44]); // Serial.print(" "); // Serial.println(tablica_led[45]); } void program0() //wszystko świeci na pełnej { for (int i = 0; i < 47; i++) tablica_led[i] = 1; } void program1() //mryga na przemian { for (int i = 0; i < 47; i++) { switch (krok_programu) { case 1: if (!(i % 2)) tablica_led[i] = 1; else tablica_led[i] = 0; break; case 2: if (i % 2) tablica_led[i] = 1; else tablica_led[i] = 0; break; } } } void program2() //zjazd od góry do dołu { for (int i = 0; i < 47; i++) { switch (krok_programu) { case 1: if ((i >= 0) && i <= 1) tablica_led[i] = 1; else tablica_led[i] = 0; break; case 2: if ((i >= 2) && i <= 5) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 3: if ((i >= 6) && i <= 9) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 4: if ((i >= 10) && i <= 14) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 5: if ((i >= 15) && i <= 19) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 6: if ((i >= 20) && i <= 25) tablica_led[i] = 1; else tablica_led [i] = 0; break; // case 7: // if ((i >= 26) && i <= 31) // tablica_led[i] = 1; // else tablica_led [i] = 0; // break; // case 8: // if ((i >= 32) && i <= 38) // tablica_led[i] = 1; // else tablica_led [i] = 0; // break; // case 9: // if ((i >= 39) && i <= 46) // tablica_led[i] = 1; // else tablica_led [i] = 0; // break; } } } void program3() //harmonijka { for (int i = 0; i < 47; i++) { switch (krok_programu) { case 1: if ((i >= 15) && i <= 19) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 2: if ((i >= 10) && i <= 25) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 3: if ((i >= 6) && i <= 31) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 4: if ((i >= 2) && i <= 38) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 5: if ((i >= 0) && i <= 46) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 6: if ((i >= 2) && i <= 38) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 7: if ((i > 5) && i < 32) tablica_led[i] = 1; else tablica_led [i] = 0; break; case 8: if ((i >= 10) && i <= 25) tablica_led[i] = 1; else tablica_led [i] = 0; break; } } } void program4() { } void program5() { } void wystaw_wyjscia_diod() { for (int i = 0; i <= 46; i++) { if (tablica_led[i]) digitalWrite(i, HIGH); else digitalWrite(i, LOW); } } void obsluga_przyciskow() { static uint8_t opoznienie_przycisku_1; static uint8_t opoznienie_przycisku_2; if (!digitalRead(przycisk1) && !opoznienie_przycisku_1) { opoznienie_przycisku_1 = 1; numer_programu++; krok_programu = 1; if (numer_programu > 5) numer_programu = 0; } else if (opoznienie_przycisku_1 && digitalRead(przycisk1)) opoznienie_przycisku_1++; if (!digitalRead(przycisk2) && !opoznienie_przycisku_2) { opoznienie_przycisku_2 = 1; tryb_gwiazdy++; if (tryb_gwiazdy > 3) tryb_gwiazdy = 1; } else if (opoznienie_przycisku_2 && digitalRead(przycisk2)) opoznienie_przycisku_2++; } void migajaca_gwiazda() { //miganie gwiazda na zmiane na 3 } void przerwanie_od_timera() { if (licznik_timera) licznik_timera--; } void kontrola_krokow(uint8_t liczba_krokow, int czas_opoznienia_swiecenia) { { if (!licznik_timera) //kontrola czasu kroku { krok_programu++; if (krok_programu > liczba_krokow) krok_programu = 1; licznik_timera = czas_opoznienia_swiecenia; } } } Dostałem do rozwiązania taki oto problemik - jest sobie choinka, ledy podłączone są do klona arduino mega (2x led w szeregu), błędów w podłączeniu nie ma (przynajmniej ja nie widzę) Problem jest taki, że całość zwiesza się podczas przejścia do programu2(), gdy cały kod jest odkomentowany w tej funkcji. Gdy zostaje zakomentowany case od 7 do 9 - wszystko jest ok i działa bez zarzutu. Jakoś nie widzę, żeby tu coś było nie tak. Pomocy, bo po nockach to już zgłupiałem, albo o czymś zapomniałem PS. to jest płytka,na której przerwanie zewnętrzne wykonuje się zawsze 2x, co by się nie działo i tego też nie rozkminiłem. Edit. poprawa błędów w poście i uprzedzenie pytania, jak przyciski są podłączone, to wg załącznika:
  7. A licencja? Ja używam endera 3, można było pomyśleć o enderze 3 v2. Co do filamentów dłuższy czas używałem filamentów od 3dactive... powiem tak, że dużo regulacji drukarki mnie czekało po paru godzinach druku, teraz przesiadłem się na dd i szczerze mówiąc, praktycznie nie ruszam druarki mechanicznie i wydruki są ok.. aczkolwiek trafiła mi się jedna "nadcięta" nitka w szpuli, mam nawet gdzieś fotkę, potem wrzucę edit. w enderze 3 od razu należy albo wydrukować ramię ekstrudera, albo dokupić aluminiowe. edit2. obiecana fotka
  8. https://www.arduino.cc/en/Tutorial/StateChangeDetection coś w podobie, dla rozjaśnienia mózgu
  9. Czego dokładnie nie rozumiesz, program idzie tu po kolei, najpierw czeka delay'em, potem wchodzi w pętlę czekajkę
  10. Pamiętaj, że takie ogniwo na pełnej mocy bez dobrego chłodzenia to długo nie podziała to raz. Zawsze możesz włączać i wyłączać jak cię nie denerwuje stykający przekaźnik. Opornik w szereg to podejście takie se, nie lepiej zbić napięcie w inny sposób? :P
  11. A czy to nie jest miejsce, w którym dysza się podnosi do kolejnej warstwy? ew. robiąc przejazd w koło nie zjeżdża do środka? edit. https://community.ultimaker.com/topic/26154-is-there-an-equivalent-in-cura-to-randomize-seam-position-that-slic3r-has/ https://community.ultimaker.com/topic/6781-vertical-line-problem-appear-um-original-kit/
  12. Zobacz multimetrem, czy zmienia się napięcie na tych pinach. Ta dioda to ta sama dioda co w kursie czy coś innego?
  13. A nie lepiej kupić klona arduino nano (ok. 15 zł na popularnym serwisie aukcyjnym) + płytka stykowa? tu masz ten plus,że to małe coś możesz wtyknąć bezpośrednio do płytki bez użycia kabelków ;p Potem docenisz niewielkie rozmiary tego, gdy okaże się, że dużą płytkę trudno upchać do jakiegoś projektu/jest to nieopłacalne. Ja np. kiedyś kiedyś kupiłem oryginalne uno, ze względu takiego, że poczułem, że należy im się zaplata za taki pomysł.. i działa do dziś.
  14. Zaraz będziemy wchodzić w automatyka a automatyzacja, robotyka a robotyzacja i od kiedy urządzenie do przekładania np. paczek z linii na paletę przestaje być manipulatorem a zaczyna być robotem Ja się trzymam tego, że automat wykonuje pracę na sztywno a robot np. już analizuje sytuację w koło np. z wizją którą paczkę najpierw wybrać, bo będzie mniejszy koszt ruchu itp. itd.
  15. https://www.arduino.cc/en/tutorial/arduinoISP
  16. JA znam metodę z pomiarem jakiegoś tam prądu ew żarówką/diodą
  17. Mi właśnie tylko ten czarny powoduje takie problemy... jeszcze nie zapchał całkowicie dyszy, ale był problematyczny. Sam się zastanawiałem co miał kolor do jakości szpuli filamentu A sporo rzeczy do samochodu chciałem dodrukować, no ale trzeba będzie przyinwestować w coś lepszego Ogólnie wrzuć fotkę po zbiciu temperatury i zobaczymy jak się rozsmarowuje na płaskich powierzchniach
  18. tutaj mogę się zgodzić połowicznie jeśli chodzi o 3dactive - np. na szarym i niebieskim filamencie (takie jakie od nich kupiłem) czy drukowanie na 180 czy 220 i efekty są naprawdę spoko, ale za to czarny... czarny to dno i 2metry mułu... Mam straszne problemy z ustawieniem drukowania na tym czymś. Czasem te nitki powstają, jak jednak jest ciut za wysoko dysza względem stołu - czasem pomagało zbicie trochę prędkości druku... ale jednorodnośc tej jednej szpuli pozostawia "troszkę" do życzenia :))
  19. Albo po prostu if (START) { } Dla wyjaśnienia - if "wchodzi" w kod, jeśli to co w nawiasie nie wyjdzie 0, czyli jeśli bedzie START jako false to będzie 0 i "pomija", a jeśli jako true, to będzie 1 i wykonuje. Tak możesz na przyszłość uniknąć takich błędów
  20. 1. Wgrywasz zwykły blink (od migania diodą) - sprawdzasz czy dioda na płytce miga 2. Jak nie to robisz to: https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard wykonujesz to co jest napisane od "Uploading using and arduino board", wgrywasz zwykłego blinka i sprawdzasz na pinie, czy pojawia ci się stan wysoki Jak nie masz kwarcu to tam też masz napisane co zrobić edit. ofc nic poza niezbędnymi elementami nie podłączasz do płytki
  21. Rozumiemy, że arduino wykrywane jest jako znane urządzenie (możesz podejrzeć w menedżerze sprzętu)
  22. Drukarki typu ender 3 czy ender 3 pro w zupełności do takich celów wystarczają (po odpowiednim ustawieniu i skręceniu jej po wyjęciu z pudełka). Ja swoją kupiłem chyba za 650zł? na gearbescie (wysyłka była z Francji i było to trochę temu)
  23. Fajne klapki... x) A tak ogólnie musisz spróbować coś zrobić z poślizgiem (był już pomysł wyrównywania i kontroli prędkości kół). Poza tym skoro inżynierka to możesz zmapować sobie podczas przejazdu zdalnie sterowanego teren w koło i puścić go samodzielnie
  24. Nie wiem skąd idą różowe kabelki (czy tam fioletowe), ale pewnie oczekujesz, że będą one połączone równolegle i nie będzie 10kohmów
×
×
  • Utwórz nowe...