Forum: Mikrocontroller und Digitale Elektronik BTM222 Modul mit Pic verbinden LEDs ansteuern


von Kay S. (rico2002)


Lesenswert?

Hallo bräuchte mal eure Hilfe,

ich habe vor eine App zu programmieren (Android) mit der ich über ein 
Bluetoothmodul (BTM222) und einen PIC18F LEDs ein und ausschalten kann 
und auch dimmen.Das ganze soll so einfach wie möglich sein.

Hardware habe ich so weit aufgebaut jetzt geht es an das 
programmieren.Da bin ich leider nicht so gut drin. Habe das BTM222 mit 
dem PIC über RX und TX verbunden. Beides hängt an 3,3 V 
Versorgungsspannung.H

Hat mir jemand ein paar Tipps und Tricks wie ich das ganze nun 
programmieren soll?

Ich arbeite mit MPLAP und dem C compiler.

Würde mich über eure Hilfe sehr freuen.
Gruß

von Max H. (hartl192)


Lesenswert?

Kay S. schrieb:
> Hat mir jemand ein paar Tipps und Tricks wie ich das ganze nun
> programmieren soll?

Nur EIN/AUS:
Wenn es <=8 LEDs sind würde ich einfach ein Byte senden und dieses dann 
ausgeben. Die main würde in etwas so aussehen:
1
SetLedPinsAsOutput();
2
InitUart();
3
while(1)
4
{
5
  if(UartDataAvailable)
6
    PORTx=ReadUart();
7
}
Die UART Funktionen kannst du dir selber schreiben oder im Handbuch zum 
Compiler nachschlagen ob und welche es gibt und wie sie angewandt 
werden.

Dimmen:
Für z.B. 8bit würde ich die Helligkeit als Hexadezimalwert in ASCII 
Kodiert versenden. Das ganze würde ich mit einem \0 am Ende der 
Zeichenkette synchronisieren. Dann könnte die main in etwa so aussehen 
(8 LEDs):
1
char LEDdata[17];
2
char* wPtr
3
SetLedPinsAsOutput();
4
InitUart();
5
wPtr=LEDdata;
6
while(1)
7
{
8
  if(UartDataAvailable)
9
  {
10
    *wPtr=ReadUart();
11
    if(*(wPtr++)=='\0')
12
    {
13
      LEDout(LEDdata);
14
      wPtr=LEDdata;      
15
    }
16
  }
17
}

Zur App:
Wenn es nur was Einfaches werden soll würde ich die Android-App mit dem 
MIT App Inventor 2 machen.

> Ich arbeite mit MPLAP und dem C Compiler.
Welchem C Compiler, alleine von Microchip gibt es zwei.

: Bearbeitet durch User
von Kay S. (rico2002)


Lesenswert?

Hi Max

vielen Dank schon einmal.

verstehe ich das so richtig?

Auf den microcontroller muss ich nur die UART schnittstelle 
programmieren?

Und den rest dann mit der App z.B. wenn ich den Button drücke geht die 
LED an ?

Ich habe 3 LEDs zum ein und ausschalten und

eine zum Dimmen wenn man auf dem Button drauf bleibt wird sie dunkler 
und auch wieder heller.

Ich würde die App mit eclipse schreiben da kenne ich mich ein bisschen 
aus.

Gibt es von microchip schon fertige programmierte uart codes?

gruß danke für eure hilfe

von Max H. (hartl192)


Lesenswert?

Kay S. schrieb:
> Auf den microcontroller muss ich nur die UART schnittstelle
> programmieren?
Abgesehen von der Initialisierung und dem Dimmen/Schalten der LEDs ja. 
Das BT-Modul arbeitet mit dem SPP Profil. Sobald das Handy und das 
BT-Modul verbunden sind gibt es die Daten 1:1 als UART aus.

> Und den rest dann mit der App z.B. wenn ich den Button drücke geht die
> LED an ?
Die App sendet einen Befehl/Daten, der µC empfangt diese mit dem UART, 
wertet sie aus und steuert die LEDs entsprechen.

> eine zum Dimmen wenn man auf dem Button drauf bleibt wird sie dunkler
> und auch wieder heller.
Diese LED würde ich an einen CCPx Ausgang anschließen, dann kannst du 
das Hardware PWM Modul verwenden.

> Gibt es von microchip schon fertige programmierte uart codes?
Der XC8 und der C18 haben einen UART-Lib dabei, Beispiele zur Anwendung 
findet man im Handbuch des entsprechenden Compilers.

BTW: Hast du dir schon eine bestimmten PIC ausgesucht?

: Bearbeitet durch User
von Develop_t (Gast)


Lesenswert?

Hi, arebit selbst viel mit pic conzrollern. Schreibe zear asm aber es 
gibt eine fertige uart lib im folgrnden ordner /plib/usart.h

Wenn du sie in mplab per #include einfügst kannst du mit ctrl (strg) + 
links klick öffen. Dort siehst du dann den code und auch eine 
beschreibung der functionen.

!!! Vergiss nicht die baudrate beim microcontroller einzustellen. Die 
angaben dafür welchen wert bei welchem takt du eintragen musst stehen im 
datenblatt.

Tipp am rande. Meine erfahrung hat ergeben wenn du in C programmieren 
willst nutz einen pic 18 die haben mehr speicher und für c gut. Pic 16 
kannst du probleme bekommen. Den der compiler baut oft ziemlich 
komischen code.

Mfg

von Kay S. (rico2002)


Lesenswert?

Hi

ich habe einen PIC 18F252 und habe die dimmbare LED an den CCP1
Ausgang gehängt die anderen 3 Hängen an RB0 bis RB2.

Nun will ich es erst mal ohne BT Modul versuchen ob dies so funktioniert 
wie ich das will.

Ich habe ein Pickit 2 dies schließe ich an den controller an und los 
geht es brauche ich noch irgend eine externe Spannungsversorgung oder 
kann ich die Ausgänge so ansteuern???

Kann mir vieleicht jemand einen code schreiben wie ich die LEDs 
ansteuere?


Vielen Dank

Gruss

von Max H. (hartl192)


Lesenswert?

Kay S. schrieb:
> Ich habe ein Pickit 2 dies schließe ich an den controller an und los
> geht es brauche ich noch irgend eine externe Spannungsversorgung oder
> kann ich die Ausgänge so ansteuern???
Beim PIKkit3 kann man den PIC mit dem Pk3 versorgen, muss es aber erst 
aktivieren. Wie es beim Pk2 war weiß ich nicht mehr.


> Kann mir vieleicht jemand einen code schreiben wie ich die LEDs
> ansteuere?
1
  //LED Pins als Ausgange
2
  TRISB|=0x07;
3
4
  //Ein-/Ausschalten:
5
6
  //LED 1 ein
7
  LATBbits.LATB0=1;
8
  //LED 1 aus
9
  LATBbits.LATB0=0;
10
11
  //LED 2 ein
12
  LATBbits.LATB1=1;
13
  //LED 2 aus
14
  LATBbits.LATB1=0;
15
16
  //LED 3 ein
17
  LATBbits.LATB2=1;
18
  //LED 3 aus
19
  LATBbits.LATB2=0;

Für die Init des PWM Moduls müsste man in Datenblatt (Kapitel 14 ab 
S.119) nachsehen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.