Snelheidmeter

Arduino specifieke Software
Berichten: 8
Geregistreerd: 28 Feb 2021, 20:42

Snelheidmeter

Berichtdoor T terBeek » 12 Mrt 2021, 08:53

Dag Allemaal,

Ik ben bezig om een snelheidsmeter te maken voor mijn modelbaan.
In een vorig onderwerp van mij heb ik er een voor elkaar gekregen (zie:Snelheidmeter modelbaan met het Faller Car System), maar na testen op de modelbaan gaf hij bij alle auto's en snelheden dezelfde snelheid aan. Dat is niet de bedoeling.
Inmiddels heb ik een nieuwe code schreven/samengesteld, deze werkt goed maar wil graag een aantal aanpassingen die ik niet voor elkaar krijg.
Het gaat om de volgende 2 aanpassingen:

- Snelheid wordt weergegeven met 2 decimalen, die decimalen wil ik eraf hebben.
- Als de snelheid is weergegeven blijft deze nu staan, deze wil ik eraf hebben nadat het gelezen is, of veranderen naar"0".

Ik hoop dat jullie mij kunnen helpen, alvast bedankt.


#include <SPI.h>
#include <Wire.h>
#include <Arduino.h>
#include <U8g2lib.h>

U8G2_SSD1306_64X32_1F_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);


//Pin 16 is Hall sensor 1, Pin 17 Hall sensor 2
#define Hallsensor1 8
#define Hallsensor2 9

//Afstand tussen sensoren = 90.7 mm
const double afstand = 90.7;
//Variabelen voor tijd- en snelheidsmeting
long int deltatime, starttime;



void setup(){
//ingang van de sensoren
pinMode(Hallsensor1, INPUT);
pinMode(Hallsensor2, INPUT);

Serial.begin(115200);

u8g2.begin();

u8g2.clearBuffer(); // wis het interne geheugen

}

void loop() {

delay(250);
detachInterrupt(0); //ontkoppelt de onderbreking
//Wachten op Hall sensor 1
while(digitalRead(Hallsensor1)== true){
}
//Hall sensor 1 is geactiveerd, starttijd = actuele systeemtijd
starttime = millis();
//Wachten op signaal van Hall sensor 2
while(digitalRead(Hallsensor2) == true){
}
//Deltatijd = tijd die werd gebruikt voor de route
deltatime = (millis() - starttime);
//Seriële monitoruitgang
Serial.println("");
Serial.println("Deltatime: ");
Serial.print(deltatime);
Serial.println("");
Serial.println("snelheid:");
Serial.print(afstand/deltatime);
refresh_display();


}

//Functie voor weergave-output
void refresh_display(){

u8g2.clearBuffer(); // wis het interne geheugen
u8g2.setFont(u8g2_font_t0_12_tf); // kies een geschikt lettertype
u8g2.drawStr(0, 10, "Sie Farhen"); // schrijf iets naar het interne geheugen
u8g2.drawStr(35, 30, "Km/h");
u8g2.setCursor(0, 30);
u8g2.print((afstand/deltatime) * 375);
u8g2.setCursor(0, 30);
u8g2.drawStr(18, 30, "");
u8g2.sendBuffer(); // breng het interne geheugen over naar het display
delay(250);


}

Advertisement

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Snelheidmeter

Berichtdoor shooter » 12 Mrt 2021, 14:48

zie het artikel van kees die dat prima verwoord, je kunt er natuurlijk ook een int van maken uitykomst =INT(variabele);
en op nul zetten dat kun je doen met kijken hoelang het duurt en als de tijd voorbij is dan zet je het op nul.
trukje erachter is blink without delay.
paul deelen
shooter@home.nl

Berichten: 8
Geregistreerd: 28 Feb 2021, 20:42

Re: Snelheidmeter

Berichtdoor T terBeek » 12 Mrt 2021, 16:28

Oke, bedankt voor je bericht.
Waar kan het artikel van Kees vinden?

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Snelheidmeter

Berichtdoor shooter » 12 Mrt 2021, 21:15

die steld dezelfde vraag een regel eronder.
paul deelen
shooter@home.nl

Berichten: 8
Geregistreerd: 28 Feb 2021, 20:42

Re: Snelheidmeter

Berichtdoor T terBeek » 13 Mrt 2021, 16:55

Vandaag bezig geweest om bovenstaande in de code te krijgen maar wil niet echt lukken, wie kan/wil mij helpen... :D

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 18 gasten