Vraagje aan de Arduino gebruikers

Als je de interne pull up kunt uitschakelen kan je altijd een externe pull up naar 5v leggen.
 
Als je de interne pull up kunt uitschakelen kan je altijd een externe pull up naar 5v leggen.
Voor zover ik het begrijp wordt de pin met PWM geforceerd naar HIGH of LOW, er is geen sprake van of noodzaak voor een interne pullup. De enige manier om een 3,3V signaal naar 5V te brengen is met een externe transistor.
 
Denk dat ik er ben, deze schets laat de brandwijze continu veranderen net zoals bij de tester.
nu nog even aanpassen dat ie maar 1x loopt als ik op een knopje druk

#include <ESP32Servo.h>

static const int servoPin = 12;

Servo servo1;

void setup() {
Serial.begin(115200);
servo1.attach(servoPin);
}

void loop() {
for(int posDegrees = 0; posDegrees <= 180; posDegrees++) {
servo1.write(posDegrees);
Serial.println(posDegrees);
delay(20);
}

for(int posDegrees = 180; posDegrees >= 0; posDegrees--) {
servo1.write(posDegrees);
Serial.println(posDegrees);
delay(20);
}
}
 
Ter extra info, de 3V of 5V maken niets uit, Heb de servo tester op 3V gezet al staat er op ( 4.8 - 6V IN) hij blijft werken en .... ja hoor het zwaailicht veranderd dus ook op 3V.
Hierdoor was ik verder gaan zoeken naar andere manieren om een servo aan te sturen en kwam ik bij bovenstaand progje uit wat meteen werkte bij het testen.
Was dus gewoon een kwestie van try en error , om dit zelf te verzinnen ben ik nog een beetje te veel beginneling :)

toch van harte bedankt aan alle mee denkers,
groetjes Marc
 
aanpassen dat ie maar 1x loopt als ik op een knopje druk

Ik denk dat dit wel gaat werken:

Code:
const int Pushpin = 4; // drukknop aan pin 4 aansluiten, naar GND

void setup (){
  pinMode ( Pushpin, INPUT_PULLUP);
}

void loop () {
  while ( digitalRead (Pushpin) == 0); // while loop herhaalt totdat de drukknop losgelaten wordt
  delay (50); // wacht tot contactdender voorbij is
  while ( digitalRead (Pushpin) == 1); // while loop herhaalt totdat de drukknop ingedrukt wordt
  // etc.
}
 
Laatst bewerkt:
Merci max,
maar ik ga via bluetooth het commando geven, dan kan ik ze ook vanop afstand wijzigen.
Jouw code is altijd meerdere regels korter dan die van mij, ga het eens bekijken word waarschijnlijk uiteindelijk iets tussen in.
 
Ik begrijp eigenlijk nog niet hoe jouw knipperlicht van modus veranderd ( snel/langzaam/flitsen/roteren enz.), is het zo dat bij één sweep van 0 tot 180 alle varianten voorbijkomen?
 
@ Max , bij elke sweep van 0 naar 180 , gaat het naar de volgende modus,5 verschillende , (snel en langzaam -flitsen of roteren en uit.)
origineel zet je het op een aux kanaal van je zender, en telkens je in en uit schakelt veranderd de modus.
het heeft ook een geheugen want het start terug op in de stand waarin je spanning hebt uitgeschakeld.

je kan het vergelijken met kerst verlichting met verschillende flikker standen die je kiest met een druk knopje op het bedienings kastje.
 
Nu is mij het duidelijk, dank je. Maar dan zou je geen sweep nodig hebben, alleen maar de eindwaarden 0 en 180:
Code:
void loop () {
  while ( digitalRead (Pushpin) == 0); // while loop herhaalt totdat de drukknop losgelaten wordt
  delay (50); // wacht tot contactdender voorbij is
  servo1.write (0);
  while ( digitalRead (Pushpin) == 1); // while loop herhaalt totdat de drukknop ingedrukt wordt
  delay (50);
  servo1.write (180);
}
 
Laatst bewerkt:
Back
Top