adruino relai laten schakelen bij bepaalde snelheid
14 berichten
• Pagina 2 van 2 • 1, 2
- Tvstiphout
- Berichten: 8
- Geregistreerd: 17 Aug 2019, 21:14
Re: adruino relai laten schakelen bij bepaalde snelheid
Hoi,
doordat de teller iedere 2 seconden op 0 gezet werd zorgde dit er ook voor dat het ralai ging flikeren ondanks dat hij meer als 6 pulsen per seconden kreeg, dit heb ik inmiddels opgelost door de meting pas na 1.9 sec te laten doen en bij 2 sec te resetten waardoor hij geen last meer heeft van de 0 tot 6 pulsen in de tijd tot 2 sec. .
alleen ben ik nog niet veel verder gekomen met het pas laten tellen als hij van High naar low gaat en weer naar High...
ik neem aan dat je het over dit stukje had wat verkeerd was, maar moet hier nog iets bij voor het tellen als hij van High naar low gaat ? of heb ik dit helemaal verkeerd gedaan en moet dit weg en iets ander voor terug ...
doordat de teller iedere 2 seconden op 0 gezet werd zorgde dit er ook voor dat het ralai ging flikeren ondanks dat hij meer als 6 pulsen per seconden kreeg, dit heb ik inmiddels opgelost door de meting pas na 1.9 sec te laten doen en bij 2 sec te resetten waardoor hij geen last meer heeft van de 0 tot 6 pulsen in de tijd tot 2 sec. .
alleen ben ik nog niet veel verder gekomen met het pas laten tellen als hij van High naar low gaat en weer naar High...
ik neem aan dat je het over dit stukje had wat verkeerd was, maar moet hier nog iets bij voor het tellen als hij van High naar low gaat ? of heb ik dit helemaal verkeerd gedaan en moet dit weg en iets ander voor terug ...
- Code: Alles selecteren
buttonState = digitalRead(buttonPin); // lees de input pin
// verglijk status met vorige status
if (buttonState != lastButtonState) {
// als status verandert tel er een bij
if (buttonState == HIGH) {
- Code: Alles selecteren
const int buttonPin = 2; // pin waar pulsgever versnellingbak aan zit
const int ledPin = 13; // pin van relai voor schakeling
// variabelen
int buttonPushCounter = 0; // puls teller
int buttonState = 0; // huidige status van puslgever
int lastButtonState = 0; // vorige status van pulsgever
unsigned long timerStart,
timerEnd = 2000; // 2 seconden
void setup() {
pinMode(buttonPin, INPUT); // pulsgever als input
pinMode(ledPin, OUTPUT); // relai pin als output
Serial.begin(9600); // seriale cominicatie aan
}
void loop() {
buttonState = digitalRead(buttonPin); // lees de input pin
// verglijk status met vorige status
if (buttonState != lastButtonState) {
// als status verandert tel er een bij
if (buttonState == HIGH) {
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
} else {
Serial.println("off");
}
}
// opslaan van vorige status voor volgende loop
lastButtonState = buttonState;
// als er minder als 6 pulsen zijn uitgegeven schakel relai
if(millis() - timerStart > 1900){
if (buttonPushCounter <6) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
} }
if(millis() - timerStart > timerEnd){
Serial.println(buttonPushCounter);
buttonPushCounter = 0; // reset count
timerStart += timerEnd; // reset 2 sec timer
}
}
Advertisement
Re: adruino relai laten schakelen bij bepaalde snelheid
Ja dat denk je helemaal goed hoor dat is statechange
Er is een verschil tussen 6 pulsen per 2 sec en de tijdsduur tussen elke puls.
en waarom resetten?
je kunt ook pulsen tellen en de tijd en dan op elkaar delen en als dat hoger is dan 3 per seconde .
je kunt zo zelfs het gemiddelde uitrekenen etc.
het ligt er maar aan wat je wilt, je bent wel op de goede weg hoor.
Er is een verschil tussen 6 pulsen per 2 sec en de tijdsduur tussen elke puls.
en waarom resetten?
je kunt ook pulsen tellen en de tijd en dan op elkaar delen en als dat hoger is dan 3 per seconde .
je kunt zo zelfs het gemiddelde uitrekenen etc.
het ligt er maar aan wat je wilt, je bent wel op de goede weg hoor.
paul deelen
shooter@home.nl
shooter@home.nl
- Tvstiphout
- Berichten: 8
- Geregistreerd: 17 Aug 2019, 21:14
Re: adruino relai laten schakelen bij bepaalde snelheid
zo eindelijk werkt hij zoals hij het hoort
ik had gekozen voor pulsen per bepaalde tijd zodat nu hij aan het eind van die tijd gaat kijken hoeveel pulsen hij heeft de beslissing dus ook actief blijf tot de volgende meting 2 sec later.
en het resetten leek me nodig, maar geen idee wat verder de mogelijk heden waren... het is voor mijn de eerste keer dat ik een arduino of iets soortgelijks in mijn handen heb, dus vind het eigenlijk al een klein wonder dat het werkt.
de arduino gaat nou in een oude Citroen hy bus uit 1956 hier hebben we een Vw passat uit 2004 in gelegd. maar deze bus heeft dus aan iedere kant van die ouderwetse vlaggetjes als knipperlicht die uitklappen maar wou ze alleen aan laten gaan als de bus beneden ongeveer 40 km per uur gaat aangezien hij nu ook veel harder kan en daar die vlaggetjes waarschijnlijk niet tegen kunnen. en hij is ook voorzien van normale knipperlichten waardoor ze geen noodzakelijke functie meer hebben.
nou had ik nog een klein probleempje wat nog opgelost zou moeten worden en dat is dat de arduino een ralai schakelt maar het vlaggetje mag alleen uit gaan als knipperlicht bedient is en als ik het knipperlicht over het relais aansluit gaat het vlaggetje dus telkens in uit in plaats van uit zolang het knipperlicht aan staan. heb je misschien nog een idee om dit op te lossen ?
ik had gekozen voor pulsen per bepaalde tijd zodat nu hij aan het eind van die tijd gaat kijken hoeveel pulsen hij heeft de beslissing dus ook actief blijf tot de volgende meting 2 sec later.
en het resetten leek me nodig, maar geen idee wat verder de mogelijk heden waren... het is voor mijn de eerste keer dat ik een arduino of iets soortgelijks in mijn handen heb, dus vind het eigenlijk al een klein wonder dat het werkt.
de arduino gaat nou in een oude Citroen hy bus uit 1956 hier hebben we een Vw passat uit 2004 in gelegd. maar deze bus heeft dus aan iedere kant van die ouderwetse vlaggetjes als knipperlicht die uitklappen maar wou ze alleen aan laten gaan als de bus beneden ongeveer 40 km per uur gaat aangezien hij nu ook veel harder kan en daar die vlaggetjes waarschijnlijk niet tegen kunnen. en hij is ook voorzien van normale knipperlichten waardoor ze geen noodzakelijke functie meer hebben.
nou had ik nog een klein probleempje wat nog opgelost zou moeten worden en dat is dat de arduino een ralai schakelt maar het vlaggetje mag alleen uit gaan als knipperlicht bedient is en als ik het knipperlicht over het relais aansluit gaat het vlaggetje dus telkens in uit in plaats van uit zolang het knipperlicht aan staan. heb je misschien nog een idee om dit op te lossen ?
- Code: Alles selecteren
const int buttonPin = 2;
const int ledPin = 13;
// variabelen
int buttonPushCounter = 0;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
unsigned long timerStart,
timerEnd = 2000;
void setup() {
pinMode(buttonPin, INPUT); // pulsgever als input
pinMode(ledPin, OUTPUT); // relai pin als output
Serial.begin(9600); // seriale cominicatie aan
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
}
}
}
lastButtonState = reading;
if(millis() - timerStart > 1900){
if (buttonPushCounter <6) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
} }
if(millis() - timerStart > timerEnd){
Serial.println(buttonPushCounter);
buttonPushCounter = 0; // reset count
timerStart += timerEnd; // reset 2 sec timer
}
}
Re: adruino relai laten schakelen bij bepaalde snelheid
je hebt dan dus nog een ingang nodig voor het aan zijn van de richting, als je die voor de clignoteur dus van de schakelaar afpakt dan hoef je alleen een if erbij te zetten en anders met een timer kijken of de uittijd al voorbij is.
Je kunt overigens beter de resettimer van millis() afhalen omdat je anders na 4 dagen een overflow krijgt (detail)
en nee ik ga je niet vertellen hoe dat precies te doen, ik zie aan je programma dat je dat heel goed zou kunen maken.
Je kunt overigens beter de resettimer van millis() afhalen omdat je anders na 4 dagen een overflow krijgt (detail)
en nee ik ga je niet vertellen hoe dat precies te doen, ik zie aan je programma dat je dat heel goed zou kunen maken.
paul deelen
shooter@home.nl
shooter@home.nl
14 berichten
• Pagina 2 van 2 • 1, 2
Terug naar Gezamenlijke projecten
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten