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

Toon hier je nieuwe (model-) spooraanwinst(en)... door sncf231e
Vandaag om 10:03:59
Ervaringen met veilingsites enzo (Marktplaats, Ebay, Catawiki, etc). door René 4312
Vandaag om 09:52:09
19 Toen door Noud
Vandaag om 09:41:51
Postwagen Hbbkkss Schaal-0 door FritsT
Vandaag om 09:34:14
Raarrrr. Mobile Station 2 doet raarrrr… door bask185
Vandaag om 09:23:39
EifelBurgenBahn door Joz
Vandaag om 09:20:39
De bouw van mijn modelbaan in Thailand door 741230
Vandaag om 09:05:10
Mijn eerste H0-modeltreinbaan in aanbouw door 741230
Vandaag om 09:03:39
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 08:37:57
M.s.v. De Percee bouwt aan nieuwe clubbaan door Frits C
Vandaag om 06:45:46
Länderbahn en Reichsbahn locomotieven. door puntenglijder
13 June 2025, 23:53:36
ÖBB smalspoor in het Waldviertel. door NS264
13 June 2025, 23:27:04
ESU Loksound V4 Plux22 door Falkenberg
13 June 2025, 23:08:50
Tamiya kleur dak Bundesbahn door Benelux795
13 June 2025, 21:53:57
Bouw van de DE-5 uit een bouwset van FRIE door Rob Bennis
13 June 2025, 21:20:16
TEE treinstel krijgt nieuwe plaats na vertrek uit NTM door R1954
13 June 2025, 21:05:05
Toon hier je pas gereed gekomen (model-)spoorbouwsels ... door Frits C
13 June 2025, 20:20:25
US diorama in H0 door Wim Vink
13 June 2025, 19:33:48
Stalen D 4 deurs spoor 0 door FrankJ
13 June 2025, 19:33:40
Tips voor een natuurgetrouwe modelbaan door Eric B
13 June 2025, 19:28:04
Verschil in grootte huizen...... door MOVisser
13 June 2025, 19:14:19
Viesmann 5214 pendelautomaat vraag door MOVisser
13 June 2025, 19:00:15
Ombouw Hornby LMS Class 2P 4-4-0 naar NS 2100 door MathynK
13 June 2025, 18:42:35
Reactiveren van de 0N30 Mumby Lumber baan (ex-JD) by Ronald door Frank 123
13 June 2025, 17:09:57
Roco gebogen wissels 2,5 mm door VictorPM
13 June 2025, 16:12:21
Kwaliteit Piko hondekop vs hondekop uit startset door Besselspoor
13 June 2025, 16:05:32
Bentheimer Eisenbahn, gisteren, vandaag en morgen. door Eric v C
13 June 2025, 16:03:36
Ervaringen met bezorgdiensten (PostNL, DHL, etc) door MOVisser
13 June 2025, 15:15:57
Piko 2025 door VAM65
13 June 2025, 14:54:44
Roco 290 digtaliseren door Tijdperk||
13 June 2025, 12:40:49
  

Auteur Topic: Arduino: servo met LED. Fade in-uit werkt niet.  (gelezen 1945 keer)

Sven

  • Offline Offline
  • Berichten: 8291
  • Eton Wick, UK
    • Ga naar de Tramfabriek
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #15 Gepost op: 01 January 2024, 22:59:58 »
Dat werkt. Ik dacht er aan om dat eerder aan te geven of de pin wel klopte, want ik had gelezen over het verschil tussen digitaal en PWM, maar omdat de dimmende LED werkte met het testbestand op pin 9 dacht ik dat het wel moest werken.

Nu moet ik alleen de richting omkeren.
Backer & Rueb stoomtrams in 1:87 op www.tramfabriek.nl.
Volg mijn bouwactiviteiten op Facebook.

bask185

  • Offline Offline
  • Berichten: 4910
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #16 Gepost op: 01 January 2024, 23:12:10 »
richting van de servo of de led?
Train-Science.com
Train-Science github
It ain't rocket science ;-)

Sven

  • Offline Offline
  • Berichten: 8291
  • Eton Wick, UK
    • Ga naar de Tramfabriek
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #17 Gepost op: 02 January 2024, 01:44:50 »
Servo. Ik heb het voor elkaar gekregen door de verschillende dingen om te draaien en aan te passen. Het werkt, dus ik neem aan dat ik dat goed gedaan heb (zie onder).

Iedereen bedankt voor de snelle hulp! Als ik het ingebouwd heb, zal ik het laten zien.

#include <Servo.h>

Servo servo ;

int     pos        = 0 ;
int     dutyCycle  = 0 ;

const int servoPin = 8 ;
const int ledPin   = 11 ;

const int fadeDelay        = 10 ;
const int servoDelay       = 15 ; // Snelheid van servo in beide richtingen
const int servoLowerDegree = 100 ;
const int servoUpperDegree = 140 ;

int servoLowerUs ;
int servoUpperUs ;

enum states
{
  fadeIn,
  moveServoIn,
  fadeOut,
  moveServoOut
} ;

uint8_t state = fadeIn ;

void setup()
{
  servo.attach(servoPin);  // attaches the servo on pin 8 to the servo object
  pinMode( ledPin, OUTPUT ) ;

  servoLowerUs = map( servoLowerDegree, 0, 180, 1000, 2000 ) ; // Dit schaalt de gewenste graden om naar de corresponderende tijd in uS
  servoUpperUs = map( servoUpperDegree, 0, 180, 1000, 2000 ) ;

}

void loop()
{
  int i ;
 
  switch( state )
  {
 
  case fadeOut:
    for( i = 255 ; i > 0 ; i -- )
    {
      analogWrite(ledPin, i);
      delay(fadeDelay) ;
    }
    state = moveServoIn ;
    break ;

  case moveServoIn:
    for( i = servoLowerUs ; i < servoUpperUs ; i ++ )
    {
      servo.writeMicroseconds(i) ;
      delay(servoDelay) ;
      // delayMicroseconds(servoDelay) ;
    }
    state = fadeIn ;
    break ;

  case fadeIn:
    for( i = 0 ; i < 255 ; i ++ )  // 1 stapje per keer is beter, kleinere stapgrootte
    {
      analogWrite(ledPin, i);
      delay(fadeDelay) ;
      // delayMicroseconds() ; // dit kan ook, dit is een delay in uS zoals de naam al zegt..
    }
    state = moveServoOut ;
    break ;
   
  case moveServoOut:
    for( i = servoUpperUs ; i > servoLowerUs ; i -- )
    {
      servo.writeMicroseconds(i) ;
      delay(servoDelay) ;
      // delayMicroseconds(servoDelay) ;
    }
    state = fadeOut ;
    break ;
  }
}
Backer & Rueb stoomtrams in 1:87 op www.tramfabriek.nl.
Volg mijn bouwactiviteiten op Facebook.

rjr

  • Offline Offline
  • Berichten: 2045
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #18 Gepost op: 02 January 2024, 11:27:25 »

#4
Servo.write pakt alleen gehele getallen en geen floats. Behalve servo.write bestaat er ook servo.writeMicroseconds(). Deze geeft je een veel grotere resolutie, maar je moet niet het aantal graden invullen maar het aantal us dat de puls moet duren.

Bas

Ter info voor mezelf, gewoon even wat ik me dan afvraag:
Geeft dit niet een verloop van de stappen van de servo?
Als je aangeeft hoe lang iets moet lopen kun je toch kleine afwijkingen krijgen als de CPU ook andere zaken aan het doen is? Weet niet hoe nauwkeurig Arduino hier mee is.
Zal niet direct zichbaar zijn, maar misschien wel bij heel lang lopen, en wat hij verder allemaal moet uitvoeren.

Verder wel zeker interessant om te gebruiken, vond zelf de stappen met de servo ook al wat grof.

Groet,
Roelco

meino

  • Offline Offline
  • Berichten: 2312
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #19 Gepost op: 02 January 2024, 11:43:50 »
Ik weet niet of dat veel zin heeft. Mijn ervaring met servo's is dat ze vrij onnauwkeurig zijn kwa preciese positionering. Ik ben al blij als ze binnen een marge van (geschatte) 5graden ergens terechtkomen. Bij wissels niet zo'n probleem omdat ik er altijd een verend deel in de aandrijving heb, maar bij een seinarm blijft het me irriteren dat ik nooit een preciese stand kan bereiken. Wil je precies positioneren dan zul je met een stappenmotor moeten werken.

Groet Meino

bask185

  • Offline Offline
  • Berichten: 4910
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #20 Gepost op: 02 January 2024, 11:53:01 »
Een "servo" systeem is een motor systeem met terugkoppeling. Die kleine hobby servo's die wij gebruiken hebben ook terugkoppeling. Ze zullen altijd draaien naar de stand die jij met de arduino verstuurt. En daar blijven ze dan ook staan.

De pulsen worden gegenereerd op interrupts basis. Dat gebeurt op de achtergrond met redelijke exacte intervallen.

Die hobby servo's hebben verder geen snelheidsregeling, daarom laat je ze meestal 1 graad per tijdstapje opschuiven. Of in geval met writeMicrosconds doe je met kleinere stapjes voor een vloeiendere beweging.

Citaat
vond zelf de stappen met de servo ook al wat grof.
Eens. Maar het verschilt wel per toepassing. Voor een wissel is het prima, voor een overwegboom wat minder.  Ik heb in dit draadje 3j terug een paar filmpjes gemaakt. Ik kan me niet herinneren of ik toen al writeMicroseconds had gebruikt.

Ik heb ze zelf wel voor seinarmen gebruikt en ik was daar wel tevreden over.
https://youtu.be/gLNPEMmPiQg

Mvg,

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

Sven

  • Offline Offline
  • Berichten: 8291
  • Eton Wick, UK
    • Ga naar de Tramfabriek
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #21 Gepost op: 02 January 2024, 11:55:36 »
Ik heb een video van de actie gemaakt. Ik probeer alleen nog een stoppunt in te bouwen. Een wachtmoment voordat de actie herhaald wordt (een wachttijd of de druk van een knop). Dit moet worden geplaatst voor de LED die aan gaat. Ik heb geprobeerd een "delay(500) ;" in te bouwen, maar dat is merkwaardig genoeg lastiger dan ik zou denken. Het enige dat ik voor elkaar krijg is dat de LED de gehele tijd blijft branden. Waar moet dit moment?

Link: https://youtu.be/4YFzO81VgUw

<a href="https://youtube.com/v/4YFzO81VgUw" target="_blank" class="new_win">https://youtube.com/v/4YFzO81VgUw</a>
« Laatst bewerkt op: 02 January 2024, 12:02:11 door Sven »
Backer & Rueb stoomtrams in 1:87 op www.tramfabriek.nl.
Volg mijn bouwactiviteiten op Facebook.

meino

  • Offline Offline
  • Berichten: 2312
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #22 Gepost op: 02 January 2024, 12:16:11 »

Ik heb ze zelf wel voor seinarmen gebruikt en ik was daar wel tevreden over.
https://youtu.be/gLNPEMmPiQg


Ik heb ze zelf ook voor seinen gebruikt.
<a href="https://www.youtube.com/v/8-BYXuSmZZA" target="_blank" class="new_win">https://www.youtube.com/v/8-BYXuSmZZA</a>

Het bewegen van de armen gaat perfect. Alleen de eindstanden zijn nooit stabiel. Als ik die posities bepaald heb en dan zijn ze een paar dagen later alweer verlopen. Dat kan te maken hebben met temperatuur en zo, maar de eindstanden verlopen altijd bij mij. Dus  dat moet ik nog eens gaan aanpakken.

Groet Meino

bask185

  • Offline Offline
  • Berichten: 4910
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #23 Gepost op: 02 January 2024, 12:28:31 »
Het is ellendig dat die potmeter niet naar buiten is geleid. Het zou zo handig als je besturing kan zien wat de stand is.

Eric van C was bezig met die microsteppers voor armseinen. Dat is wellicht een uitkomst.

Ik heb in december nog een idee geplaatst over een DCC print waarin een servo en limit switches passen. Die stand kan je aanpassen door de servo in de print te verschuiven. Het is mijn hoop dat die limit switches tot constante eindposities lijden. Misschien dat 1 of 2 limit switches er bij iets voor je kunnen betekenen?


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

meino

  • Offline Offline
  • Berichten: 2312
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #24 Gepost op: 02 January 2024, 12:39:38 »
Bas

ik heb ook aan die microsteppers gedacht. Met stappenmotors heb ik ook ervaring (draaischijf). Die kun je heel precies laten bewegen. Nadeel is dat ze geen vast nulpunt hebben, voor een draaischijf geen probleem, die kun je makkelijk met een Hallsensor en een magneetje op de brug kalibreren, maar voor seinen wordt dat lastiger. Ik denk zelf nu aan een constructie met verenstaal en een fysieke begrenzing van de beweging. Een beetje analoog met de constructie van de wisselaandrijvingen die ik momenteel maak voor Kranenberg.

Groet Meino

bask185

  • Offline Offline
  • Berichten: 4910
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #25 Gepost op: 02 January 2024, 12:44:27 »
Citaat
Nadeel is dat ze geen vast nulpunt hebben
Je moet kijken naar die lineaire stappen dingen, niet die roterende. Die hebben al 2 fysieke eindpunten. Je kan hem bij opstarten zonder schade tegen een van zijn 0 punten aandraaien. Dan weet je zeker dat die 'thuis' staat en vanaf dat moment kan je verder.

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

bask185

  • Offline Offline
  • Berichten: 4910
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #26 Gepost op: 05 January 2024, 20:43:38 »
Wat die pause betreft.

Ik heb de code aangepast en voorzien van een nieuwe state genaamd 'pause'. De 'pauseTime' is een constante en die staat voor nu op 500ms voor Sven om aan te passen.

Tevens heb ik een extra input aangemaakt waarmee je de pause kan skippen. Die heet 'continuButton'. Die dien je aan GND te verbinden met een schakelaar. (als je die schakelaar wilt, that is)


#include <Servo.h>

Servo servo ;

int     pos        = 0 ;
int     dutyCycle  = 0 ;

long      prevTime ;

const int continuButton = 7 ;
const int servoPin = 8 ;
const int ledPin   = 11 ;

const int fadeDelay        = 10 ;
const int servoDelay       = 15 ; // Snelheid van servo in beide richtingen
const int servoLowerDegree = 100 ;
const int servoUpperDegree = 140 ;

int servoLowerUs ;
int servoUpperUs ;

const int pauseTime = 500 ;

enum states
{
  pause,
  fadeIn,
  moveServoIn,
  fadeOut,
  moveServoOut
} ;

uint8_t state = pause ;

void setup()
{
  servo.attach(servoPin);  // attaches the servo on pin 8 to the servo object
  pinMode( ledPin, OUTPUT ) ;
  pinMode( continuButton, INPUT_PULLUP ) ;

  servoLowerUs = map( servoLowerDegree, 0, 180, 1000, 2000 ) ; // Dit schaalt de gewenste graden om naar de corresponderende tijd in uS
  servoUpperUs = map( servoUpperDegree, 0, 180, 1000, 2000 ) ;

}

void loop()
{
  int i ;
 
  switch( state )
  {
  case pause:
    if( millis() - prevTime >= pauseTime        // if the time expires
    ||  digitalRead( continuButton ) == LOW )   // OR the button is pressed. Continu
    {
      state = fadeOut ;
    }
    break ;

  case fadeOut:
    for( i = 255 ; i > 0 ; i -- )
    {
      analogWrite(ledPin, i);
      delay(fadeDelay) ;
    }
    state = moveServoIn ;
    break ;

  case moveServoIn:
    for( i = servoLowerUs ; i < servoUpperUs ; i ++ )
    {
      servo.writeMicroseconds(i) ;
      delay(servoDelay) ;
      // delayMicroseconds(servoDelay) ;
    }
    state = fadeIn ;
    break ;

  case fadeIn:
    for( i = 0 ; i < 255 ; i ++ )  // 1 stapje per keer is beter, kleinere stapgrootte
    {
      analogWrite(ledPin, i);
      delay(fadeDelay) ;
      // delayMicroseconds() ; // dit kan ook, dit is een delay in uS zoals de naam al zegt..
    }
    state = moveServoOut ;
    break ;
 
  case moveServoOut:
    for( i = servoUpperUs ; i > servoLowerUs ; i -- )
    {
      servo.writeMicroseconds(i) ;
      delay(servoDelay) ;
      // delayMicroseconds(servoDelay) ;
    }
    state = pause ;
    prevTime = millis() ; // store current time for pause delay
    break ;
  }
}
[code]
Bovenstaande code compileert maar is ongetest.

Mvg,

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

Sven

  • Offline Offline
  • Berichten: 8291
  • Eton Wick, UK
    • Ga naar de Tramfabriek
Re: Arduino: servo met LED. Fade in-uit werkt niet.
« Reactie #27 Gepost op: 06 January 2024, 11:37:52 »
Brilliant, hartstikke bedankt. Als je straks ziet waar het voor is (en het werkt) ga je blij worden.  ;D
Backer & Rueb stoomtrams in 1:87 op www.tramfabriek.nl.
Volg mijn bouwactiviteiten op Facebook.