Archive for February, 2010

Stepping forward with Arduino Bluetooth communication

Sunday, February 7th, 2010

The video shows that changing the display state can either be done locally (by pushing a button) or by receiving data via the Bluetooth RFCOMM link. On a state change data is also transmitted via this link. For the Arduino this is done by just using the serial port.

See the Arduino code below:

#include <S65Display.h>

S65Display lcd;
int state=0;

const int button1_pin=2;
const int button2_pin=3;

void drawText_0(void)
{
  lcd.drawTextPGM(30, 50, PSTR("State 0"), 2, RGB(0, 0, 255), RGB(255, 255, 255));
}

void drawText_1(void)
{
  lcd.drawTextPGM(30, 50, PSTR("State 1"), 2, RGB(0, 0, 255), RGB(255, 255, 255));
}

void setup()
{
  state=0;
  //init LCD
  lcd.init(4); //spi-clk = Fcpu/4

  //clear screen
  lcd.clear(RGB(255, 255, 255));

  drawText_0();
  pinMode(button1_pin, INPUT);
  pinMode(button2_pin, INPUT);
  Serial.begin(9600);
}

void loop()
{
  static byte recvd_byte=' ';

  if (Serial.available() > 0)
  {
    recvd_byte=Serial.read();
  }

  if ((state == 0) && ((digitalRead(button2_pin) == LOW) || (recvd_byte=='1')))
  {
    state=1;
    drawText_1();
    Serial.println("State 1");
    recvd_byte=' ';
  }
  if ((state == 1) && ((digitalRead(button1_pin) == LOW) || (recvd_byte=='0')))
  {
    state=0;
    drawText_0();
    Serial.println("State 0");
    recvd_byte=' ';
  }
}