How to send a number as a number or How to rule an LED
Thomas McGrath III
mcgrath3 at mac.com
Sat Feb 5 11:37:50 EST 2011
Claudi,
What is your atoi() code like? Why tDataStr[8] ? is that the number of chars you can read in? can that be more?
What if we want to send "<13-125>" can we parse that to separate out the 13 for Pin 13 and the 125 for brightness?
What about "<13-1-125>" and "<13-0-1>" for pin 13 output 125 and 13 input read once 1 or / continuos 0. etc.
-- Tom McGrath III
http://lazyriver.on-rev.com
3mcgrath at comcast.net
On Feb 5, 2011, at 7:19 AM, Claudi Cornaz wrote:
> Hi tom,
>
> I am working with the same. What I undersrtand and have found on forums etc
> you need to use atoi() to convert from type char to int.
> You send out 3 chars when sending for instance, 125.
> The arduino seial.read routine will fetch 3 chars (125)
>
> I use a startChar 1 or more data chars and then a stopChar like "<125>"
> This is what I send to the arduino
> Then on the arduino I do serial.read() till I recieve a "<" char.
> As soon as I have "<" I start gathering the bytes in a char tDataStr[8] var
> till I see a ">" char. Now I convert this char tDataStr to a int with atoi()
> int tDataInt;
> tDataInt = atoi(tDataStr); // now I have a int which I can pass as value to
> analogWrite(ledPin, tDataInt);
>
> At least this is how it is recommended on the forums.
>
> I almost got this working.
> By the way I also noticed the following
> Use open driver "xxx" for text update -- same as you
>
> then the first read you do should be in a "for 1 line" or "for x chars"
> Once this first read is done with the "for xx" form it looks like something in LC gets initialized right
> so subsequent reads can be until empty.
>
> I am still trying to figure this out more precisly and some real stress testing as soon as I have
> a demo working which involves sending sensor values from the arduino to LC and vice versa
> I am almost there. Still struggeling with some C code, but slowly getting the hang of C)
>
> I hope to have a nice demo this weekend and will upload it to revOnline once it's working like I want it to.
>
>
> Best wishes,
>
> Claudi
>
>
>
>
>
> On 4 feb 2011, at 17:22, Thomas McGrath III wrote:
>
>> I am having a problem communicating with an LED. (Never thought I'd hear myself say that!)
>>
>> I have code in LC in a slider:
>> -- We are open driver ... for text update
>> on mouseUp
>> put the thumbPosition of me into tValue
>> doUpdate(tValue)
>> end mouseUp
>> on doUpdate tValue
>> put gThePort into thePort -- global port "/dev/cu.usbmodem1a21"
>> read from file thePort until empty -- clear the buffer
>> put it into field "Data" -- just to see what garbage is left over - not needed
>> wait 30
>> write tValue to file thePort -- Vaule is 0 -255 as per the Analog specs of a PWM on the Arduino Uno for an LED
>> read from file thePort until empty -- Arduino is set to send back the data received this is so I can see it
>> put it after field "Data"
>> if the result is not empty then put the result into field "Results" -- gives us our eof
>> end doUpdate
>>
>> I send out a 125 but I get back three lines:
>> 1
>> 2
>> 5
>> but the analogWrite is looking for 125
>>
>> void loop() {
>> // check if data has been sent from the computer:
>> if (Serial.available()) {
>> // read the most recent byte (which will be from 0 to 255):
>> char received = Serial.read();
>>
>> // set the brightness of the LED:
>> analogWrite(ledPin, received);
>> Serial.println(received);
>> }
>> }
>>
>> If I change the Serial.println to Serial.println(received, BYTE); I still get:
>> 1
>> 2
>> 5
>> But if I change it to Serial.println(received, DEC); I get these results:
>> 49
>> 50
>> 53
>>
>> So How do I send a number as a number and not as single digits?
>>
>>
>> -- Tom McGrath III
>> http://lazyriver.on-rev.com
>> 3mcgrath at comcast.net
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
More information about the use-livecode
mailing list