Народ подскажите пожалуйста, есть скетч который принимает из сериала данные и переводит их в градусы для сервы в arduino EDI все работает, но при отправки из Processing серва не поворачивается. Может есть у кого примеры как это можно сделать?
Проверьте, что получает Arduino из Processing, так же сверьте что вы отправляете (какой тип данных) и что вы обрабатываете, так же скажу, попробуйте сначало не полную программу написать, а лишь ту, которую обрабатывает полученное с Processing. Возможно поможет...
вот код приема из сериал //Program by Jeremy Blum //www.jeremyblum.com //Controls a Servo Motor //Include Servo Library #include <Servo.h> //Define Pins int servoPin = 9; int servoPin1 = 10; int servoPin2 = 11; int speeds = 1000; //Create Servo Object Servo jeremysServo; Servo jeremysServo1; Servo jeremysServo2; void setup() { Serial.begin(9600); //Attaches the Servo to our object jeremysServo.attach(servoPin); jeremysServo1.attach(servoPin1); jeremysServo2.attach(servoPin2); } //доп функции int servoMove1(int val)//серва 1 { int val2 = Serial.read(); jeremysServo.write(val); } int servoMove2(int val)//серва 2 { int val2 = Serial.read(); jeremysServo1.write(val); } int servoMove3(int val)//серва 3 { int val2 = Serial.read(); jeremysServo2.write(val); } int serCommand(int W) //разбираем сериал коды { int val = 0; int servIndex = 0; while (Serial.available() == 0); servIndex =Serial.read() - '0'; for (int i=0 ; i<=2 ; i++) { while (Serial.available() == 0); val = val*10 + Serial.read() - '0'; } if (servIndex == 1) servoMove1(val); if (servIndex == 2) servoMove2(val); if (servIndex == 3) servoMove3(val); Serial.println( servIndex); Serial.println( val); Serial.println( "end"); val=0; servIndex = 0; } // void loop() { serCommand(0); } //
напишите пожалуйста примеры как можно отправить из процессинг в serialPort данные и в каких видах их можно отправлять и как обрабатывать с ардуино. заранее благодарен.
И все таки был бы благодарен за пример в коде для процессинга отправить на дуню значение 1180, и пример как принять дуней из процессинга 1180?
Я с сервоприводами не работал, и не могу вам сказать - есть ли у вас ошибка в коде или нет, вот я вам несколько решений напишу: 1) скорость передачи должна быть одинаковой. (Serial.begin(9600) 2) Из Processing вы должны отправлять такой же тип данных, что и принимаете, к примеру: ------------------ Код (Text): //Processing: int val=0; //создаем переменную типа int Serial.write(val); //посылаем int ------------------- Код (Text): //ArduinoIDE: int rd=0; //создаем переменную int rd = Serial.read(); //сохраняем данные в int Serial.println(rd); //выводим на экран полученное с СОМ порта -------------------- Возможно с кодом я ошибся, т.к. давно с Processing работал, но принцип тот же. Удачи, экспериментируйте!