Zoek algoritme flitspaalmelder sterk verbeterd...

Postby schueler » Fri Apr 24, 2009 12:00 am

Ik heb me de afgelopen dagen eens flink bezig gehouden met het zoek algoritme van de flitspaalmelder. Dat was nog het laatste wat ik wilde doorspitten.
Tot mijn grote verbazing staan hier veel fouten in en worden veel dingen dubbelop gedaan of zijn er if-then-else statements die nooit waar zijn. Dat het werkt... goed genoeg zullen we maar zeggen.

Misschien dat dat dan voor mij ook de reden was om die code eens flink op zijn kop te zetten.

Voor diegene de de code een beetje bekeken hebben zullen bij deze code zien dat er weinig van over gebleven is. Het grootste bottleneck, het zoek algoritme, heb ik gedeeltelijk in C geschreven om het beter leesbaar te houden.

De methode die nu gebruikt wordt is als eerste butterfly zodat we binnen een paar stappen dicht bij de dichtstbijzijnde waarde zitten. Dan zoek ik naar beneden binnen een bepaald gebiedt en daarna naar boven binnen een bepaald gebied.
Dus in plaats van alle palen te doorzoeken ( bij geen gevonden ) zoekt het er nu maar een fractie.
Hierdoor duurt de zoektocht dus maar een 100ms of zo.

Als er mensen zijn die deze code willen testen, graag!!!
Rij naar een paal ( of meerdere, maar let wel op je snelheid ) en kijk of ze goed gedetecteerd worden.
LET OP: Er is een kleine modificatie van de print nodig ( twee drukknoppen en twee weerstanden ). Lees hier mee over in Nieuwe Code Flitspaalmelder.

Ook snelheid is gekoppeld aan het moment van detectie. Standaard is dit gebied 15 maar loopt op naar 29 als je 100km/u rijdt.

15 + ( snelheid / 7 )


Als ik weer verbeteringen heb dan worden die hier gepost. Momenteel zie je bij versie 20090424-2122 nog alleen de tijd, datum en snelheid. Als een paal gedetecteerd wordt verschijnt er een uitroepteken in het scherm en de rode led gaat branden. De rest van de info blijft dus op het scherm staan.

Voor een volle uitgedorste versie zal een PIC18F2520 nodig zijn. Ik heb momenteel een tweede print bij Elektor besteld om daar eentje op te zetten. Ik werk nu met een gaatjes print voor de PIC18F2520 versie waar ik geen I2 EEprom op heb zitten dus dat is niet zo handig.
Tevens draait deze PIC18 op 40MHz ipv de 20MHz bij de PIC16 dus de routines zullen sneller draaien.


Ben'
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

[The extension hex has been deactivated and can no longer be displayed.]

schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Tue May 19, 2009 12:00 am

de code om te zetten naar C ( lees compleet opnieuw geschreven ) heb ik de code zowel voor de PIC16F876A als voor de PIC18F2520 geschikt gemaakt.
Door het in C te schrijven past alles met gemak in de PIC16F876A zelfs het menu in tekst...

Vele extra's geïmplementeerd zoals datum, hoogte, backlight control, compass en meer...

Lees meer in dit onderwerp:

Nieuwe Code Flitspaalmelder


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am


Return to 2008-11 Flitspaalmelder

Who is online

Users browsing this forum: No registered users and 1 guest