Go Down

Topic: 2 servo's met button (Read 588 times) previous topic - next topic

RomekvG

Hallo !,

Ik maak voor school een project waarbij ik twee servo's gebruik. het gaat om een soort garage poort die van twee kanten open gaat. Ik gebruik daarbij twee button's en twee servo's.
alleen ik loop vast. ik heb mijn code erbij gezet.

Het probleem is dat met een servo, ( dus zonder myservo1 ) hij het wel OK doet. hij beweegt als ik de button in druk. alleen met een tweede servo erbij gaat hij loops maken. dus hij negeert de drukknop.

Ik hoop dat iemand me kan helpen.

septillion

#1
Dec 06, 2016, 03:52 pm Last Edit: Dec 06, 2016, 03:53 pm by septillion
Het antwoord is dezelfde die dagelijks meerdere keren voorbij komt, gebruik geen delay(). Tijdens een delay() doet de Arduino HELEMAAL NIETS. Dus ja, ook niet reageren op de andere knop. Zie Blink without delay voor meer info.

En nog wat tips:

Zodra je variabelen nummers geeft is het tijd om over te schakelen op arrays ;) Bedoel, het is al idioot dat je een buttonPin en een buttonPin1 hebt...

Na een {, } of ; volt NOOIT meer code. Naar een nieuwe regel dus.

Code: [Select]

delay(50);                       // waits 15ms for the servo to reach the position

Als je commentaar het niet eens is met je code kan je deze net zo goed weg laten... En dit is niet de enige plek waar je dat doet. Ik probeer daarom de werkelijke getallen niet in het commentaar te werkeren.

Laat je code goed inspringen. Druk eens Ctrl + T in de Arduino IDE, zal er al een heel stuk overzichtelijker uit zien.

Maak ook voor de servo pinnen een const variabele ipv deze hard coded in je code te hebben.

Gebruik de kleinst mogelijke variabele. Dit omdat de Uno in totaal maar 2048 bytes geheugen heeft, daarna is het gewoon op.... Voor pin nummbers voldoet een byte dus. Daarnaast houd ik (en andere ook) ervan om const variabelen te laten beginnen met een hoofdletter om onszelf eraan te herinneren dat ze const zijn en we ze niet aan kunnen passen.
Code: [Select]

const byte ButtonPins[] = {2, 3};
const byte ServoPins[] = {9, 10}; //hoeft geen pwm pin te zijn ;)
Servo poortServos[]; //Dat ze van jou zijn weet ik, maar een naam wat ze doen/zijn is duidelijker ;)
Use fricking code tags!!!!
I want x => I would like x, I need help => I would like help, Need fast => Go and pay someone to do the job...

NEW Library to make fading leds a piece of cake
https://github.com/septillion-git/FadeLed

Go Up