Передать в ардуину переменную.
- Войдите на сайт для отправки комментариев
Ср, 21/12/2016 - 00:07
Добрый день!
Есть несколько слайдеров из библиотеки ControlP5. Значение которых надо передать на Ардуину, соответственно чтобы Ардуина понимала что откуда.
Значения слайдеров снимаются во float. Тут подумал немного и решил все это дело преобразовывать в стринг и кидать значения в виде:
temp1 20
temp2 23
temp1 20
temp2 23 и.т.д.
Набрасал код для процессинга:
String upiss = Float.toString(upi); upiss1=("temp1 "+upiss); println(upiss1);} Serial.println(upiss1); myPort.write(upiss1);
где upi - значения первого слайдера (float), upiss и upiss1 - String соответственно.
Далее попытался поймать все это ардуинкой, набрасав кодик:
if (Serial.available()){ inString=Serial.read(); if(inString.indexOf("temp1")>=0) { print(inString.substring(inString.indexOf("", 6))); inString=(inString.substring(inString.indexOf("", 6)));//гостинная println(inString);} float inString = pr; } if (tempS1>pr) {digitalWrite(outputPin2, HIGH);} if (tempS1<pr){digitalWrite(outputPin2, LOW);}
Но...не тут то было....ругается компилятор, говорит мол "'print' was not declared in this scope"
Где косяк?
tempS1 это значение датчика температуры
Попробывал по другому:
if (Serial.available()){ inString=Serial.read(); if(inString.indexOf("temp1")>=0) { serial.print(inString.substring(inString.indexOf("", 6))); inString=(inString.substring(inString.indexOf("", 6)));//гостинная serial.println(inString);} float inString = pr; } if (tempS1>pr) {digitalWrite(outputPin2, HIGH);} if (tempS1<pr){digitalWrite(outputPin2, LOW);}
Ругань исчезла, но на ползунок Ардуинка так и не отзывается
Синтаксис беде-беда, работать найн. Тренироваться стоит начать с передачи всего одного символа и чтоб ардуинка на него верно реагировала. Потом повторить с двумя. Через некоторое время выяснить, что они путаются, всё пропало и ничего не работает. Через ещё какое то время удастся узнать, что println('1'); это два символа (а иногда и три).
А то любят тут понастроить космодесантных катеров, а потом удивляются, чего же это кофеварка странно в нём работает.
А вообще отладку рекомендую начать с выяснения, а какой же поток символов в ардуинку приходит?
Синтаксис беде-беда, работать найн. Тренироваться стоит начать с передачи всего одного символа и чтоб ардуинка на него верно реагировала. Потом повторить с двумя. Через некоторое время выяснить, что они путаются, всё пропало и ничего не работает. Через ещё какое то время удастся узнать, что println('1'); это два символа (а иногда и три).
А то любят тут понастроить космодесантных катеров, а потом удивляются, чего же это кофеварка странно в нём работает.
А вообще отладку рекомендую начать с выяснения, а какой же поток символов в ардуинку приходит?
А вот самому интересно что делает myPort.Write? Посылает строку? Или что? Строку с переносом? Или же все валит в одну кучу.....Нигде инфы не найдешь.
Вот с serial.Print и serial.Println все ясно и понятно истолковано.....Но serial.Print в процессинг не работает с строками, за то ардуина всегда пожалуйста!
По сути мне надо толкнуть в порт строку типа temp1 XY с переносом, поймать ее ардуиной, выдернуть из нее XY,
преобразовать XY в float.....
Синтаксис беде-беда, работать найн. Тренироваться стоит начать с передачи всего одного символа и чтоб ардуинка на него верно реагировала. Потом повторить с двумя. Через некоторое время выяснить, что они путаются, всё пропало и ничего не работает. Через ещё какое то время удастся узнать, что println('1'); это два символа (а иногда и три).
А то любят тут понастроить космодесантных катеров, а потом удивляются, чего же это кофеварка странно в нём работает.
А вообще отладку рекомендую начать с выяснения, а какой же поток символов в ардуинку приходит?
А вот самому интересно что делает myPort.Write? Посылает строку? Или что? Строку с переносом? Или же все валит в одну кучу.....Нигде инфы не найдешь.
Вот с serial.Print и serial.Println все ясно и понятно истолковано.....Но serial.Print в процессинг не работает с строками, за то ардуина всегда пожалуйста!
По сути мне надо толкнуть в порт строку типа temp1 XY с переносом, поймать ее ардуиной, выдернуть из нее XY,
преобразовать XY в float.....
Инфа здесь:
Serial
write()
Writes bytes, chars, ints, bytes[], Strings to the serial port - тут все ясно как божий день. Но! Не понятно.
Выводим, допустим, Serial.write ("Hi!") что будет по факту?
Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi!
или
Hi!
Hi!
Hi!
Hi!
?
Как организуете на стороне ардуино, так и будет.
Writes bytes, chars, ints, bytes[], Strings to the serial port - тут все ясно как божий день. Но! Не понятно.
Выводим, допустим, Serial.write ("Hi!") что будет по факту?
Hi! Hi! Hi! Hi! Hi! Hi! Hi! Hi!
или
Hi!
Hi!
Hi!
Hi!
?
Будет символ в символ что отправлено, для перевода строки +"/n' или лучше по таблице символов найти char(13) кажется.
Каждый раз одно и тоже, хочешь отладить передачу данных, запхай в ардуину простейший скетч посимвольно читающий всё из буфера порта и отсылающий посимвольно обратно. Отсылай через терминал и наблюдай результат, отсылай через что угодно и смотри на эхо. Если всё сходится, значит всё работает. И никаких вопросов что по факту, все факты на лице так сказать видны.