Sterownik do tokarki
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 10
- Posty: 46
- Rejestracja: 10 sty 2013, 14:39
- Lokalizacja: Polska
Sterownik do tokarki
Witam
Zbudowałem sobie sterownik z tej strony https://github.com/kachurovskiy/megaels/.
Znalazłem wersję dla wyświetlacza 4x20znaków jednak jest ona po rosyjsku i wyświetlacz pokazuje jakieś głupoty.
Czy jest tu jakiś magik co pomoże przetłumaczyć kod??
Przykładowy kawałek kodu
void Print()
{
if (Mode == Mode_Thread) //////////////////////////////////////////////////////////
{
if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xB3\xBD\x79\xBF\x70\x65\xBD\xBD\xC7\xC7 "); //РЕЗЬБА внутренняя
else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 "); //РЕЗЬБА
else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xBD""apy\xB6\xBD""a\xC7 "); //РЕЗЬБА наружная
W załączniku soft z tego projektu
Zbudowałem sobie sterownik z tej strony https://github.com/kachurovskiy/megaels/.
Znalazłem wersję dla wyświetlacza 4x20znaków jednak jest ona po rosyjsku i wyświetlacz pokazuje jakieś głupoty.
Czy jest tu jakiś magik co pomoże przetłumaczyć kod??
Przykładowy kawałek kodu
void Print()
{
if (Mode == Mode_Thread) //////////////////////////////////////////////////////////
{
if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xB3\xBD\x79\xBF\x70\x65\xBD\xBD\xC7\xC7 "); //РЕЗЬБА внутренняя
else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 "); //РЕЗЬБА
else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_1, 21, " \x50\x45\xA4\x62\xA0\x41 \xBD""apy\xB6\xBD""a\xC7 "); //РЕЗЬБА наружная
W załączniku soft z tego projektu
- Załączniki
-
- Digital_Feed_7e2_2004_rus_AUTO.rar
- (215.03 KiB) Pobrany 43 razy
-
- Specjalista poziom 2 (min. 300)
- Posty w temacie: 2
- Posty: 351
- Rejestracja: 23 lis 2005, 18:07
- Lokalizacja: Białystok
Re: Sterownik do tokarki
Po prostu zastępujesz to co jest w cudzysłowach przetłumaczonym tekstem
O ile google translator dobrze przetłumaczył to
nie jestem pewien czy jest wymagana spacja na początku i końcu tekstu
zmienna LCD_Row_1 zapewne oznacza że tekst ma być w pierwszej linii a 21 to pozycja X tekstu, więc jak się coś nie mieści to trzeba by było wartość 21 trochę zmniejszyć
O ile google translator dobrze przetłumaczył to

Kod: Zaznacz cały
if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_1, 21, " Gwint wewnetrzny "); //РЕЗЬБА внутренняя
else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_1, 21, " Gwint "); //РЕЗЬБА
else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_1, 21, " Gwint zewnetrzny "); //РЕЗЬБА наружная
zmienna LCD_Row_1 zapewne oznacza że tekst ma być w pierwszej linii a 21 to pozycja X tekstu, więc jak się coś nie mieści to trzeba by było wartość 21 trochę zmniejszyć
-
- Lider FORUM (min. 2000)
- Posty w temacie: 13
- Posty: 3052
- Rejestracja: 21 sty 2020, 17:48
- Lokalizacja: Toruń miasto Tadeusza R
Re: Sterownik do tokarki
bo to jest wyświetlanie cyrrlicy na lcd ,masz opisy i po angielsku i rusku ,puki nie będziesz zamieniał na polskie litery typy ć,ś,ź, ż czy ę to nie będziesz miał problemu .beyma pisze:Przykładowy kawałek kodu
wyświetlacz jest w sposób normalny podzielony na kolumny i wierszekasjo pisze:zmienna LCD_Row_1 zapewne oznacza że tekst ma być w pierwszej linii a 21 to pozycja X tekstu
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
char LCD_Row_1[21];
char LCD_Row_2[21];
char LCD_Row_3[21];
char LCD_Row_4[21];
Dodane 9 minuty 16 sekundy:
nie wiem jak daleko jesteś ale te jego sterowniki są słabe gubią kroki albo przekraczają limity przy prędkościach wrzeciona powyżej 500 odr/min . Jedyny dobrze działający który też testowałem to wersja h1 .beyma pisze:Zbudowałem sobie sterownik z tej strony
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 10
- Posty: 46
- Rejestracja: 10 sty 2013, 14:39
- Lokalizacja: Polska
Re: Sterownik do tokarki
Tak właśnie myślałem że o to w tym chodzi jest jednak inny szkopuł
Np to
if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых
else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_4, 21, " %5ld \xB3\xB8\xBF\xBA""o\xB3", Rev_Count); // 0 витков
else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых
""""" \xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2" """"""""""
Jak to mam interpretować?
Albo ten kawałek kodu
if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф:
Np to
if (Sub_Mode_Thread == Sub_Mode_Thread_Int) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых
else if (Sub_Mode_Thread == Sub_Mode_Thread_Man) snprintf(LCD_Row_4, 21, " %5ld \xB3\xB8\xBF\xBA""o\xB3", Rev_Count); // 0 витков
else if (Sub_Mode_Thread == Sub_Mode_Thread_Ext) snprintf(LCD_Row_4, 21, "\xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2",PASS_FINISH + Pass_Fin); // из них чистовых
""""" \xB8\xB7 \xBD\xB8""x \xC0\xB8""c\xBF""o\xB3\xC3""x%2d \1\2" """"""""""
Jak to mam interpretować?
Albo ten kawałek kodu
if (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/Ф:
-
- Lider FORUM (min. 2000)
- Posty w temacie: 13
- Posty: 3052
- Rejestracja: 21 sty 2020, 17:48
- Lokalizacja: Toruń miasto Tadeusza R
Re: Sterownik do tokarki
beyma pisze:f (PP_X == 1)snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100); // съём/
\x63\xC2\xB5\xBC/\6 wartość %1d wartość np 10,1 jedno miejsce po przecinku %02d dwa miejsca po przecinku 10,01
Dodane 3 minuty 10 sekundy:
to jest np taki zapis https://stackoverflow.com/questions/733 ... e-operator
Dodane 4 minuty 55 sekundy:
Ale tu masz rozwiązanie twego ruskiego problemu https://www.utf8-chartable.de/unicode-u ... ng-literal powstawiaj sobie wszystkie znaki wyjdą litery i zmień na polskie
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 10
- Posty: 46
- Rejestracja: 10 sty 2013, 14:39
- Lokalizacja: Polska
Re: Sterownik do tokarki
Czarna magia jak dla mnie XD.... Tak to już jest gdy się nie zna podstaw programowania. Myślałem że to będzie proste jednak przerasta mnie to
-
- Lider FORUM (min. 2000)
- Posty w temacie: 13
- Posty: 3052
- Rejestracja: 21 sty 2020, 17:48
- Lokalizacja: Toruń miasto Tadeusza R
Re: Sterownik do tokarki
A cały problem tego zapisu polega na tym ażeby zapobiec migotania lcd bo po prostu procesor nie nadąża żeby zastosować normalny kod taka maniana na zastosowanie tego co się ma czyli 16MHz , zamiat jakiegoś stm32f np 72MHz
lcd.setCursor(0, 2);
lcd.print("Position ");
Dodane 5 minuty 5 sekundy:
Dodane 21 minuty :
wypróbuj najpierw wersję h1 sam zobaczysz że to niby działa bo fakt nawet gwinty toczy ale kultura pracy taka sobie ,jak na arduino.
lcd.setCursor(0, 2);
lcd.print("Position ");
Dodane 5 minuty 5 sekundy:
to jest proste trzeba znaleść unicode/UTF-8 na cyrlice bo to co si wysłałem to unicode europejskie.Bo skoro warunkiem jest stosowanie na wysyłanie do wyświetlacza char LCD_Row to trzeba litery zamienić na znaki char bo inaczej nie będzie to działać .czyli trzeba rozkodować tą ruską pisaninę przetłumaczyć na polską i tym co ci wysłałem znów zmienić na char i wstawić w daną linijkę.beyma pisze: Myślałem że to będzie proste jednak przerasta mnie to
Dodane 21 minuty :
wypróbuj najpierw wersję h1 sam zobaczysz że to niby działa bo fakt nawet gwinty toczy ale kultura pracy taka sobie ,jak na arduino.
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 10
- Posty: 46
- Rejestracja: 10 sty 2013, 14:39
- Lokalizacja: Polska
Re: Sterownik do tokarki
Mam zbudowana wersję H2 jak i ta o której tu piszę.
Wszystko póki co jest w fazie testów, zapoznania się z tym. A że ja lubię eksperymenty
to się bawię jednak programowanie mnie przerasta.
Zastanawiam się też nad budową tego els
https://github.com/hobbymachinist/els/b ... ocs/els.md
Wszystko póki co jest w fazie testów, zapoznania się z tym. A że ja lubię eksperymenty

Zastanawiam się też nad budową tego els
https://github.com/hobbymachinist/els/b ... ocs/els.md
Ostatnio zmieniony 15 mar 2023, 19:15 przez beyma, łącznie zmieniany 1 raz.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 13
- Posty: 3052
- Rejestracja: 21 sty 2020, 17:48
- Lokalizacja: Toruń miasto Tadeusza R
Re: Sterownik do tokarki
U mnie na stole wersja h2 działała w maszynie już nie same się zmieniały wartości skoku i blokował się start .
Mam wyrypane na wszelkiej maści proroków ,mędrców i wszystkich którzy stawiają się ponad innymi ,i tak ich zjedzą robaki
-
- Lider FORUM (min. 2000)
- Posty w temacie: 2
- Posty: 2437
- Rejestracja: 29 lis 2015, 00:38
- Lokalizacja: Bielsko-Biała
Re: Sterownik do tokarki
beyma pisze:Czarna magia jak dla mnie XD.... Tak to już jest gdy się nie zna podstaw programowania. Myślałem że to będzie proste jednak przerasta mnie to
Ale nie musisz znać podstaw programowania. Te magiczne ciągi to po prostu kody ASCII cyrylicy (zgaduję), po prostu zamieniasz to na zwykłe literki (bez polskich znaków). Między nimi znajdują się odniesienia do zmiennych, które nie polepszają sytuacji bo wygląda to groźnie. Ale linia:
snprintf(LCD_Row_4, 21, "\x63\xC2\xB5\xBC/\6 %1d.%02d\xBC\xBC \4\3", Ap/100, Ap%100)
to tak naprawdę
snprintf(LCD_Row_4, 21, "tekst1 %1d . %02d tekst2", Ap/100, Ap%100)
gdzie masz 5 argumentów - pierwsze dwa odnoszą się do wyświetlacza, następnie masz tekst, w którym są odniesienia do dwóch zmiennych:
%1d
%02d
gdzie za %1d jest wstawiana wartość Ap/100
a za %02d jest wstawiana wartość Ap%100
czyli na ekranie pojawi się np. tekst1 20.5 tekst2 gdzie 20 to wartość wyrażenia Ap/100 a 5 to wartość wyrażenia Ap%100 (czyli reszta z dzielenia przez 100, w efekcie prosty sposób na dzielenie z dokładnością do jednej dziesiątej, mikrokontrolery zdecydowanie wolą mnożenie i dzielenie liczb całkowitych od liczb dziesiętnych).
No, przynajmniej z grubsza, proszę mnie poprawić, jeśli coś tu pominąłem, bo piszę w zasadzie z pamięci, a dawno już nie miałem okazji pisać nic w C, a nawet jeśli już to z tekstem miałem rzadko do czynienia. Nie byłem też nigdy fanem takiej formy zapisu tekstu.
Tutaj możesz przeczytać więcej o formatowaniu w funkcji printf - https://learn.microsoft.com/en-us/cpp/c ... w=msvc-170