servo laten draaien

hallo
ik zou graag een servo laten draaien op x graden
met x bedoel dat je zelf kan in geven hoeveel graden de servo kan draaien
weet iemand hoe dit moet
alvast bedankt

Hoe wil je x dan ingeven? Via seriele communicatie of moeten dit een vaste waarden zijn die al in de sketch staan?

x moet een vaste waarde zijn bv.90° dan upload naar je arduino en de servo draait naar 90° en vervolgens geef je een andere waarde x in bv.97° en dan upload je weer en de servo draait naar 97°
alvast bedankt voor je snelle reactie

Probeer eens Servo Knob en Serial Read eens met elkaar te combineren.

Wat je wilt doen is vrij simpel, maar ik ga je niet de kant en klare code geven want daar leer je weinig van :wink:
Probeer het in elkaar te draaien en als je er niet uit komt dan post je je sketch hier en helpen we je verder!

Stealth0113:
Probeer eens Servo Knob en Serial Read eens met elkaar te combineren.

Wat je wilt doen is vrij simpel, maar ik ga je niet de kant en klare code geven want daar leer je weinig van :wink:
Probeer het in elkaar te draaien en als je er niet uit komt dan post je je sketch hier en helpen we je verder!

Inderdaad :smiley:
Met vriendelijke groet
Jantje

alvast bedankt voor de tips
ik ga zeker dit uitproberen binnen enkele dagen

Ik weet dat het niet veel is maar ik weet niet wat ik nog moet invoegen om het te laten werken.
Ik zou dus willen hebben dat ik via de serial monitor een servo.write() uitvoer.
Met aan andere woorden dat ik in de serial monitor kan invoegen hoeveel de servo moet draaien.
Dit is dan het programma

#include <Servo.h>

Servo myservo;
void setup()
{
myservo.attach(10);
Serial.begin(9600);

}

void loop()

Dan moet je eens googelen hoe een seriele verbinding te maken of ff kijken bij de voorbeelden.
Als je een seriele terminal koppeling gebruikt, zul je de karakters om moeten zetten tot een getal.
Volgens mij is er wel een voorbeeld hoe een seriele koppeling tot stand te brengen.

Met de serial monitor is het makkelijkst met karakters te werken. bijvoorbeeld v voor 1 vooruit, V voor 10 vooruit , a voor 1 achteruit, A voor 10 achteruit, 0 voor naar 0 positie en m voor naar maximaal positie.
Met vriendelijke groet
Jantje

bedankt voor de reacties

Jantje:
Met de serial monitor is het makkelijkst met karakters te werken. bijvoorbeeld v voor 1 vooruit, V voor 10 vooruit , a voor 1 achteruit, A voor 10 achteruit, 0 voor naar 0 positie en m voor naar maximaal positie.
Met vriendelijke groet
Jantje

Je kan toch gewoon een getal ingeven via serieel (0-180) en deze als servo positie houden? Lijkt me in het begin makkelijker dan jou oplossing...

Dit zou moeten werken. Ik heb het in elkaar geplakt op een tablet dus foutje is snel gemaakt...

Succes

#include <Servo.h> 
 
Servo myservo;  

int val;    
 
void setup() 
{ 
  Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
  myservo.attach(9);     // attaches the servo on pin 9 to the servo object 
} 
 
void loop() 
{

if (Serial.available() > 0) {
               val = Serial.read();

  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // waits for the servo to get there 
}
}

iedereen echt waar bedankt en als ik thuis ben ga ik meteen het programma is proberen

Is het nog gelukt?

Beetje jammer dat je nu toch het werk voor hem hebt gedaan.
Nou is het zo te zien (aan de commentaren) wel een beetje aan elkaar geplakt zoals je zelf ook zegt, maar er is hier weinig geleerd door wouter25 die zo te zien ervoor heeft gekozen zijn eerste projectje gelijk een servo te willen bedienen.
Ik hoop dat wouter25 inmiddels al thuis geweest is, en het is wel tekenend om niet te zien hoe het is afgelopen.

Wanneer wouter25 dit leest, mag ie best wel even melden of het gelukt is en of dit nou is wat ie wil.
Dan mag ie ook vertellen wat ie de servo laat doen als de ingave "hger" is, of 965.

Het is inderdaad niet echt handig om een kant en klare code te posten, maar als hij alleen maar een lege void loop post en niet snapt hoe verder gaat het ook niet goed komen... hopelijk leert hij nu van het script en snapt ie wat er gebeurd.

Het wordt voor de OP dan wel heel verwarrend als de code niet doet wat de poster zegt wat de code doet.

Dan mag ie ook vertellen wat ie de servo laat doen als de ingave "hger" is, of 965.

Of met andere woorden: hoe zend je 0-180 over de serial port met de geposte code?
Jantje

De die ik gepost heb is toch gewoon goed Jantje? Je kan via de serial monitor toch gewoon 0 t/m 180 ingeven?

Wat beter was geweest is om even een check in te bouwen of die niet al op de de gegeven "val" staat zodat ie niet continu de servo staat aan te sturen. Maar voor de rest lijkt met het een prima script om mee te beginnen voor Wouter.

Dat is vermoedelijk wel zo (ik heb zelf nog niet gespeeld met seriële verbindingen naar de Arduino en dus weet ik niet of je de ASCII eerst moet vertalen naar een waarde).
De seriële monitor van de IDE laat je namelijk wat intypen, maar zendt het pas wanneer je op het "send" knopje drukt.
Het is dan aan de gebruiker om een correcte waarde in te typen, maar daar is geen enkele garantie op.
Wanneer de verbinding van iets anders als de IDE monitor komt, zal de data die ontvangen word waarschijnlijk live worden verzonden en zie je losse cijfers aankomen in plaats van een getal.
Je zult in dat geval dus moeten controleren wat er binnen komt, of de invoer al klaar is en of dat een getal is dat bovendien binnen de range valt.
Daarna is het pas slim om de servo aan te gaan sturen met dat getal, eventueel na gecontroleerd te hebben of die waarde al naar de servo verzonden is (en dus niet herhaald hoeft te worden, wel zo netjes).

Natuurlijk zijn dit soort dingen ook te leren als je de code eenmaal klaar hebt en het doet wat je wil totdat er een andere gebruiker (met een andere pc) ermee wil spelen en het ineens niet meer blijkt te werken, waardoor er een "hufter proof certificaat" verdiend moet worden door aanpassing van de code.
Wouter25 kan ook nu al leren dat je er altijd rekening mee moet houden dat er wat anders binnenkomt over de communicatie, en dat je daar dus ook naar moet kijken omdat er anders hele "interessante" zaken kunnen gebeuren.

ja sorry voor het laat reageren (drukke stage gehad).
het werkt maar ik heb een continuous servo dus hij blijft draaien.