Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Full technical documentation available now

Received: by 10.58.170.6 with SMTP id ai6mr4741397vec.35.1352636253539;
        Sun, 11 Nov 2012 04:17:33 -0800 (PST)
X-BeenThere: amarino-toolkit@googlegroups.com
Received: by 10.220.107.208 with SMTP id c16ls6448618vcp.3.gmail; Sun, 11 Nov
 2012 04:17:32 -0800 (PST)
Received: by 10.52.97.101 with SMTP id dz5mr3155984vdb.2.1352636252020;
        Sun, 11 Nov 2012 04:17:32 -0800 (PST)
Date: Sun, 11 Nov 2012 04:17:31 -0800 (PST)
From: Mats Karlsson <mats.o.karls...@gmail.com>
To: amarino-toolkit@googlegroups.com
Message-Id: <d7551836-dd34-49f3-b73b-d694e48bef14@googlegroups.com>
In-Reply-To: <CAN5U55avCrnWct0r8Ur_qwTmwEztQrtVboGt7bZW0=2B3W-BCA@mail.gmail.com>
References: <15390063.2274.1334494408185.JavaMail.geo-discussion-forums@vbyj26>
 <CAN5U55bRxEkoTvGrULBrQtMNVjYLdqEkNaHE_0bBwZOSTCYtsw@mail.gmail.com>
 <CAN5U55bz2gY=m-KBgH+EtotwyAyH08y4cph5zbqa1k-D1MJ5NA@mail.gmail.com>
 <004d01cd1b1a$136ad300$3a407900$@gmail.com>
 <CAELguob6=Z8MP-Zp-JJqAkh7JPQGiuC-EMRawFAgSgbAFEBvSQ@mail.gmail.com>
 <b5eef1bd-47fc-4573-b6f5-f8fd726c4082@googlegroups.com>
 <CAELguoaTbEZ=RO4QUzvXTaN5is6MThtwnabZA9N0PNTwEvPY9w@mail.gmail.com>
 <55d9b40e-895d-4307-8e95-085e3b14ad6d@googlegroups.com>
 <CAN5U55bx554zCASn6wdhowXEf-yVca685KzdxQ6AhKHVnWu-kA@mail.gmail.com>
 <27e318e9-2bf3-4b92-9279-43c35a96226e@googlegroups.com>
 <CAN5U55avCrnWct0r8Ur_qwTmwEztQrtVboGt7bZW0=2B3W-BCA@mail.gmail.com>
Subject: Re: [amarino-toolkit] Full technical documentation available now
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_1371_30621343.1352636251546"

------=_Part_1371_30621343.1352636251546
Content-Type: multipart/alternative; 
	boundary="----=_Part_1372_4150663.1352636251547"

------=_Part_1372_4150663.1352636251547
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This is working for me:

*My config: *MultiColorLamp App - Amarino - Android - Bluetooth - Arduino.

First I used "Analyse_MulticolorLamp", that decodes what is received from 
the bluetooth serial device.

I use 2 and 3 as SoftSerial for my Bluetooth module.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  Serial.println("send any byte and I'll tell you everything I can about 
it");
  Serial.println();
}

void loop() {
  // get any incoming bytes:
  if (mySerial.available() > 0) {
    int thisChar = mySerial.read();

    // say what was sent:
    Serial.print("You sent me: \'");
    Serial.write(thisChar);
    Serial.print("\'  ASCII Value: ");
    Serial.print(thisChar);
    Serial.print("     ");

    // Analyze what was sent:
    if(isAlpha(thisChar)) {
      Serial.println("it's alphabetic");
    }
    if(isControl(thisChar)) {
      Serial.println("it's a control character");
    }
    if(isDigit(thisChar)) {
      Serial.println("it's a numeric digit");
    }
  }
}



And then I found some code from the book "Beginning Arduino" that fitted my 
purpose nicely.

// Project 10 - Serial controlled RGB Lamp
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

char buffer[18];
int red, green, blue;
int RedPin = 9;
int GreenPin = 10;
int BluePin = 11;

void setup()
{
  Serial.begin(9600);
  Serial.flush();
  mySerial.begin(9600);
  pinMode(RedPin, OUTPUT);
  pinMode(GreenPin, OUTPUT);
  pinMode(BluePin, OUTPUT);
}

void loop()
{
  if (mySerial.available() > 0) {
    int index=0;
    delay(100); // let the buffer fill up
    int numChar = mySerial.available();
    if (numChar>15) {
      numChar=15;
    }
    while (numChar--) {
      buffer[index++] = mySerial.read();
      }
    splitString(buffer);
  }
}

void splitString(char* data) {
  Serial.print("Data entered: ");
  Serial.println(data);
  char* parameter;
  parameter = strtok (data, " ,");
  while (parameter != NULL) {
    setLED(parameter);
    parameter = strtok (NULL, " ,");
  }
  // Clear the text and serial buffers
  for (int x=0; x<16; x++) {
    buffer[x]='\0';
  }
  Serial.flush();
}

void setLED(char* data) {
  if ((data[0] == 'r') || (data[0] == 'R')) {
    int Ans = strtol(data+1, NULL, 10);
    Ans = constrain(Ans,0,255);
    analogWrite(RedPin, Ans);
    Serial.print("Red is set to: ");
    Serial.println(Ans);
    }
  if ((data[0] == 'g') || (data[0] == 'G')) {
    int Ans = strtol(data+1, NULL, 10);
    Ans = constrain(Ans,0,255);
    analogWrite(GreenPin, Ans);
    Serial.print("Green is set to: ");
    Serial.println(Ans);
  }
  if ((data[0] == 'b') || (data[0] == 'B')) {
    int Ans = strtol(data+1, NULL, 10);
    Ans = constrain(Ans,0,255);
    analogWrite(BluePin, Ans);
    Serial.print("Blue is set to: ");
    Serial.println(Ans);
  }
}

And now I have a RGB controlled lamp without using the Amarino library that 
is using the hardcoded serial port.

/Mats

------=_Part_1372_4150663.1352636251547
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

This is working for me:<div><br></div><div><b>My config:&nbsp;</b>MultiColo=
rLamp App - Amarino - Android - Bluetooth - Arduino.</div><div><br></div><d=
iv>First I used "Analyse_MulticolorLamp", that decodes what is received fro=
m the bluetooth serial device.</div><div><br></div><div>I use 2 and 3 as So=
ftSerial for my Bluetooth module.<br></div><div><br></div><div><div><font f=
ace=3D"courier new, monospace">#include &lt;SoftwareSerial.h&gt;</font></di=
v><div><font face=3D"courier new, monospace">SoftwareSerial mySerial(2, 3);=
 // RX, TX</font></div><div><font face=3D"courier new, monospace"><br></fon=
t></div><div><font face=3D"courier new, monospace">void setup() {</font></d=
iv><div><font face=3D"courier new, monospace">&nbsp; Serial.begin(9600);</f=
ont></div><div><font face=3D"courier new, monospace">&nbsp; mySerial.begin(=
9600);</font></div><div><font face=3D"courier new, monospace">&nbsp; Serial=
.println("send any byte and I'll tell you everything I can about it");</fon=
t></div><div><font face=3D"courier new, monospace">&nbsp; Serial.println();=
</font></div><div><font face=3D"courier new, monospace">}</font></div><div>=
<font face=3D"courier new, monospace"><br></font></div><div><font face=3D"c=
ourier new, monospace">void loop() {</font></div><div><font face=3D"courier=
 new, monospace">&nbsp; // get any incoming bytes:</font></div><div><font f=
ace=3D"courier new, monospace">&nbsp; if (mySerial.available() &gt; 0) {</f=
ont></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; int this=
Char =3D mySerial.read();</font></div><div><font face=3D"courier new, monos=
pace"><br></font></div><div><font face=3D"courier new, monospace">&nbsp; &n=
bsp; // say what was sent:</font></div><div><font face=3D"courier new, mono=
space">&nbsp; &nbsp; Serial.print("You sent me: \'");</font></div><div><fon=
t face=3D"courier new, monospace">&nbsp; &nbsp; Serial.write(thisChar);</fo=
nt></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; Serial.pr=
int("\' &nbsp;ASCII Value: ");</font></div><div><font face=3D"courier new, =
monospace">&nbsp; &nbsp; Serial.print(thisChar);</font></div><div><font fac=
e=3D"courier new, monospace">&nbsp; &nbsp; Serial.print(" &nbsp; &nbsp; ");=
</font></div><div><font face=3D"courier new, monospace"><br></font></div><d=
iv><font face=3D"courier new, monospace">&nbsp; &nbsp; // Analyze what was =
sent:</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; =
if(isAlpha(thisChar)) {</font></div><div><font face=3D"courier new, monospa=
ce">&nbsp; &nbsp; &nbsp; Serial.println("it's alphabetic");</font></div><di=
v><font face=3D"courier new, monospace">&nbsp; &nbsp; }</font></div><div><f=
ont face=3D"courier new, monospace">&nbsp; &nbsp; if(isControl(thisChar)) {=
</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; &nbsp=
; Serial.println("it's a control character");</font></div><div><font face=
=3D"courier new, monospace">&nbsp; &nbsp; }</font></div><div><font face=3D"=
courier new, monospace">&nbsp; &nbsp; if(isDigit(thisChar)) {</font></div><=
div><font face=3D"courier new, monospace">&nbsp; &nbsp; &nbsp; Serial.print=
ln("it's a numeric digit");</font></div><div><font face=3D"courier new, mon=
ospace">&nbsp; &nbsp; }</font></div><div><font face=3D"courier new, monospa=
ce">&nbsp; }</font></div><div><font face=3D"courier new, monospace">}</font=
></div></div><div><br></div><div><br></div><div><br></div><div>And then I f=
ound some code from the book "Beginning Arduino" that fitted my purpose nic=
ely.</div><div><br></div><div><div><font face=3D"courier new, monospace">//=
 Project 10 - Serial controlled RGB Lamp</font></div><div><font face=3D"cou=
rier new, monospace">#include &lt;SoftwareSerial.h&gt;</font></div><div><fo=
nt face=3D"courier new, monospace">SoftwareSerial mySerial(2, 3); // RX, TX=
</font></div><div><font face=3D"courier new, monospace"><br></font></div><d=
iv><font face=3D"courier new, monospace">char buffer[18];</font></div><div>=
<font face=3D"courier new, monospace">int red, green, blue;</font></div><di=
v><font face=3D"courier new, monospace">int RedPin =3D 9;</font></div><div>=
<font face=3D"courier new, monospace">int GreenPin =3D 10;</font></div><div=
><font face=3D"courier new, monospace">int BluePin =3D 11;</font></div><div=
><font face=3D"courier new, monospace"><br></font></div><div><font face=3D"=
courier new, monospace">void setup()</font></div><div><font face=3D"courier=
 new, monospace">{</font></div><div><font face=3D"courier new, monospace">&=
nbsp; Serial.begin(9600);</font></div><div><font face=3D"courier new, monos=
pace">&nbsp; Serial.flush();</font></div><div><font face=3D"courier new, mo=
nospace">&nbsp; mySerial.begin(9600);</font></div><div><font face=3D"courie=
r new, monospace">&nbsp; pinMode(RedPin, OUTPUT);</font></div><div><font fa=
ce=3D"courier new, monospace">&nbsp; pinMode(GreenPin, OUTPUT);</font></div=
><div><font face=3D"courier new, monospace">&nbsp; pinMode(BluePin, OUTPUT)=
;</font></div><div><font face=3D"courier new, monospace">}</font></div><div=
><font face=3D"courier new, monospace"><br></font></div><div><font face=3D"=
courier new, monospace">void loop()</font></div><div><font face=3D"courier =
new, monospace">{</font></div><div><font face=3D"courier new, monospace">&n=
bsp; if (mySerial.available() &gt; 0) {</font></div><div><font face=3D"cour=
ier new, monospace">&nbsp; &nbsp; int index=3D0;</font></div><div><font fac=
e=3D"courier new, monospace">&nbsp; &nbsp; delay(100); // let the buffer fi=
ll up</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; =
int numChar =3D mySerial.available();</font></div><div><font face=3D"courie=
r new, monospace">&nbsp; &nbsp; if (numChar&gt;15) {</font></div><div><font=
 face=3D"courier new, monospace">&nbsp; &nbsp; &nbsp; numChar=3D15;</font><=
/div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; }</font></div=
><div><font face=3D"courier new, monospace">&nbsp; &nbsp; while (numChar--)=
 {</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; &nb=
sp; buffer[index++] =3D mySerial.read();</font></div><div><font face=3D"cou=
rier new, monospace">&nbsp; &nbsp; &nbsp; }</font></div><div><font face=3D"=
courier new, monospace">&nbsp; &nbsp; splitString(buffer);</font></div><div=
><font face=3D"courier new, monospace">&nbsp; }</font></div><div><font face=
=3D"courier new, monospace">}</font></div><div><font face=3D"courier new, m=
onospace"><br></font></div><div><font face=3D"courier new, monospace">void =
splitString(char* data) {</font></div><div><font face=3D"courier new, monos=
pace">&nbsp; Serial.print("Data entered: ");</font></div><div><font face=3D=
"courier new, monospace">&nbsp; Serial.println(data);</font></div><div><fon=
t face=3D"courier new, monospace">&nbsp; char* parameter;</font></div><div>=
<font face=3D"courier new, monospace">&nbsp; parameter =3D strtok (data, " =
,");</font></div><div><font face=3D"courier new, monospace">&nbsp; while (p=
arameter !=3D NULL) {</font></div><div><font face=3D"courier new, monospace=
">&nbsp; &nbsp; setLED(parameter);</font></div><div><font face=3D"courier n=
ew, monospace">&nbsp; &nbsp; parameter =3D strtok (NULL, " ,");</font></div=
><div><font face=3D"courier new, monospace">&nbsp; }</font></div><div><font=
 face=3D"courier new, monospace">&nbsp; // Clear the text and serial buffer=
s</font></div><div><font face=3D"courier new, monospace">&nbsp; for (int x=
=3D0; x&lt;16; x++) {</font></div><div><font face=3D"courier new, monospace=
">&nbsp; &nbsp; buffer[x]=3D'\0';</font></div><div><font face=3D"courier ne=
w, monospace">&nbsp; }</font></div><div><font face=3D"courier new, monospac=
e">&nbsp; Serial.flush();</font></div><div><font face=3D"courier new, monos=
pace">}</font></div><div><font face=3D"courier new, monospace"><br></font><=
/div><div><font face=3D"courier new, monospace">void setLED(char* data) {</=
font></div><div><font face=3D"courier new, monospace">&nbsp; if ((data[0] =
=3D=3D 'r') || (data[0] =3D=3D 'R')) {</font></div><div><font face=3D"couri=
er new, monospace">&nbsp; &nbsp; int Ans =3D strtol(data+1, NULL, 10);</fon=
t></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; Ans =3D co=
nstrain(Ans,0,255);</font></div><div><font face=3D"courier new, monospace">=
&nbsp; &nbsp; analogWrite(RedPin, Ans);<br></font></div><div><font face=3D"=
courier new, monospace">&nbsp; &nbsp; Serial.print("Red is set to: ");</fon=
t></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; Serial.pri=
ntln(Ans);</font></div><div><font face=3D"courier new, monospace">&nbsp; &n=
bsp; }</font></div><div><font face=3D"courier new, monospace">&nbsp; if ((d=
ata[0] =3D=3D 'g') || (data[0] =3D=3D 'G')) {</font></div><div><font face=
=3D"courier new, monospace">&nbsp; &nbsp; int Ans =3D strtol(data+1, NULL, =
10);</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbsp; A=
ns =3D constrain(Ans,0,255);</font></div><div><font face=3D"courier new, mo=
nospace">&nbsp; &nbsp; analogWrite(GreenPin, Ans);<br></font></div><div><fo=
nt face=3D"courier new, monospace">&nbsp; &nbsp; Serial.print("Green is set=
 to: ");</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbs=
p; Serial.println(Ans);</font></div><div><font face=3D"courier new, monospa=
ce">&nbsp; }</font></div><div><font face=3D"courier new, monospace">&nbsp; =
if ((data[0] =3D=3D 'b') || (data[0] =3D=3D 'B')) {</font></div><div><font =
face=3D"courier new, monospace">&nbsp; &nbsp; int Ans =3D strtol(data+1, NU=
LL, 10);</font></div><div><font face=3D"courier new, monospace">&nbsp; &nbs=
p; Ans =3D constrain(Ans,0,255);</font></div><div><font face=3D"courier new=
, monospace">&nbsp; &nbsp; analogWrite(BluePin, Ans);<br></font></div><div>=
<font face=3D"courier new, monospace">&nbsp; &nbsp; Serial.print("Blue is s=
et to: ");</font></div><div><font face=3D"courier new, monospace">&nbsp; &n=
bsp; Serial.println(Ans);</font></div><div><font face=3D"courier new, monos=
pace">&nbsp; }</font></div><div><font face=3D"courier new, monospace">}</fo=
nt></div></div><div><br></div><div>And now I have a RGB controlled lamp wit=
hout using the Amarino library that is using the hardcoded serial port.</di=
v><div><br></div><div>/Mats</div>
------=_Part_1372_4150663.1352636251547--

------=_Part_1371_30621343.1352636251546--