Offline
Newbie
Karma: 0
Posts: 3
|
 |
« on: February 01, 2013, 03:23:41 pm » |
I'm trying to read from the Atlas Scientific colour detector ENV-RGB, which is supposed to return a string. Using the demo software I get nothing back. I tweaked the software a little bit and it seems to be returning something, but just random characters rather than the "rrr, ggg, bbb" string that's in the spec. Has anyone used this sensor? Is it tricky?
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
UK
Offline
Brattain Member
Karma: 138
Posts: 19067
I don't think you connected the grounds, Dave.
|
 |
« Reply #1 on: February 01, 2013, 04:20:05 pm » |
I tweaked the software a little bit ...but you didn't think to post it, or give any reference to the sensor?
|
|
|
|
|
Logged
|
Pete, it's a fool looks for logic in the chambers of the human heart.
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 3
|
 |
« Reply #2 on: February 02, 2013, 01:23:38 pm » |
Thank you so much. Clearly friendliness is not one of the things you are moderating for. I'm sorry I joined.
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
UK
Offline
Brattain Member
Karma: 138
Posts: 19067
I don't think you connected the grounds, Dave.
|
 |
« Reply #3 on: February 02, 2013, 01:27:39 pm » |
But still no code? Clearly friendliness is not one of the things you are moderating for. "My car wouldn't start this morning. It's a white car. What is wrong?". See why we ask the questions we ask?
|
|
|
|
« Last Edit: February 02, 2013, 02:49:15 pm by AWOL »
|
Logged
|
Pete, it's a fool looks for logic in the chambers of the human heart.
|
|
|
|
Netherlands
Online
Tesla Member
Karma: 91
Posts: 9441
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #4 on: February 02, 2013, 01:34:31 pm » |
but just random characters rather than the "rrr, ggg, bbb" string that's in the spec This might point to wrong communication setting or so. Is it a string of digits or a string of bytes (I have not read the datasheet) as typically every color would fit into one byte (and yes these may appear as the complete alphabet and more if interpreted as digits in a string. I found the sensor after some googling here - http://atlas-scientific.com/product_pages/sensors/env-rgb.html - Many questions pop up, the top 6: What settings do you use in your code? baud rate? parity? etc Can you see the comma's appearing in the output? Do you synchronize upon the <CR> character in your code? Did you double check TX & RX?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #5 on: February 03, 2013, 12:44:19 pm » |
I bought one of these sensors a week ago and struggling to get it working properly. The code they provided did not work. Ive managed to get a reading through the serial, digital 0, 1 pins and then entering this code: void setup() {} void loop(){}
opening the serial reader and entering "C" to start taking a reading at 620ms. you should get something like this. 14,8,414,14,1410,10,1413,18,18 What I would like to know is how can you use soft serial and strings to be able to take a reading that arduino can then do something with.
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Online
Tesla Member
Karma: 91
Posts: 9441
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #6 on: February 03, 2013, 02:14:31 pm » |
From the specs I've seen, this should do a basic capture. Give it a try #include <NewSoftSerial.h>
NewSoftSerial mySerial(2, 3);
void setup() { Serial.begin(115200); Serial.println("Start color sensor");
// set the data rate for the NewSoftSerial port mySerial.begin(38400); mySerial.write('C'); }
void loop() { char c; if (mySerial.available()) { char c = mySerial.read() Serial.print(c); if (c == ',') Serial.println(); // split the R G and B if (c == 13) Serial.println(); // extra newline } }
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #7 on: February 03, 2013, 02:42:36 pm » |
Thanks for that,
ive just tried verify this and get the following error:
'NewSoftSerial' does not name a type.
im running 1.0.3
Cheers,
Phil
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
UK
Offline
Brattain Member
Karma: 138
Posts: 19067
I don't think you connected the grounds, Dave.
|
 |
« Reply #8 on: February 03, 2013, 02:43:27 pm » |
Use "SoftwareSerial" instead. I'm sorry I joined. Members from IP (range) xx.xxx.xxx.xx IP address Display name xx.xxx.xxx.xx Summersgill, summersgillb So sorry, you joined twice?
|
|
|
|
« Last Edit: February 03, 2013, 02:46:31 pm by AWOL »
|
Logged
|
Pete, it's a fool looks for logic in the chambers of the human heart.
|
|
|
|
Netherlands
Online
Tesla Member
Karma: 91
Posts: 9441
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #9 on: February 03, 2013, 02:54:28 pm » |
Sorry, retry #include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup() { Serial.begin(115200); Serial.println("Start color sensor");
// set the data rate for the NewSoftSerial port mySerial.begin(38400); mySerial.print('C'); }
void loop() { if (mySerial.available()) { char c = mySerial.read(); Serial.print(c); if (c == ',') Serial.println(); // split the R G and B if (c == 13) Serial.println(); // extra newline } }
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #10 on: February 03, 2013, 03:00:58 pm » |
thanks for that, I open up the serial monitor and get this... ͹ÙL (values change when i close and re-open the monitor) for example: Ô»Ðó ݽùÌ
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Online
Tesla Member
Karma: 91
Posts: 9441
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #11 on: February 03, 2013, 03:25:20 pm » |
that looks like some ascii code very promising (said the optimist) #include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup() { Serial.begin(115200); Serial.println("Start color sensor");
// set the data rate for the NewSoftSerial port mySerial.begin(38400); mySerial.print('C'); }
void loop() { if (mySerial.available()) { char c = mySerial.read(); Serial.print(c, DEC); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<< line changed if (c == ',') Serial.println(); // split the R G and B if (c == 13) Serial.println(); // extra newline } } can you give it a try?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Newbie
Karma: 0
Posts: 16
Arduino rocks
|
 |
« Reply #12 on: February 03, 2013, 03:35:35 pm » |
cool, im getting a new reading roughly every second now... ɵÁ\Ðpaà°ÁY`1aÿðÉÜpaàУp#à°¡p#øÐÅ£p#àðÉ!pøÌùñ 0apÀ̹±á cøÐÅ£p#à°ÁK°càÙpcà
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Online
Tesla Member
Karma: 91
Posts: 9441
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #13 on: February 03, 2013, 03:56:45 pm » |
There are coming to much bytes, could also be a loose wire(!)
Have you try alternative baud rates? 9600, 19200, 38400 (already tested), 115200?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 3
|
 |
« Reply #14 on: February 03, 2013, 03:59:59 pm » |
Thanks, robtillaart. I tried your code, too, but I still don't get anything back.
|
|
|
|
|
Logged
|
|
|
|
|
|