Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 kwi 2024, o 01:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 2 lis 2012, o 02:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Witam

Próbuję stworzyć funkcję do wyświetlania liczb o wymiarze 1x2 na wyswietlaczach ze sterownikiem HD44780
wyglądają one tak:

Obrazek

Nie ja je wymyśliłem, znam je z programu Smartie którego używam
w tym programie są 3 opcje dużych liter:
3x4
Obrazek
2x2
http://img825.imageshack.us/img825/848/dsc4178lb.jpg

Mój dotychczasowy kod wygląda tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


cyfry z pierwszego zdjęcia wypisywałem tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak ten zapis: "\x04" zastąpić wartością ze zmiennej ?
Próbowałem wielu zapisów ale sam tego nie wymyślę wskażcie drogę Panowie.

[ ale zdaje się, że już po raz drugi koledze zwracam uwagę na to żeby używać znaczników [ syntax = c ] zamiast [ code ] , wystarczy że edytujesz ten post i zobaczysz o co chodzi - mirekk36 ]
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
[/syntax]

_________________
sig on ;)



Ostatnio edytowano 2 lis 2012, o 12:54 przez 1bobik1, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 09:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


o to np ci chodzi ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 13:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Przepraszam za ten syntax, wiecej się to nie powtórzy.

Ok Twój sposób działa teraz chciałbym pójść krok dalej i wypisywać stringi tych znaków
na wzór funkcji lcd_str spłodziłem coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


niestety przy wywołaniu funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wyskakuje błąd kompilacji
" too many arguments to function 'big_num_str' "

co robię źle ?

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 14:03 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

A jesteś pewien że tej linii programu dotyczy ten błąd ?

A jesteś pewien że masz taką samą deklarację i definicję tej funkcji?

przecież to prosty komunikat i mówi o tym że próbujesz przekazać za dużo argumentów do funkcji

więc jeśli sam nie możesz zobaczyć to wklej tu cały fragment błędów z konsoli po kompilacji a nie tylko treść komunikatu no i sprawdź to co na górze napisałem

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

po kliknięciu w ten błąd przechodzi do linijki z wywołaniem funkcji więc myślę że tak
definicja i deklaracja jest taka sama (przynajmniej nazwa)

Kod:
**** Budowanie of configuration Release for project BIG_NUM ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
../main.c: In function 'main':
../main.c:128: error: too many arguments to function 'big_num_str'
../main.c: At top level:
../main.c:142: error: conflicting types for 'big_num_str'
../main.c:45: error: previous declaration of 'big_num_str' was here
../main.c: In function 'big_num_str':
../main.c:150: warning: array subscript has type 'char'
../main.c:152: warning: array subscript has type 'char'
make: *** [main.o] Error 1

**** Build Finished ****


"no i sprawdź to co na górze napisałem"
nie wiem do czego to, wszystko czytałem

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 14:55 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

No sam zobacz:

../main.c:45: error: previous declaration of 'big_num_str' was here

toż masz jakąś sieczuszkę w tym swoim kodzie. Weź więc wklej ten cały kod - zamiast kawałkami - bo tak to ci nie podpowiem ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 15:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Wstyd....

nie zmieniłem deklaracji na początku programu
było tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tu poprawiony kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i wynik kompilacji:
Kod:
**** Budowanie of configuration Release for project BIG_NUM ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
../main.c: In function 'big_num_str':
../main.c:77: warning: array subscript has type 'char'
../main.c:79: warning: array subscript has type 'char'
Finished building: ../main.c
 
Building target: BIG_NUM.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,BIG_NUM.map -mmcu=atmega8 -o "BIG_NUM.elf"  ./LCD/lcd44780.o  ./main.o   
Finished building target: BIG_NUM.elf
 
Invoking: AVR Create Extended Listing
avr-objdump -h -S BIG_NUM.elf  >"BIG_NUM.lss"
Finished building: BIG_NUM.lss
 
Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex BIG_NUM.elf  "BIG_NUM.hex"
Finished building: BIG_NUM.hex
 
Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex BIG_NUM.elf  "BIG_NUM.eep"
Finished building: BIG_NUM.eep
 
Invoking: Print Size
avr-size --format=avr --mcu=atmega8 BIG_NUM.elf
AVR Memory Usage
----------------
Device: atmega8

Program:    1168 bytes (14.3% Full)
(.text + .data + .bootloader)

Data:         94 bytes (9.2% Full)
(.data + .bss + .noinit)


Finished building: sizedummy
 

**** Build Finished ****


warningi wskazują na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


po wgraniu wyświetla "0" górny znak na y2 x0
powinno być 100 zaczynające sie na y0 x0
Ma ktoś jakiś pomysł?

Czy argumenty funkcji mogą zmieniać swoją wartość w jej wnętrzu ?
chodzi mi o x i y

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 16:17 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

1bobik1 napisał(a):
Wstyd....

nie zmieniłem deklaracji na początku programu
było tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


No właśnie - a czytałeś co napisałem wyżej ? ;)

mirekk36 napisał(a):
A jesteś pewien że masz taką samą deklarację i definicję tej funkcji?


------------------------ [ Dodano po: 2 minutach ]

1bobik1 napisał(a):
Czy argumenty funkcji mogą zmieniać swoją wartość w jej wnętrzu ?
chodzi mi o x i y


Oj, oj chyba ktoś tu nie doczytał w książce o funkcjach i jak są do nich przekazywane argumenty (przez stos) .... więc wewnątrz funkcji ZAWSZE masz dostępne do swobodnego działania ich kopie - więc możesz z nimi postępować na zasadzie "róbta co chceta" ..... i tak po wyjściu z funkcji polecą w kosmos ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 16:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Więc powinno działać jak należy a nie działa.

Co oznaczają te warningi ?

"Oj, oj chyba ktoś tu nie doczytał w książce o funkcjach"

doczytał, doczytał, ale zapamiętać i zrozumieć to co innego ;) praktyki potrzebuję....

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 16:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

jasne - więc praktykujemy ;)

co to za warningi ?

Cytuj:
./main.c:77: warning: array subscript has type 'char'


ano takie, że spójrz pan sobie na definicję funkcji lcd_char( char c );

widzisz jakiego typu do funkcji ma być przekazany argument ? char - prawda ? a ty jakiego typu argument przekazujesz ? no przecież tablica ma elementy typu uint8_t ;) więc masz niezgodność typów tzn warninga. To nie jest akurat błędem ale na wszelki wypadek końpilator cię ostrzega. Warto jednak się pozbyć takich warningów - pokazując końpilatorowi że ty wiesz co robisz - i przygotować jawne rzutowanie typu o tak:

Cytuj:
lcd_char( (char) znak[numer][0] );


rozumiesz ? funkcja się spodziewa typu char, ty jej podajesz do zjedzenia uint8_t, więc żeby się nie zakrztusiła to połóż na wierzch plasterek dobrej kiełbasy w postaci jawnego rzutowania (char) .... wtedy nawet się nie zająknie ;)

------------------------ [ Dodano po: 1 minucie ]

A co do tego czy twoja funkcja działa czy nie działa - to całkiem inna sprawa - gdzieś masz babola - ale ja na razie nie mam czasu na analizę kodu - sam popróbuj na razie dokąd może jeszcze ktoś nie zerknie okiem

------------------------ [ Dodano po: 3 minutach ]

aha no i po co ci ten

volatile przed tablicą ???? hmmmmmm? zdejmij go ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 20:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Dziękuję pięknie za to artystyczne przedstawienie przekazywania argumentów ;)
Niestety po dodaniu rzutowania jawnego nic się nie zmieniło, te same warningi wyskakują

a jednak coś się zmieniło, po wgraniu programu wyświetla we wskazanym miejscu pare znaków niestety nie tych które powinien.

volatile zdjęte :oops:

Wracam do kombinowania (szczęśliwie się toto kompiluje ;) )

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lis 2012, o 20:37 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

ale ma się kompilować bez warningów. Jak masz dodatkowe pytania i coś poprawiałeś to zawsze wklejaj poprawiony kod a nie opiszesz że coś zrobiłeś ale dalej warningi - bo tak to mniej więcej jakby przez telefon grać w chińczyka ;) albo bierki ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2012, o 00:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Ok teraz opiszę wszystko najdokładniej jak potrafię.

Na początek kod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wynik kompilacji:

Obrazek

info z konsoli:
Kod:
**** Budowanie of configuration Release for project BIG_NUM ****

make all
Building file: ../main.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=1000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
../main.c: In function 'big_num_str':
../main.c:146: warning: array subscript has type 'char'
../main.c:148: warning: array subscript has type 'char'
Finished building: ../main.c
 
Building target: BIG_NUM.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,BIG_NUM.map -mmcu=atmega8 -o "BIG_NUM.elf"  ./LCD/lcd44780.o  ./main.o   
Finished building target: BIG_NUM.elf
 
Invoking: AVR Create Extended Listing
avr-objdump -h -S BIG_NUM.elf  >"BIG_NUM.lss"
Finished building: BIG_NUM.lss
 
Create Flash image (ihex format)
avr-objcopy -R .eeprom -O ihex BIG_NUM.elf  "BIG_NUM.hex"
Finished building: BIG_NUM.hex
 
Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex BIG_NUM.elf  "BIG_NUM.eep"
Finished building: BIG_NUM.eep
 
Invoking: Print Size
avr-size --format=avr --mcu=atmega8 BIG_NUM.elf
AVR Memory Usage
----------------
Device: atmega8

Program:    1418 bytes (17.3% Full)
(.text + .data + .bootloader)

Data:         94 bytes (9.2% Full)
(.data + .bss + .noinit)


Finished building: sizedummy
 

**** Build Finished ****


teraz opiszę co widzimy na wyświetlaczu
1- kolumna 0, 1 wiersz 0, 1, 2 to wynik wywołania funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

2- kolumna 0 wiersz 5-12 to znaki własne (składowe tych z dołu)
3- kolumny 2-3 wiersze 0-9 wpisywane "z ręki" bez użycia funkcji "big_num_str()"
kod ostatnich 2 liczb:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

dla cyfry 9 znaki składowe pobierane z tablicy (by pokazać że działa ;) )

Tablica:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przechowuje informacje o składowych każdej z cyfr
znak[0][0]; to górny znak cyfry 0
znak[0][1]; to dolny znak cyfry 0

teraz nieszczęsna funkcja, na początek kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i objaśnienia:
1-argumenty funkcji
pierwszy argument to wskaźnik do string(u/a)(ciągu znaków) y to numer wiersza (od 0 do 3) x numer kolumny (od 0 do 19)
y i x wskazują miejsce dla górnego znaku pierwszej cyfry z ciągu znaków

2- warunek if(y<=2) jeśli y będzie większe niż 2 program wyświetli "error"
3-
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

kod zapożyczony z funkcji lcd_str();
nie będę go objaśniał, bo sam tylko wyobrażam sobie jego działanie ;)
4-dalej jest wypisywanie górnego potem dolnego znaku każdej cyfry z ciągu. (a przynajmniej chciałbym by tak było ;) )

Mam nadzieję że teraz dobrze to wyjaśniłem :)

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2012, o 00:55 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

ok - ale ja na razie pomagam ci tylko w usunięciu warningów

z jakiej paczki dałeś typ zmiennej numer jako char ????

Kod:
register char numer;


toż to ma być zmienna w której będziesz przechowywał liczby i to liczby bez znaku prawda ?

sprawdź więc czy będą warningi gdy dasz zamiast tego uint8_t ;) i na drugi raz pamiętaj o prawidłowym dobieraniu typów ok ?

------------------------ [ Dodano po: 3 minutach ]

nawet wtedy to rzutowanie typu (char) nie będzie potrzebne - bo kompilatorowi uda się zrobić rzutowanie niejawne uint8_t na char, więc będziesz mógł pisać tak:

Kod:
lcd_char( znak[numer][0] );

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2012, o 02:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Po zmianie rzeczywiście nie ma warningów
ale na wyświetlaczu to samo

Jeśli zmienna "numer" ma być typu uint8_t to czy wskaźnik "str" też nie powinien wskazywać na zmienną typu uint8_t ?

Po zmianie typu wskaźnika "str" na uint8_t przy kompilacji wywala warning:
Kod:
../main.c: In function 'main':
../main.c:126: warning: pointer targets in passing argument 1 of 'big_num_str' differ in signedness
Finished building: ../main.c

wskazuje on na linię:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na wyświetlaczu ciągle to samo

po zmianie na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zmiana na wyświetlaczu, teraz są krzeczki tylko w kolumnie 0 i wierszu 0 i 1 (inne krzaczki)

Ja na razie spasuję w wymyślaniu kolejnych głupot....

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lis 2012, o 06:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

Jak zmienn str która jest łańcuchem tekstowym może być typu uint8_t ????????????

Posłuchaj, jak czegoś nie rozumisz z tego co podpowiadam co działa jak widzisz to dopytuj śmiało a ni dalej strzelasz tak po prostu icoś tam zgadujesz :(

przecież zmienna numer jest używana jako tylko jako indeks tablicy, a nie znak ascii

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 13:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

ostatnie pytanie
jak liczbę typu uint8_t 1, 2, 3, 4-cyfrową rozłożyć na cyfry składające się na tę liczbę
najlepiej w funkcji ?

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 15:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

Pewnie, że w funkcji. Zajrzyj sobie do książki np do rozdziało o multipleksowaniu LED tam w pętli głównej masz rozbijanie licznika na pojedyncze cyfry żeby wyświetlić każdą oddzielnie na jednym wyświetlaczu LED

Zajrzyj sobie do przykładów o ADC albo o temperaturze 1wire - tam też masz przykłady

Robisz sobie funkcję i w niej dzielisz panie ;)

jak masz np liczbę 147

to jak ją najpierw podzielisz przez 100 to otrzymasz liczbę setek
jak później pomniejszysz ją o tą liczbę setek czyli (147-100) i podzielisz przez 10 to otrzymasz liczbę dziesiątek
a na końcu zostaną ci jedności

najprostsze matematyczne działanie a szybkie i skuteczne

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 20:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lip 2012
Posty: 203
Lokalizacja: Sosnowiec
Pomógł: 2

Mirku dziękuję za ciepliwość i poświęcony czas.
Udało się !

teraz moja funkcja wygląda tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


może nie jest zgrabna i ładna ale działa :)

_________________
sig on ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 21:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

To jednak podpowiem ci żebyś jednak zajrzał dalej - do ADC tam są jeszcze lepsze sposoby i ładniejsze/zgrabniejsze - zdecydowanie. W tym przykładzie - pokazałem to w ten sposób - aby po prostu każdy zrozumiał o co w ogóle chodzi, i cieszę się - że się udało tak w ogóle ;) ... teraz możesz spokojnie popracować dalej nad kosmetyką kodu.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO