Eposas Napisano Marzec 19, 2020 Udostępnij Napisano Marzec 19, 2020 Witam, mam problem z modułami BT HC05, chcę zrobic dwa urządzenia typu master i slave z mastera będę przesyłał znak + (kod ascii to chyba 43) ten drugi odbierze ten znak i zmieni stan diody. Proste urządzenie zeby poduczyc się w tym zakresie. Oczywiście juz na starcie mam sporo problemów jednym z nich jest tak jakby brak komuniakcji między modułami. Znaczy niby dioda za parowanie jest załączona albo jak połacze się laptopem i przez termianl wysle to mi odbeirze i zmieni stan diody. Przesyłam kod bilioteki z Bluebooka M. Kardasia Master char bufor[100]; // bufor roboczy #define LED_TOG PORTC ^= LED_PIN #define LED_PIN (1<<PC0) #define BUZ (1<<PB0) #define BUZ_PORT PORTB #define BUZ_DIR DDRB #define BUZ_OFF BUZ_PORT &= ~BUZ #define BUZ_ON BUZ_PORT |= BUZ #define BEEP BUZ_ON; _delay_ms(5); BUZ_OFF char znak; int main( void ){ DDRA |= (1<<PA7); // ustawiamy kierunek linii podświetlenia LCD jako WYJŚCIE PORTA |= (1<<PA7); // załączamy podświetlenie LCD - stan wysoki // inicjalizacja buzzera BUZ_DIR |= BUZ; BUZ_OFF; DDRC |= LED_PIN; // kierunek pinu PC7 – wyjściowy PORTC |= LED_PIN; // wyłączenie diody LED suart_init(); lcd_init(); lcd_str( "HC_05 MASTER" ); while (1){ // if (klawisz_wcisniety()) { suart_puts( "49" ); LED_TOG; // BEEP; _delay_ms(1000); } // odsyłamy z powrotem do terminala cały odebrany string suart_puts( bufor ); suart_puts( "\r\n" ); lcd_cls(); // wyświetlamy na ekranie LCD odebrany string z terminala lcd_str( bufor ); } i Slave #include "SoftUART/soft_uart.h" char bufor[100]; // bufor roboczy #define LED1_TOG PORTC ^= LED1_PIN #define LED1_PIN (1<<PC0) int main( void ) { DDRA |= (1<<PA7); // ustawiamy kierunek linii podświetlenia LCD jako WYJŚCIE PORTA |= (1<<PA7); // załączamy podświetlenie LCD - stan wysoki // inicjalizacja soft uart'a suart_init(); DDRC |= LED1_PIN; PORTC|= LED1_PIN; lcd_init(); lcd_str( "slave" ); char znak; while ( 1 ) { // odbieramy string z terminala (funkcja blokująca) suart_gets( bufor, sizeof( bufor ) ); znak = sgetchar(); if( znak == 43) LED1_TOG; // odsyłamy z powrotem do terminala cały odebrany string suart_puts( bufor ); suart_puts( "\r\n" ); lcd_cls(); // wyświetlamy na ekranie LCD odebrany string z terminala lcd_str( bufor ); } } Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!