Skocz do zawartości

Atmega32 i moduł BT HC05


Pomocna odpowiedź

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 );

    	    }
    	}

 

Link to post
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.