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



Teraz jest 27 sty 2025, o 15:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 15 gru 2014, o 21:15 
Offline
Nowy

Dołączył(a): 16 paź 2014
Posty: 17
Pomógł: 0

Witam, przesyłam sobie informacje pomiędzy parą RFM12. Chciałbym aby jeden wysyłał do drugiego informacje o tym iż ma załączyć dana diodę. I tu pojawia sie problem, gdyż nie wiem jak tego dokonać.

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


Lecz nic z tego nie wychodzi, dioda się nie zapala :(
Jak to naprawić?

btw ta 1 na wyświetlaczu LCD sie wyświetla.

Z góry dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 21:27 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

DkrukD napisał(a):
test[16]=0;
...
if(test == "1"){


W języku C to nigdy nie zadziała. Dlaczego? Ano dlatego, że w ten sposób testujesz czy adresy tablicy test i stałej łańcuchowej "1" są równe. Oczywiście nie są. Żeby porównać zawartość zmiennej łańcuchowej z inną stałą czy zmienną łańcuchową używa się funkcji strcmp i pochodnych


Autor postu otrzymał pochwałę

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 21:41 
Offline
Nowy

Dołączył(a): 16 paź 2014
Posty: 17
Pomógł: 0

Czyli należy zrobić to tak:

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


Faktycznie działa, ale czy to jest poprawne rozwiązanie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2014, o 11:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 maja 2013
Posty: 432
Lokalizacja: Gostyń / Poznań
Pomógł: 25

pewnie można jeszcze tak:


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


albo

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


Hehe albo cos tam jeszcze by się dało wymyśleć ;) Ale jak wysyłasz tylko cyferke... bo jak literki cyferki i wianuszki to już tylko funkcje do porównywania stringów jak koledzy podali ;)


Autor postu otrzymał pochwałę

_________________
Podpis...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2014, o 13:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

W jakiej czestotliwosci wysylasz te 1?

Wg mnie toglowanie odbywa sie tak szybko ze tego nie widac.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2014, o 22:33 
Offline
Nowy

Dołączył(a): 16 paź 2014
Posty: 17
Pomógł: 0

Częstotliwość hmm nie wiem dokładnie o co Ci chodzi ale jeśli chodzi o wysyłanie to z prędkością 9600 bodów a uC jest ustawiony na 8000000 Hz.

A jak najlepiej to zrobić jeśli chce kilka sygnałów odbierać i te sygnały mają sterować silnikami (wł/wył) ?

Załóżmy aby uruchomić 1 silnik nadajnik nadaje "011" a aby wyłączy 010. I tak analogicznie do drugiego włącz 021 wył 020 i itd. A teraz co zrobić jeśli pakiet z kodem do wyłączenia nie dojdzie i silnik będzie się ciągle kręcił, jak ma postąpić uC aby go wyłączyć?


if((test[0]-48) == 1){ - co oznacza to 48 ?

Z góry dzięki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2014, o 22:39 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

DkrukD napisał(a):
co oznacza to 48 ?
`

jest to znak '0' w kodzie ASCII



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 gru 2014, o 23:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

DkrukD napisał(a):
Załóżmy aby uruchomić 1 silnik nadajnik nadaje "011" a aby wyłączy 010. I tak analogicznie do drugiego włącz 021 wył 020 i itd. A teraz co zrobić jeśli pakiet z kodem do wyłączenia nie dojdzie i silnik będzie się ciągle kręcił, jak ma postąpić uC aby go wyłączyć
Z góry dzięki :)

Do protokołu transmisji dodaj potwierdzenia. Urządzenie do którego wysyłasz komunikat start albo stop powinno wysłać informacje zwrotną o komunikacie który odebrało. Jeżeli zgadza się z nadanym to wysyłasz ok ale jeżeli okaże się, że nie to nadać trzeba jeszcze raz rozkaz stop albo start. Może się zdarzyć że na stałe utracimy połączenie. Można się przed skutkami takiego zdarzenia zabezpieczyć dodając kod który sprawdza poprawność transmisji cały czas i wyłącza urządzenie w przypadku jej braku lub złego funkcjonowania (np. kilkanaście nieprawidłowych potwierdzeń, brak przychodzących ramek kontrolnych w określony czasie). Tak by było najprościej.



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO