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.

  • 1 miesiąc później...
  • 4 miesiące później...

Czy ktoś wie skąd można wziąć taką przejściówkę z pionową kreską jak na obrazku?

IMG_5249ddb285d30812.jpg

Bez niej nie da się połączyć z btm.

  • 1 miesiąc później...

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

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.

AD.3, wartości z suwaka nie da się przesłać przez bt bezpośrednio, wyskakuje błąd, że wartość nie mieści się w bajcie.

  • 2 miesiące później...

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...