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ß
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.