Skocz do zawartości

[Kurs] Tworzenie własnej aplikacji Android do sterowania przez Bluetooth Cz. 3


Pomocna odpowiedź

Niestety nie wiem 🙁 Sam posiadam tylko tego HTC z androidem 2.3 i nie zagłębiałem się w temat, no i zresztą nie miałem takiej potrzeby, ani możliwości. Jak dojdziesz o co chodzi i jak rozwiązać problem z przyjemnością uzupełnię kurs, dodając oczywiści Twój nick, bo jeśli na androidzie 4 nie działa, to jest to spory problem.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witam. Przede wszystkim dziękuję za tutorial, bo bez niego było by ciężko ruszyć...

Mam kilka pytań:

- czy można stworzyć aplikację tak, żeby z automatu łączyła się z konkretnym urządzeniem (po nazwie lub po MAC)?

- czy można jakoś zmienić PIN w module? - 1234 jest za bardzo standardowy

- czy mógłbym prosić o pomoc w skonfigurowaniu suwaka?

suwak miałby odpowiadać za jasność diody, w arduino mam zmienną i, która odpowiada za jasność, nie wiem jak się za to zabrać, czy suwak miałby wysyłać liczbę, czy może już wysyłać gotową wartość zmiennej

pozdrawiam

Z góry dzięki

Link do komentarza
Share on other sites

1. Można. W przykładzie łączy się po naciśnięciu guzika. dając to do bloku screen1.initialize zrobi to przy starcie

2. Pin w module to raczej zmienia się podłączając do modułu a nie zdalnie.

3. Jaki masz problem?? wysyłasz przez BT wartość suwaka.

Link do komentarza
Share on other sites

Witam. Jestem początkujący w programowaniu mikroprocesorów. Chciałbym korzystając z tego kursu, na początek móc zapalać diody przez bluetooth. Wykonałem program na telefon, taki jak w przykładzie dla start/stop w robocie, z tą różnicą, że dla przycisku button 1 - włącz diodę wysyłam numer 1, zaś dla button 2 - wyłącz diodę wysyłam 0. Nie wiem jak napisać program na uC. Próbowałem korzystać z przykładowego programu ze strony: mikrokontrolery.blogspot

Przerobiłem go następujaco:

#include <avr\io.h>  
#include <stdio.h>  
#include <avr/interrupt.h>  
#include <util/delay.h>  

//zmienne dot. odbioru danych  
volatile unsigned char odb_x;       //odebrana liczba X  
volatile unsigned char odb_flaga =0;//flaga informująca main o odebraniu liczby  

void usart_inicjuj(void)  
{  
//definiowanie parametrów transmisji za pomocą makr zawartych w pliku  
//nagłówkowym setbaud.h. Jeżeli wybierzesz prędkość, która nie będzie   
//możliwa do realizacji otrzymasz ostrzeżenie:   
//#warning "Baud rate achieved is higher than allowed"  

#define BAUD 19200        //tutaj podaj żądaną prędkość transmisji  
#include <util/setbaud.h> //linkowanie tego pliku musi być   
                          //po zdefiniowaniu BAUD  

//ustaw obliczone przez makro wartości  
UBRRH = UBRRH_VALUE;    
UBRRL = UBRRL_VALUE;  
#if USE_2X  
UCSRA |=  (1<<U2X);  
#else  
UCSRA &= ~(1<<U2X);  
#endif  


//Ustawiamy pozostałe parametry moduł USART  
//U W A G A !!!  
//W ATmega8, aby zapisać do rejestru UCSRC należy ustawiać bit URSEL  
//zobacz także: http://mikrokontrolery.blogspot.com/2011/04/avr-czyhajace-pulapki.html#avr_pulapka_2   
UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);  //bitów danych: 8  
												//bity stopu:  1  
												//parzystość:  brak  
//włącz nadajnik i odbiornik oraz ich przerwania odbiornika  
//przerwania nadajnika włączamy w funkcji wyslij_wynik()  
UCSRB = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE);   
}  

ISR(USART_RXC_vect)  
{  
//przerwanie generowane po odebraniu bajtu  
odb_x = UDR;   //zapamiętaj odebraną liczbę  
odb_flaga = 1; //ustaw flagę odbioru liczby dla main()  
}  

int main(void)  
{  
usart_inicjuj(); //inicjuj moduł USART (RS-232)  
sei();           //włącz przerwania globalne  

DDRC=0xff;

while(1)
{  

	if(odb_x==0x00){PORTC=0x00;}
	if(odb_x==0x01){PORTC=0xff;}

	//czekamy na informację o odebraniu danej nie blokując mikrokontrolera  
	if(odb_flaga)
	{  

		odb_flaga = 0; //zgaś flagę  
	}
}
}

Podsumowując, usunąłem części programu dotyczące nadawania, zmieniłem prędkość BAUD na 19200 i wpisałem w pętli głównej 2 warunki dotyczące diody. Program nie działa, nie mam pojęcia dlaczego. Mógłby ktoś mnie nakierować, jakie błędy popełniłem, bądź też podać linki do jakiś sprawdzonych programów lub opracowań na ten temat? Próbowałem też korzystać z dokumentacji Atmegi 8 (str. 135 i 139 - program bez przerwań gdzie obie opisane funkcje wywoływałem w funkcji głównej programu (tak jak na str. 135 tyle że dodatkowo w pętli dodałem USART_Receive()😉. Mógłby ktoś pomóc? Korzystam z Atmegi8.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.