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.
Waar vind ik die SweepServo.h
Moet me zeker gaan verdiepen in de Arduino programmeertaal. Het zo'n 40 jaar geleden dat ik echt geprogrammeerd heb (TurbBasic en Z80 machinetaal)
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 1prototype for 'void ServoSweep::setState(uint8_t)' does not match any in class 'ServoSweep'
void setState( bool _state );
void setState( uint8_t _state );
bool state ;
uint8_t state ;
pinMode(inputButton, INPUT);
pinMode(inputButton, INPUT_PULLUP);
Vraagje: hoe is de inputButton aangesloten? Afhankelijk daarvan is het nl. misschien beter om Code: [Selecteer]pinMode(inputButton, INPUT_PULLUP); toe te passen? (Dat is als de button eenzijdig aan de 0 volt ligt.)
#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 pinServoSweep 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 ) ;}
servoPos = servoControl1.sweep();
if( servoPos ) {
servoMotor1.write( servoPos ) ;
Ik hoop dat je mij niet zat bent
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
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?
Dat boardje stuur je dan aan via I2C?
ServoSweep motor1(pin, min, max, tijd);
servo.write( middlePos ) ;servo.attach( pin ) ;