Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Raadplaatje door Bob11
Vandaag om 12:02:07
Klein mobiel ontwerp met thema stadsmuren door Slotticar
Vandaag om 12:00:14
Wat was jullie allereerste loc? door Klaas Zondervan
Vandaag om 11:58:43
ByPass Junction, een Amerikaanse modelbaan in N door RobVille
Vandaag om 11:56:38
La Fabrique des petits réseaux (1:87) door tothebeach
Vandaag om 11:49:18
Module vliegveld Jan van Mourik door MOVisser
Vandaag om 11:43:49
Heroplage Artitec Plan W? door 1200blauw
Vandaag om 11:41:23
Modules van Kees Gorter (vervolg) door grossraumwagen
Vandaag om 11:32:43
Tams app door Ronaldk
Vandaag om 11:26:43
Zolderbaan 2025 door MOVisser
Vandaag om 11:23:39
Fleischmann Anna ombouw. door puntenglijder
Vandaag om 11:13:35
Het einde van de RhB- Chiavenna Stazione Merci door Hollandserhbfan
Vandaag om 11:09:31
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 10:03:46
Toon hier je nieuwe (model-) spooraanwinst(en)... door Karben
Vandaag om 09:36:30
Trix BR94 ontspoort door meino
Vandaag om 09:33:03
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door JohanDC
Vandaag om 09:02:10
Edelweisz in model door 1200blauw
Vandaag om 09:00:03
Nederland jaren 50 op basis van mijn roots door spoorijzer
Vandaag om 08:49:01
De projecten van Ruben (NL H0) door spoorijzer
Vandaag om 08:48:13
US diorama in H0 door jan47
Vandaag om 00:07:21
BR-18.6 Schaal-0. door FritsT
10 August 2025, 23:45:43
Sfeer op je modelbaan door Floris Dilz
10 August 2025, 23:30:18
Open huis VAMES Modelspoorclub Apeldoorn door hmmglaser
10 August 2025, 23:22:18
Artikelen over de CIWL in Spoorwegjournaal door sncf231e
10 August 2025, 23:18:36
Mooi weer om buiten te spelen door sncf231e
10 August 2025, 23:09:44
Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
10 August 2025, 22:28:23
Vaste baan door GertW
10 August 2025, 22:24:00
Open huis VAMES Modelspoorclub Apeldoorn door GertW
10 August 2025, 22:09:16
booster vraag door maartenvdb
10 August 2025, 22:06:57
Station Roodeschool door Casmir
10 August 2025, 21:59:14
  

Auteur Topic: Arcomora en mijn begrip van Arduino  (gelezen 8569 keer)

bask185

  • Offline Offline
  • Berichten: 5009
Re: Arcomora en mijn begrip van Arduino
« Reactie #15 Gepost op: 29 August 2020, 20:13:42 »
Citaat
As je het vervelend vindt dat ik je blijf storen, moet je het maar zeggen, dan zoek ik een andere manier. Moet me zeker gaan verdiepen in de Arduino programmeertaal.
Nee joh doe niet zo gek, ik help je met plezier. vin'k leuk  :laugh:

Ik heb je de verkeerde links gestuurd  :o , I'm sorry normaal zet ik mensen niet op een dwaalspoor  :-[. Die adafruit dingen zijn waardeloos die zijn er om een ander apparaat aan te sturen
Citaat
Waar vind ik die SweepServo.h
Je moet dus deze en en deze hebben.

Je kan met de xxxx.setState() functie dus de servo de ene kant en de andere kant opsturen door een 1 of een 0 tussen de () haken te zetten. Je kan dit dus makkelijk koppelen aan een input zoals in het voorbeeld.

Citaat
Moet me zeker gaan verdiepen in de Arduino programmeertaal. Het zo'n 40 jaar geleden dat ik echt geprogrammeerd heb (TurbBasic en Z80 machinetaal)
Ik heb btw een tweetal docu's op internet staan die het een en ander uitleggen over C en gedeeltelijk over C++ (de taal waarin we arduino's programmeren). Deel 1 is echt puur uitleg over de taal, en deel 2 gaat meer over hoe je het best (m.i.) je processen kan coderen, dat gaat meer over state-machines en structuur e.d. Ik zou zeggen lees ze een keer door, het is een vrij complete basis maar je hoeft niet alles te snappen dus laat pointers of structs je vooral niet afschikken:
Deel 1
Deel 2

Mvg,

Bas




Train-Science.com
Train-Science github
It ain't rocket science ;-)

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #16 Gepost op: 29 August 2020, 20:51:29 »
Fijn dat je me wil helpen Bas.

Dat je de verkeerde link stuurde vind ik een bewijs dat je menselijk bent  ;) .
En leuk ook nog dat je mijn schrijffouten subtiel verbeterde.
Ik heb de nieuwe library gedownload en ga deze eens proberen.

In de eerste code zat op regel 94 nog een foutje. Na verbeteren werken nu beide servo's.
Ik ben blij dat je die library gemaakt hebt. Anders had ik toch verschillende keren hetzelfde stuk code moeten toevoegen. Voor elke servo een keer.

Bedankt voor de documenten. Ik ga ze doornemen.

Fijn  weekend en bedankt.
Ron

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #17 Gepost op: 29 August 2020, 21:20:40 »
Hallo Bas,

Ben ik weer.
Ik krijg foutmeldingen wanneer ik de code compileer.

Compiling sketch...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -std=gnu++11
-fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics
-Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L
-DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR
"-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino"
"-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard"
"-IC:\\Program Files (x86)\\Arduino\\libraries\\Servo\\src"
"C:\\Users\\Ron\\AppData\\Local\\Temp\\arduino_build_636335\\sketch\\servoSweep.cpp.cpp"
-o "C:\\Users\\Ron\\AppData\\Local\\Temp\\arduino_build_636335\\sketch\\servoSweep.cpp.cpp.o"

servoSweep.cpp:74:6: error: prototype for 'void ServoSweep::setState(uint8_t)' does not match any in class 'ServoSweep'

 void ServoSweep::setState( uint8_t _state ) {

      ^~~~~~~~~~

In file included from C:\Users\Ron\stack\_Ron\Modeltrein\Arduino\_Voorbeelden\NewServo+Library\servoSweep.cpp:8:0:

C:\Users\Ron\AppData\Local\Temp\arduino_build_636335\sketch\ServoSweep.h:10:10: error: candidate is: void ServoSweep::setState(bool)

     void setState( bool _state );

          ^~~~~~~~

In file included from C:\Users\Ron\stack\_Ron\Modeltrein\Arduino\_Voorbeelden\NewServo+Library\NewServo+Library.ino:1:0:

C:\Users\Ron\AppData\Local\Temp\arduino_build_636335\sketch\ServoSweep.h:4:7: error: redefinition of 'class ServoSweep'

 class ServoSweep {

       ^~~~~~~~~~

In file included from C:\Users\Ron\stack\_Ron\Modeltrein\Arduino\_Voorbeelden\NewServo+Library\servoSweep.cpp:8:0:

C:\Users\Ron\AppData\Local\Temp\arduino_build_636335\sketch\ServoSweep.h:4:7: note:
previous definition of 'class ServoSweep'

 class ServoSweep {

       ^~~~~~~~~~

Using library Servo at version 1.1.6 in folder: C:\Program Files (x86)\Arduino\libraries\Servo

exit status 1

prototype for 'void ServoSweep::setState(uint8_t)' does not match any in class 'ServoSweep'


Geen idee waar ik het zoeken moet.

mvg Ron
« Laatst bewerkt op: 29 August 2020, 21:49:51 door Reinout van Rees. Reden: Paar regels afgebroken omdat het forum erdoor opgerekt wordt »

bask185

  • Offline Offline
  • Berichten: 5009
Re: Arcomora en mijn begrip van Arduino
« Reactie #18 Gepost op: 29 August 2020, 21:37:15 »
Sorry ik zie de fout, ik zou zwerend at ik hem al opgelost had.

De compiler zegt dat hij de functie setState met uint8_t als argument niet kan vinden. Dat is correct omdat er in de header file (.h bestand) staat:
void setState( bool _state );

Dat moet worden:
void setState( uint8_t _state );

Ik heb als het goed is de library op de github pagina aangepast. Excuses alweer  ::)

Een fijne avond,

Bas

P.S. Je post heeft deze pagina gesloopt  ;D. Als je een te lange regel plaats tussen de code blocks dan krijg je dus fenomeen
« Laatst bewerkt op: 29 August 2020, 21:42:37 door bask185 »
Train-Science.com
Train-Science github
It ain't rocket science ;-)

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #19 Gepost op: 30 August 2020, 11:43:32 »
Goedendag Bas,

Ik heb de code kunnen compileren. Tenminste, nadat ik mijn directory en INo file name had veranderd. Er zat een + in. Windows kan daar tegen, de compiler niet.
Moet regel 16 ook n iet veranderd worden van
bool state ;in
uint8_t state ;?

Verder initialiseerd de Arduino wel. De servo draait eerst als een gek tegen het einde van het draaimoment aan, om daarna de juiste positie te kiezen.

Als ik het goed begrijp moet je dus een 1 (5v) of een 0 (0V) aanbieden op pin 12. Dat doet nu nog niets.
Vandaag eens kijken of ik e.e.a. aan de praat kan kriigen.

Bedankt voor je input.

mvg Ron
« Laatst bewerkt op: 30 August 2020, 11:48:08 door ron.kraaijkamp »

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #20 Gepost op: 30 August 2020, 12:04:56 »
Nu voor servoPin 4 genomen, dan gaat de servo niet zo tekeer.
Op 13 zit ook de LED van het board. En die zie je een paar keer knipperen bij het versturen van de gecompileerde code.

  pinMode(inputButton, INPUT);toegevoegd om pin 12 als input te definieren. Niet dat het wat uitmaakt.
Ik zoek verder.

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #21 Gepost op: 30 August 2020, 12:45:24 »
Mijn input werkt nu. Voor de duidelijkheid stuur ik de status naar de seriele monitor.
Afhankelijk van waar ik de inputButton (12) aansluit, zie ik bij 5V een 1 verschijnen. En biji 0V een nul.

De servo doet (nog) niets.
Op naar de volgende stap.

ikbenerevenniet

  • Offline Offline
  • Berichten: 379
Re: Arcomora en mijn begrip van Arduino
« Reactie #22 Gepost op: 30 August 2020, 14:31:12 »
pinMode(inputButton, INPUT);

Maakt idd. geen verschil, omdat de modus "INPUT" de default is. Maar goed om toch te schrijven, dat komt de leesbaarheid van je code ten goede.

Vraagje: hoe is de inputButton aangesloten? Afhankelijk daarvan is het nl. misschien beter om pinMode(inputButton, INPUT_PULLUP); toe te passen? (Dat is als de button eenzijdig aan de 0 volt ligt.)

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #23 Gepost op: 30 August 2020, 15:04:09 »
Vraagje: hoe is de inputButton aangesloten? Afhankelijk daarvan is het nl. misschien beter om pinMode(inputButton, INPUT_PULLUP); toe te passen? (Dat is als de button eenzijdig aan de 0 volt ligt.)

Dank Erik,

Op het moment sluit ik de input pin of op de 5V, of op de 0V. In de serial monitor (heb ik toegevoegd om iets te kunnen zien) zie ik dat ook terug.
Afhankelijk van de 5 of 0 volt zie ik een 1 of 0  in de monitor.
De servo doet nog niets.

Ben even wat anders gaan doen. Anders blijf ik in rondjes denken.


Verzonden vanaf mijn iPhone met Tapatalk

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #24 Gepost op: 30 August 2020, 15:42:06 »
Ik heb nu

pinMode(inputButton, INPUT_PULLUP);
en dat is nog eenvoudiger dan een pull up weerstand.

bask185

  • Offline Offline
  • Berichten: 5009
Re: Arcomora en mijn begrip van Arduino
« Reactie #25 Gepost op: 30 August 2020, 16:30:34 »
Ok nu ben ik het zat  >:(! Ik heb de oscilloscope gepakt om te kijken wat er nu misgaat.

Ik heb niet 1 maar wel 2 dingen ontdekt die niet klopten. In de sweep library gebruikte ik een private Servo object om de motor mee aan te sturen vanuit de library. Ik weet nog niet waarom maar dat werkt niet om een of andere duistere reden.

Ik had ook een fout gemaakt met een lokale variabele (currentTime) in de sweep method zelf. Ik heb deze variabele verwijdert en vervangen naar een call naar millis().

Ik heb de libraries op de github aangepast die moet je opnieuw downloaden. Ze werken nu ook iets anders
Dit wordt de nieuwe sketch:
#include "ServoSweep.h"
#include "Servo.h"

const int interval = 3000 ;

const int servoPin1 = 2 ;
const int servoPin2 = 3 ;

Servo servoMotor1 ;
Servo servoMotor2 ;

//                       min max speed frogJuicer pin
ServoSweep servoControl1( 10, 150, 50, 13) ;
ServoSweep servoControl2( 9,  150, 10, 12) ;

void setup() {
    Serial.begin( 115200 ) ;
    Serial.println(" hello world ");

    servoMotor1.write( 90 ) ;
    servoMotor2.write( 90 ) ;
    servoMotor1.attach( 2 ) ;
    servoMotor2.attach( 3 ) ;

    delay(100);

}

void loop() {

    uint8_t servoPos ;

    servoPos = servoControl1.sweep();
    if( servoPos ) {
        servoMotor1.write( servoPos ) ;
        Serial.println( servoPos ) ;
    }

    servoPos = servoControl2.sweep();
    if( servoPos ) {
        servoMotor2.write( servoPos ) ;
        Serial.println( servoPos ) ;
    }

    byte b = Serial.read() ;
    if( b == 'L') servoControl1.setState( 1 ) ;
    if( b == 'l') servoControl1.setState( 0 ) ;

    if( b == 'R') servoControl2.setState( 1 ) ;
    if( b == 'r') servoControl2.setState( 0 ) ;
}
Het verschil zit in de sweep functie zelf. Voorheen deed deze functie de servo aan sturen, althans ik wilde dat hij dat deed. Nu retourneert de functie de servo positie.  Als de geretourneerde waarde ongelijk is aan 0, dan moet de servo naar een nieuwe positie.
Met
servoPos = servoControl1.sweep();
Haal ik een eventuele nieuwe  positie op
En met
if( servoPos ) {
kijk ik of de waarde iets anders is dan 0. Zo ja, dan wordt de if statement uitgevoerd en wordt:
servoMotor1.write( servoPos ) ;
de motor aangestuurd.

Ik ben nog niet tevreden met hoe de code er uit zien. We kunnen de sweep objecten en servo objecten nog aan elkaar koppelen door middel van for-loops. Dat is fijn als je er meer dan 2 wilt aansturen. Ik meen dat je met een UNO 6 servo's tegelijk kan aansturen, als je er nog meer probeert dan gaat de millis() functie misschien raar doen.

Deze code werk wel... deze keer. 3 keer is immers scheepsrecht en ik kan ook maar zoveel fout doen  :laugh:

Ik ga even op internet rondvragen waarom mijn originele library niet werkte.

Mvg,

Bas
« Laatst bewerkt op: 30 August 2020, 16:35:03 door bask185 »
Train-Science.com
Train-Science github
It ain't rocket science ;-)

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #26 Gepost op: 30 August 2020, 16:53:17 »
Hahaha, Ik hoop dat je mij niet zat bent.

In ieder geval werkt het nu goed.
Ik ga eens kijken of ik de boel met toetsen (niet die van de het keyboard) aangesloten op de Arduino de servo's kan omzetten.

Ik ben van plan 10 wissels in mijn schaduw station ermee te bedienen. Kwestie van twee Arduino's.
Voor de boven baan moet nog eens kijken hoeveel ik nodig heb.

Bedankt voor al je moeite.

bask185

  • Offline Offline
  • Berichten: 5009
Re: Arcomora en mijn begrip van Arduino
« Reactie #27 Gepost op: 30 August 2020, 17:12:44 »
Citaat
Ik hoop dat je mij niet zat bent
Nee, nog niet hoor  :P

Citaat
Ik ben van plan 10 wissels in mijn schaduw station ermee te bedienen. Kwestie van twee Arduino's.
So much to learn, this one has  ;D

Die 'verkeerde' library die ik je per toeval opstuurde, die is per toeval gemaakt om om dit apparaat aansluiten:
Klik mij.
Dit is een spotgoed servo driver board die je met 4 draden op je arduino kan aansturen. 5V, ground, A4 en A5. Dit boardje kan probleemloos 16 servo's aansturen en kost onder de 5 euro. Natuurlijk zijn ze voor 3 euro te vinden in China.

Wat ook wel een bijkomend voordeel is. Nu de servo sweep library slechts de posities uitrekent, ben je niet meer gedwongen om Arduino's servo library te gebruiken. Je kan dus die ene adafruit library gebruiken met dat pca9685 boardje in combinatie met de sweep library.

Echter als we het hebben over 5 wissels links en 5 wissels rechts met daartussen meer dan een meter spoor dan doe je er nog steeds goed aan om 2 losse arduino's te gebruiken ivm met storingen op de kabels. Als je echter 1 wisselstraat hebt waar alle 10 wissels in liggen, dan raad ik dit boardje aan.


Dan is er nog een interessant punt over het aansturen van de arduino. Je kan natuurlijk 10 wipwap schakelaars op dat ding aansluiten en je wissels individueel aansturen. Ik heb persoonlijk de pest aan het aansturen van losse wissels en daarom schakel ik complete wisselstraten.

Als je 6 sporen heb dan kan je ipv de 10 wip waps 6 drukknopjes gebruiken. Met deze drukknopjes kan je een weerstandsdeler maken die je op een analoge pin op een arduino kan inlezen. Ipv de wissels, schakel je dan de complete straat. Die wissels die dan omgezet moeten worden, zullen allemaal naar de goede positie sweepen.

Je gebruikt dan 1 input op de arduino en je kan hem ook nog dubbel bedraden naar 2 arduino's indien nodig. Is dit misschien een idee voor je?

Mvg,

Bas
Train-Science.com
Train-Science github
It ain't rocket science ;-)

ron.kraaijkamp

  • Offline Offline
  • Berichten: 272
    • Mijn baan in opbouw op 2RSweb
Re: Arcomora en mijn begrip van Arduino
« Reactie #28 Gepost op: 30 August 2020, 18:44:48 »
So much to learn, this one has  ;D
Dat is voor mij niet anders. Al ben ik nu 61 jaar jong.

Die 'verkeerde' library die ik je per toeval opstuurde, die is per toeval gemaakt om om dit apparaat aansluiten:
Klik mij.
Dit is een spotgoed servo driver board die je met 4 draden op je arduino kan aansturen. 5V, ground, A4 en A5. Dit boardje kan probleemloos 16 servo's aansturen en kost onder de 5 euro. Natuurlijk zijn ze voor 3 euro te vinden in China.
Op het moment gebruik ik deze (makkelijk aansluiten):


En heb deze ook nog liggen (uit China):
2-Way Motor and 16-Weg Servo Motor Drive Board

Wat ook wel een bijkomend voordeel is. Nu de servo sweep library slechts de posities uitrekent, ben je niet meer gedwongen om Arduino's servo library te gebruiken. Je kan dus die ene adafruit library gebruiken met dat pca9685 boardje in combinatie met de sweep library.
Dat boardje stuur je dan aan via I2C?

Echter als we het hebben over 5 wissels links en 5 wissels rechts met daartussen meer dan een meter spoor dan doe je er nog steeds goed aan om 2 losse arduino's te gebruiken ivm met storingen op de kabels. Als je echter 1 wisselstraat hebt waar alle 10 wissels in liggen, dan raad ik dit boardje aan.
Dit wordt mijn schaduw station:

Inmiddels zijn de wissels W021* weggehaald. Zag er het nut niet van gezien het korte stuk aan de rechter onderzijde van die wissels.

Misschien heb ik er wel 3 nodig. De twee wissels links boven en die rechtsboven liggen zo'n 160 cm uit elkaar.
De meeste wissels zijn electrische. Behalve de twee link boven. Ik denk dat ik de elektrische verander in servo aangedreven modellen. Het is allemaal oud spul, dus kan met een gerust hart experimenteren. Of ik stuur ze toch elektrisch aan (met twee MOSFET printjes ertussen). Dat heb ik al werkend gekregen in mijn initiele code. Ik weet het nog niet. Met servo's werken is wel subtieler.

Dan is er nog een interessant punt over het aansturen van de arduino. Je kan natuurlijk 10 wipwap schakelaars op dat ding aansluiten en je wissels individueel aansturen. Ik heb persoonlijk de pest aan het aansturen van losse wissels en daarom schakel ik complete wisselstraten.

Als je 6 sporen heb dan kan je ipv de 10 wip waps 6 drukknopjes gebruiken. Met deze drukknopjes kan je een weerstandsdeler maken die je op een analoge pin op een arduino kan inlezen. Ipv de wissels, schakel je dan de complete straat. Die wissels die dan omgezet moeten worden, zullen allemaal naar de goede positie sweepen.

Je gebruikt dan 1 input op de arduino en je kan hem ook nog dubbel bedraden naar 2 arduino's indien nodig. Is dit misschien een idee voor je?
Dat heb ik ook getest aan de hand van de ASAR code. Je ziet op de foto nog een overblijfsel van de test. Werkt ook goed. Zou ik ook kunnen gebruiken.
Ik ben zelf gaan experimenteren om enig inzicht te krijgen in de materie. Daar moet ik nog aan werken, heb je wel gemerkt.
En eventueel dus elektrische wissels aan te sturen. Daar moet ik nog over denken.

Bedankt voor het meedenken.
mvg,
Ron

bask185

  • Offline Offline
  • Berichten: 5009
Re: Arcomora en mijn begrip van Arduino
« Reactie #29 Gepost op: 31 August 2020, 10:05:43 »
Citaat
Dat boardje stuur je dan aan via I2C?
Yep  (y)

Ik heb ontdekt waarom mijn library de eerste keer niet werkte. Het is een beetje ingewikkeld verhaal. Het programma wat je ziet in de .ino is niet het hele verhaal. Onderhuids gebeuren er nog meer dingen zoals de init() functie. Arduino's init() krijg je niet te zien, maar deze initialiseert alle hardware zoals de timers. Deze functie zorgt er  o.a. voor dat de millis() functie werkt.

Deze regel:
ServoSweep motor1(pin, min, max, tijd);
roept de zgn. constructor aan. Het object wordt dan aangemaakt. Je kan de constructor gebruiken om alle variabelen die te maken hebben met dat object te initialiseren. Dat doen we dus met pin nummer, min stand, max stand en de beweeg tijd. Wat je niet mag doen in deze constructor is ook hardware dingen initialiseren. De constructor wordt namelijk uitgevoerd voordat de init() functie wordt uitgevoerd.

En wat ik dus fout deed, was in de constructor deze regels aanroepen:
servo.write( middlePos ) ;
servo.attach( pin ) ;

De attach functie die stelt timer 1 in om de servo motors aan te sturen. Maar als vervolgens init() wordt aangeroepen door arduino dan wordt timer 1 weer helemaal vernaggeld.

De oplossing was om de attach() functie uit de constructor te halen en om een nieuwe functie te maken (.begin() ) die je in de void setup() aanroept.

void setup() wordt namelijk uitvoerd na de init() functie is uitgevoerd. Zodoende wordt servo.attach() ook na de init() uitgevoerd en zou het goed moeten gaan.

Ik heb de library nu zo aangepast dat de libary alleen gebruik maakt van de servo.h library als je een pinnummer invoert in de constuctor die ongelijk is aan 255. De sweep functie retourneert namelijk ook nog steeds de positie zodat je dus ook een andere servo aansturing zou kunnen gebruiken zoals bijvoorbeeld die pca9685.

Als je dus bijvoorbeeld pinnummer 2 gebruik, wordt pin 2 direct gebruikt voor een servo motor en hoef je eigenlijk niks te doen met de return waarde van .sweep().

Wat ik fout deed, is een echte typische 'rookie mistake'. Zo zie je maar dat ook ik nog het een en andere kan leren  :police:
Ik heb bijvoorbeeld ook geleerd om eerst vanavond de library te testen met m'n oscilloscoop voordat ik beweer "het zou moeten werken"  ;D

De pauze is weer voorbij, dus een fijne dag verder,

Bas





Train-Science.com
Train-Science github
It ain't rocket science ;-)