I'm trying to run an Arduino code that simultaneously: 1) blinks an led on-off every 3 seconds 2) gets a voltage input from an EMG sensor and positions a servo motor accordingly
While I run this program, I'd like to plot the following on the same graph 1) LED status on/off printed as 600 if on and 0 if off 2) EMG value being fed to the arduino 3) The angle the Arduino is sending to the servo motor
I wrote the following code which works to an extent but the problem I'm facing is, I only get two graphs on the plotter instead of 3, I think the EMG value and the angle have combined into a single line as seen in this picture:
However, if I remove the angle print statement, I get a proper graph for the other 2 as this:
How do I change my code so I can plot all three separately? Thanks in advance.
#include <Servo.h>
Servo myservo;
const int ledPin = LED_BUILTIN;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 3000;
int led=0;
int servovalue=0;
void setup() {
Serial.begin(9600);
myservo.attach(9);
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorValue = analogRead(A0);
int angle = map(sensorValue, 0, 1023, 0, 180);
myservo.write(angle);
Serial.print(sensorValue);
Serial.print(" ")
Serial.println(angle);
delay(15);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
led = 600;
} else {
ledState = LOW;
led = 0;
}
digitalWrite(ledPin, ledState);
}
Serial.print(" ");
Serial.println(led);
}
-
1Paste the code in a format that we can actually copy and test. And also embed the images instead of linking them. They will be removed from their current location some day, and this question will be useless to other people having similar issues as you have.Filip Franik– Filip Franik2019年09月25日 21:24:38 +00:00Commented Sep 25, 2019 at 21:24
1 Answer 1
The part of your code that prints data to the serial looks like this:
void loop() {
(...)
Serial.print(sensorValue);
Serial.print(" ")
Serial.println(angle);
(...)
Serial.print(" ");
Serial.println(led);
}
The bug is in the Serial.println(angle);
line. The println
method inserts a "newline" character at the end. Try changing it to Serial.print(angle);
so there is only one "newline" character.
void loop() {
(...)
Serial.print(sensorValue);
Serial.print(" ")
Serial.print(angle);
(...)
Serial.print(" ");
Serial.println(led);
}