Snelheid printen op seriële monitor
5 berichten
• Pagina 1 van 1
Snelheid printen op seriële monitor
Hallo,
Heeft iemand enig idee waarom mijn snelheid wel bij pos = 0 wordt geprint, maar niet bij pos = 180?
Hier mijn code:
Heeft iemand enig idee waarom mijn snelheid wel bij pos = 0 wordt geprint, maar niet bij pos = 180?
Hier mijn code:
- Code: Alles selecteren
#include <Servo.h>
Servo myservo;
int pos = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
unsigned long totalMillis = 0;
void setup() {
Serial.begin(9600); // Seriële poort
myservo.attach(3); // Pin servomotor
myservo.writeMicroseconds(1000); // Startpositie
}
void loop() {
for (pos = 0; pos <= 180; pos += 7.2) { // Draai van 0 to 180 graden in stappen van 7,2 graden
myservo.writeMicroseconds(pos); // Draai naar positie
delay(250); // Tussenstappen van 250 ms
previousMillis = millis();
Serial.print("Hoek = "); // Print "Hoek =" in seriële monitor
Serial.print(pos); // Print positie in seriële monitor
Serial.println("º"); // Print graden teken in seriële monitor
Serial.print("Hoek in radialen = "); // Print "Hoek in radialen =" in seriële monitor
Serial.println(pos / 180.0 * PI); // Print positie in radialen in seriële monitor
}
for (pos = 180; pos >= 0; pos -= 7.2) { // Draai van 180 tot 0 graden in stappen van 7,2 graden
myservo.writeMicroseconds(pos); // Draai naar positie
delay(250); // Tussenstappen van 250 ms
currentMillis = millis();
Serial.print("Hoek = "); // Print "Hoek =" in seriële monitor
Serial.print(pos); // Print positie in seriële monitor
Serial.println("º"); // Print graden teken in seriële monitor
Serial.print("Hoek in radialen = "); // Print "Hoek in radialen =" in seriële monitor
Serial.println(pos / 180.0 * PI); // Print positie in radialen in seriële monitor
}
if (pos = 0) {
currentMillis = millis();
Serial.print("Tijd = ");
Serial.print(currentMillis);
Serial.println(" rad/s");
}
if (pos = 180) {
previousMillis = millis();
Serial.print("Tijd = ");
Serial.print(previousMillis);
Serial.println(" rad/s");
}
}
Advertisement
- Gij Kieken
- Berichten: 631
- Geregistreerd: 15 Nov 2015, 11:54
Re: Snelheid printen op seriële monitor
Hallo ,
Een snelle blik op jouw sketch,
Je kiest voor de voor int-type (gehele getallen) bij de declaratie pos,in je for-loops wil je er float van maken (+=7.2).
Er is een duidelijk verschil tussen = (assignment operator) en == (equal to) Comparison operators .
Dus in je laatste twee if -constructies loopt het mis.
Een snelle blik op jouw sketch,
Je kiest voor de voor int-type (gehele getallen) bij de declaratie pos,in je for-loops wil je er float van maken (+=7.2).
Er is een duidelijk verschil tussen = (assignment operator) en == (equal to) Comparison operators .
Dus in je laatste twee if -constructies loopt het mis.
Re: Snelheid printen op seriële monitor
Kun je vertellen wat het doel is ?
Wat moeten de servo's gaan doen en wat wil je op de seriële monitor laten zien ?
Lees ook dit eens door: https://www.arduino.cc/reference/en/language/structure/control-structure/if/.
en dan vooral voor de conditie "equal".
Om iets met millis() te gaan doen, kun je eerst dit eens doorlezen: https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay.
Wat moeten de servo's gaan doen en wat wil je op de seriële monitor laten zien ?
Lees ook dit eens door: https://www.arduino.cc/reference/en/language/structure/control-structure/if/.
en dan vooral voor de conditie "equal".
Om iets met millis() te gaan doen, kun je eerst dit eens doorlezen: https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay.
Re: Snelheid printen op seriële monitor
Koepel schreef:Kun je vertellen wat het doel is ?
Wat moeten de servo's gaan doen en wat wil je op de seriële monitor laten zien ?
Lees ook dit eens door: https://www.arduino.cc/reference/en/language/structure/control-structure/if/.
en dan vooral voor de conditie "equal".
Om iets met millis() te gaan doen, kun je eerst dit eens doorlezen: https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay.
Het doel is om de servo in stappen van 7,2 graden van 0- tot 180 graden te laten draaien, en terug.
Op de seriële monitor moet de snelheid van de draaiing op 0- en 180 graden komen te staan met de functie millis().
Re: Snelheid printen op seriële monitor
De tijd meten gaat op deze manier:
Het gaat om de millis() waarde als je begint te meten (t1) en de millis() waarde als je stopt met meten (t2). Het verschil is hoe lang het duurde in milliseconden.
- Code: Alles selecteren
unsigned long t1 = millis();
... code die een tijdje duurt ...
unsigned long t2 = millis();
unsigned long result = t2 - t1;
Serial.print( "Het duurde ");
Serial.print( result);
Serial.println( " ms");
Het gaat om de millis() waarde als je begint te meten (t1) en de millis() waarde als je stopt met meten (t2). Het verschil is hoe lang het duurde in milliseconden.
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: etibofofiue, itedipi, PatrickAbomi en 100 gasten