Znaleziono 4 wyniki

autor: Zienek
10 wrz 2013, 19:04
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino steruje ploterem.
Odpowiedzi: 49
Odsłony: 20106

Ja bym pomyślał o jakiejś luźnej interpretacji algorytmu Bresenhama.
Z tym, że nie do rysowania linii (przestrzeń x,y), tylko do znajdowania najodpowiedniejszego kwantu w czasie (przestrzeń f,t).

Do przemyślenia.
autor: Zienek
09 wrz 2013, 22:23
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino steruje ploterem.
Odpowiedzi: 49
Odsłony: 20106

Interpreter jeszcze na komputerze to może być dobry pomysł.
Z komputera do kontrolera przychodziły by instrukcje nie w formie gkodu, a ilości kroków do wykonania dla każdej osi w danym interwale czasowym i ich zwroty.
Np. teraz przez 100ms:
X+ 50 kroków
Y- 25 kroków
Z+ 10kroków.
Wtedy sterownik ustawiłby polaryzację dla DIR, oraz:
co drugą milisekundę sterownik 'pikałby' na plus dla STEP X,
co czwartą na minus dla STEP Y
co dziesiątą dla STEP Z.
autor: Zienek
08 wrz 2013, 16:47
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino steruje ploterem.
Odpowiedzi: 49
Odsłony: 20106

Winszować :)

Pisanie fajnego kodu polega na tym, żeby wyczuwać "code smells" tzw miejsca, gdzie "coś śmierdzi" w kodzie.

Najprostszym zapachem do wyniuchania są powtórzenia.

Po napisaniu kodu, który działa niezbędnie, później jest czas na refactoring. To jest właśnie usuwanie code smells.

Fajnym wyzwaniem na teraz przed kolejnym dopisywaniem funkcjonalności będzie przeniesienie powtarzalnych elementów kodu do oddzielnych funkcji.
http://arduino.cc/en/Reference/FunctionDeclaration

Pierwszy lepszy przykład

Kod: Zaznacz cały

void wyswietl_koordynaty(float G, float X, float Y, float Z){ 
 lcd.setCursor(0,0);lcd.print(" ");lcd.setCursor(0,0);lcd.print("G "); lcd.print(G); 
 lcd.setCursor(8,0);lcd.print(" ");lcd.setCursor(8,0);lcd.print("X "); lcd.print(X); 
 lcd.setCursor(0,1);lcd.print(" ");lcd.setCursor(0,1);lcd.print("Y "); lcd.print(Y); 
 lcd.setCursor(8,1);lcd.print(" ");lcd.setCursor(8,1);lcd.print("Z "); lcd.print(Z); 
}
Żeby kod nie był ciurkiem także parsowanie wejścia serial możesz wydzielić do osobnej funkcji.
A to co powtarzasz dla każdej osi, jako funkcję, gdzie podajesz jako parametr char S - znak który wzkazuje, jaką osią w tym wywołaniu dana funkcja się zajmuje.
autor: Zienek
08 wrz 2013, 14:20
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Arduino steruje ploterem.
Odpowiedzi: 49
Odsłony: 20106

O boże 300 linii w jednej funkcji :)

Mimo wszystko respect.

Podpatrywałeś GRBL?
https://github.com/grbl/grbl

Pozdrawiam,
Zienek

Wróć do „Arduino steruje ploterem.”