Sun Feb 01, 2015 4:36 am
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
#define TX A4 // DA
#define RX A5 // CK
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(RX, TX);
extern const byte font5x7[];
void setup(){
gb.begin();
gb.display.setFont(font5x7);
bluetooth.begin(9600);
pinMode(RX, INPUT);
pinMode(TX, OUTPUT);
}
void loop(){
if(gb.update()){
gb.display.println(F("Commands:"));
gb.display.print(F(" \25 Play/pause"));
gb.display.println(F(" \26 Stop"));
gb.display.println(F(" \27 Mute"));
gb.display.println(F(" \36\37 Volume +-"));
gb.display.println(F(" \21\20 Prev/next"));
if (gb.buttons.pressed(BTN_A))
bluetooth.print("A");
if (gb.buttons.pressed(BTN_B))
bluetooth.print("B");
if (gb.buttons.pressed(BTN_C))
bluetooth.print("C");
if (gb.buttons.pressed(BTN_LEFT))
bluetooth.print("<");
if (gb.buttons.pressed(BTN_RIGHT))
bluetooth.print(">");
if (gb.buttons.pressed(BTN_UP) || gb.buttons.held(BTN_UP, 1))
bluetooth.print("^");
if (gb.buttons.pressed(BTN_DOWN) || gb.buttons.held(BTN_DOWN, 1))
bluetooth.print("v");
}
}
using InTheHand.Net;
using InTheHand.Net.Sockets;
using System;
using System.Linq;
using System.Runtime.InteropServices;
namespace BluetoothTest
{
class Program
{
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
const int VK_PLAY = 0xFA;
const int VK_MEDIA_STOP = 0xB2;
const int VK_VOLUME_MUTE = 0xAD;
const int VK_MEDIA_NEXT_TRACK = 0xB0;
const int VK_MEDIA_PLAY_PAUSE = 0xB3;
const int VK_MEDIA_PREV_TRACK = 0xB1;
const int VK_VOLUME_DOWN = 0xAE;
const int VK_VOLUME_UP = 0xAF;
const int MediaNext = 11;
const int MediaPrevious = 12;
static void Main(string[] args)
{
try
{
Console.WriteLine("Searching for HC-05...");
var cli = new BluetoothClient();
var device = cli.DiscoverDevices().FirstOrDefault(p => p.DeviceName=="HC-05");
if (device==null)
throw new Exception("Device not found!");
Console.WriteLine("Device found! Trying to connect...");
try {cli.Connect(new BluetoothEndPoint(device.DeviceAddress, device.InstalledServices.First()));}
catch (Exception e) {throw new Exception("Couldn't connect: " + e.Message);}
try
{
Console.WriteLine("Connected! Press any key to stop service.");
var stream = cli.GetStream();
while (stream.DataAvailable)
stream.ReadByte(); // flush pending data
while (true)
{
if (Console.KeyAvailable && Console.ReadKey(true).Key==ConsoleKey.Escape)
break;
if (stream.DataAvailable)
{
var b = (char)stream.ReadByte();
switch (b)
{
// play/pause
case 'A':
keybd_event(VK_MEDIA_PLAY_PAUSE, 0x45, 0, 0);
keybd_event(VK_MEDIA_PLAY_PAUSE, 0x45, KEYEVENTF_KEYUP, 0);
break;
// stop
case 'B':
keybd_event(VK_MEDIA_STOP, 0x45, 0, 0);
keybd_event(VK_MEDIA_STOP, 0x45, KEYEVENTF_KEYUP, 0);
break;
// mute
case 'C':
keybd_event(VK_VOLUME_MUTE, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_MUTE, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
break;
// prev track
case '<':
keybd_event(VK_MEDIA_PREV_TRACK, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_MEDIA_PREV_TRACK, 0x45, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);
break;
// next track
case '>':
keybd_event(VK_MEDIA_NEXT_TRACK, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_MEDIA_NEXT_TRACK, 0x45, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);
break;
// volume up
case '^':
keybd_event(VK_VOLUME_UP, 0x45, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_UP, 0x45, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);
break;
// volume down
case 'v':
keybd_event(VK_VOLUME_DOWN, 0x45, 0, 0);
keybd_event(VK_VOLUME_DOWN, 0x45, KEYEVENTF_KEYUP, 0);
break;
}
}
}
}
finally
{
if (cli.Connected)
cli.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
Sun Feb 01, 2015 5:17 am
Sun Feb 01, 2015 4:38 pm
Sun Feb 01, 2015 11:42 pm
Mon Feb 02, 2015 12:05 am
Mon Feb 02, 2015 6:43 am
Jolly wrote:But then I noticed, that I have the HC-06, which only works as slave...
Mon Feb 02, 2015 9:19 pm
Tue Feb 03, 2015 3:02 am
Jolly wrote:Can I directly connect the HC-05 to one another one or do I still need a PC in between?
Tue Feb 10, 2015 11:33 pm
#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;
#define TX A5 // DA
#define RX A4 // CK
#define TEXT_LENGTH 13
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(RX, TX);
extern const byte font5x7[];
char text[TEXT_LENGTH];
bool sendText = false;
String received_text = "";
void setup()
{
gb.begin();
gb.display.setFont(font5x7);
bluetooth.begin(9600);
pinMode(RX, INPUT);
pinMode(TX, OUTPUT);
}
void loop()
{
if(gb.update())
{
if(gb.buttons.pressed(BTN_B))
{
for(byte i=0; i < TEXT_LENGTH; i++)
{
text[i] = ' ';
}
gb.keyboard(text, TEXT_LENGTH);
sendText = true;
}
// make sure the last char is a terminating 0
text[TEXT_LENGTH-1] = '\0';
gb.display.println(F("You wrote:"));
gb.display.println(text);
gb.display.println();
if(sendText)
{
byte i=0;
while(text[i] != '\0') i++;
bluetooth.write(text, i);
sendText = false;
}
while (bluetooth.available() > 0)
{
received_text = bluetooth.readStringUntil('\0');
}
gb.display.println("You received:");
gb.display.println(received_text);
}
}
Fri Feb 13, 2015 6:48 am