processing + Arduino
- Войдите на сайт для отправки комментариев
Пт, 03/11/2017 - 10:25
ПРОШУ ПОМОЩИ,пожалуйста проконсультируйте.хочу передать на ардуин из processing.Идея в том 1 это счетчик а остальнык цифры это разряды то есть 2=10 3=100 итд по разрядм.Отпроаляю из processing два числа счетчик и разряд то есть 12 12 12 12 это число в адруине должно быть равно 40 надеюсь понятно.вот код.Сложилось такое впечатление что он просто не присваевает m 10. но если это сделать в ручную все работает.Заранее спасибо
char commandValue; char razrad;// данные, поступаемые с последовательного порта int ledPin = 13; boolean ledState = LOW; //управляем состоянием светодиода int cord=0; int s=0; int m=1; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); establishContact(); // отсылаем байт для контакта, пока ресивер отвечает } void loop() { // если можно прочитать данные if (Serial.available() > 0) { razrad = Serial.read(); if (razrad == '2') { int m=10; } else{ int m=1; } if (razrad == '1') { s=s+m; } } else { // Отсылаем обратно Serial.println("END"); } if (m==10) { digitalWrite(ledPin, HIGH); } } void establishContact() { while (Serial.available() <= 0) { Serial.println("A"); // отсылает заглавную A delay(300); } }
import processing.serial.*; Serial serial; // создаем объект последовательного порта String received; // данные, получаемые с последовательного порта // Проверка на поступление данных от Arduino boolean firstContact = false; int k; float c=123.123456; int mnp=0; void setup() { size(320, 120); String port = Serial.list()[0]; serial = new Serial(this, port, 9600); serial.bufferUntil('\n'); } void draw() { } void serialEvent( Serial myPort) { //формируем строку из данных, которые поступают // '\n' - разделитель - конец пакета данны received = myPort.readStringUntil('\n'); //убеждаемся, что наши данные не пустые перед тем, как продолжить if (received != null) { //удаляем пробелы received = trim(received); println(received); //ищем нашу строку 'A' , чтобы начать рукопожатие //если находим, то очищаем буфер и отсылаем запрос на данные if (firstContact == false) { if (received.equals("A")) { serial.clear(); firstContact = true; myPort.write("A"); println("contact"); } } else { //если контакт установлен, получаем и парсим данные println(received); int full=12; while(mnp!=full){ mnp=mnp+1; delay(100); serial.write('2'); serial.write('1'); println('2'); println(mnp); } // когда вы все данные, делаем запрос на новый пакет serial.write("A"); } } }
посмотрите тут, более подробно здесь (сайт, сейчас, почему то не работает, полную ссылку указать не могу(она вверху) или здесь.
Мне не много не то нужно,я отправляю данные на ардуин через СOM порт и хочу что бы ардуинка их переварила
Тут таже ошибка ,что и меня в 1 ссылке. While это бесконечный цикл, он зацикливает на себя , его надо заменить. У меня передача от Arduino к Processing сделана так.
Arduino
ЕСЛИ ЧЕМ ПОМОЖЕТ !?
отправляет значения из PROCESSING в ARDUINO как вручную из окна ввода и затем кнопка SEND
так же можно передавать коды цвета как циклично так и однократно .
а прием в ARDUINO в мое случае выглядит так (дисплей LCD1602 шилд ROBOT drive thefuture v.1
)