Snelheid wagen uitlezen via can bus

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 13 Dec 2017, 12:16

Snelheid wagen uitlezen via can bus

Berichtdoor Erla » 13 Dec 2017, 12:47

Ik heb mij tot doel gesteld om de snelheid van mijn wagen uit te lezen via OBDII en die dan op een oled display af te beelden.
Beschik over een oled display van 0.96", SSD1306, I2C aansturing.
Ben natuurlijk begonnen met het display uit te testen en loop daar meteen op een probleem. Ik krijg geen fatsoenlijke afbeelding van veranderende cijfers op dat display, wat ik ook probeer de refresh rate is zodanig laag dat het irritant is om af te lezen. Als ik op die manier de snelheid moet uitlezen is dat echt niet te doen.
Heb al allerlei bibliotheken gebruikt, maar altijd hetzelfde resultaat. Ik begin zo stilaan te denken dat Arduino dit niet fatsoenlijk aan kan. Heb een en ander uitgetest met een UNO alsook met een Mega.

Op Youtube vond ik volgend filmpje: https://www.youtube.com/watch?v=8ikyp4lu45M vanaf min 8.50 ongeveer kan men duidelijk een veranderende aflezing zien op een oled display, een zeer nette klare uitlezing.
Ik heb dezelfde sketch geladen en uitgetest, echter krijg ik zoals steeds een uitlezing die ongeveer om de seconde veranderd en waarbij je dus duidelijk de overgang ziet van de ene uitlezing naar de volgende.
cpp code
#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
u8g2.begin();
}

void loop(void) {
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_logisoso32_tr);
u8g2.setCursor(0, 32);
u8g2.print(millis());
u8g2.sendBuffer();
delay(200);
}

In het filmpje vertelt de man dat hij een delay(200) heeft ingebouwd om zodoende 5 maal per seconde het scherm te verversen, maar bij mij blijft dat altijd om de seconde, waardoor ik een knipperende display krijg.

Wie kan mij helpen, verlang ik gewoon te veel of wat doe ik verkeerd ???

Misschien nog bijvertellen dat ik ook aan het experimenteren ben geweest met een TFT display, dat werkt dan niet over de I2C bus maar gebruikt 4 digitale uitgangen, resultaat echter net hetzelfde.
Ik begin serieus te denken dat mijn Arduino's (clonen) op een lagere frequentie werken, kan dat ???

Advertisement

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Snelheid wagen uitlezen via can bus

Berichtdoor nicoverduin » 13 Dec 2017, 15:30

Ik denk ook niet dat het probleem in de Arduino zit. Overigens kun je dat zo testen. De standaard IDE gaat uit van een UNO op 16Mhz. Als je een blink programma laadt dan zou deze er ongeveer 2x zolang over doen met het knipperen.
Jouw eerste uitdaging is om eerst gewoon de display aan te sturen dat deze correct werkt. Enne btw... dat werkt. Heb ooit eens zo'n ding gehad.
Of dat met jouw library werkt weet ik niet. Tenzij je genoteerd hebt welke libraries je allemaal hebt gehad, is het een totaal zinloze actie geweest.
Dus zolang jij dat niet goed hebt werken is de rest zinloos.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 3
Geregistreerd: 13 Dec 2017, 12:16

Re: Snelheid wagen uitlezen via can bus

Berichtdoor Erla » 13 Dec 2017, 16:48

Heb zoals voorgesteld een blink programma gedraaid en daar maar meteen als delay 10 seconden ingesteld.
Gechronometreerd en alles lijkt perfect. Dus aan de frequentie van de Arduino ligt het niet.

Gebruikers-avatar
Berichten: 4836
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Snelheid wagen uitlezen via can bus

Berichtdoor nicoverduin » 13 Dec 2017, 17:04

Dus blijft de library over
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 239
Geregistreerd: 30 Dec 2012, 11:42

Re: Snelheid wagen uitlezen via can bus

Berichtdoor Rudi » 13 Dec 2017, 19:33

Waarom heb je gekozen voor software emulated I2C?
Verander lijn 6 van

Code: Alles selecteren
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);


naar :

Code: Alles selecteren
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);


en je probleem is opgelost.
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25

Berichten: 3
Geregistreerd: 13 Dec 2017, 12:16

Re: Snelheid wagen uitlezen via can bus

Berichtdoor Erla » 13 Dec 2017, 20:14

Wat zou het internet toch zijn zonder slimme mensen!
Je hebt gelijk, loopt als een trein...

Rudi, dikke merci

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast