TM1637 4-digit_7-segment display

Projecten die niet passen in bovenstaande onderwerpen
Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

TM1637 4-digit_7-segment display

Berichtdoor Gij Kieken » 16 Nov 2015, 11:28

Voor een count down timer met wat extra's heb ik dit TM1637 serieëel display aangeschaft.Deze library heb ik gedownload
http://playground.arduino.cc/Main/TM1637.
Nu wil ik eerst de werking van dit display wat doorgronden maar begrijp 1 regel code niet helemaal.
De code dient om de decimale punt op digit 1 aan te zetten.
uint8_t segto;
int value = 1244;
segto = 0x80|display.encodeDigit((value/100)%10);
display.setSegment(&segto,1,1);

Mijn vraag is wat is de preciese werking(functie) van het &(ampersant) symbool in de laatste regel code.
Volgens mij is het niet een And functie ook niet een bitwise And of een soort pointer, waarschijnlijk een manier om een variable type af te dwingen.
Echter vind ik nergens een sluitend antwoord.

Advertisement

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

Re: TM1637 4-digit_7-segment display

Berichtdoor nicoverduin » 16 Nov 2015, 11:32

De Amperand in dit geval betreft "het address van segto" en verwijst naar de eerste byte van segto. Het is dus een zogenaamde pointer. Pointers zijn op zich zaeer krachtige instrumenten omdat je alleen maar het adres doorgeeft en niet de feitelijke variabele. Dit maakt de verwerking vaak een stuk efficiënter. Er is ook gelijk een gevaar. De pointer kan namelijk ook desastreus zijn omdat je deze kan wijzigen en overal in het RAM geheugen iets kan veranderen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: TM1637 4-digit_7-segment display

Berichtdoor Gij Kieken » 16 Nov 2015, 11:40

Hallo Nico,
Waar in de code wordt dan het adress toegewezen en wat is het adress?

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

Re: TM1637 4-digit_7-segment display

Berichtdoor nicoverduin » 16 Nov 2015, 11:45

Je hebt in het programma uint8_t segto; staan.
In de library zit een functie setSegment. Die verwacht als eerste parameter een address. En dat is wat je o.a. doorgeeft. Het echte adres van segto is ergens in het RAM geheugen. Wil je dat weten, dan heb je hulp libraries die het RAM kunnen tonen op de Serial. Of je moet de linklijst belijken. Maar dan heb je wel verstand van compilers & linkers nodig.
Dus wil je weten hoe die dat doet, moet je in de library kijken van jou display.
@edit: Ik zou die library overigens niet zelf aanpassen. Gezien jouw vraag lijkt mij dat nog een "brug te ver"
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: TM1637 4-digit_7-segment display

Berichtdoor Gij Kieken » 16 Nov 2015, 11:52

Van pointers heb ik inderdaad nog geen kaas gegeten.Ik had al in de .h en de .cpp zitten neuzen en zo ontcijferd dat de ,1 ,1 wijst op de lengte en de positie.
Na verder zoeken op het web iets tegen gekomen van Reference en Dereference (moet dit nog verder uitspitten) maar vondt * toekenning niet direkt terug wat op een pointer wees.

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: TM1637 4-digit_7-segment display

Berichtdoor Gij Kieken » 16 Nov 2015, 11:58

In het volgend voorbeeldje van TM1637 staat inderdaad het commando display.setSegments(data), waarbij data eerder wordt gedifineert als een byte data={0x0,,,,,,}. Dit snapte ik wel maar zag daar geen verband naar een adress vandaar??

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: TM1637 4-digit_7-segment display

Berichtdoor Gij Kieken » 16 Nov 2015, 12:05

Nico, in elk geval hartelijk dank voor de snelle reactie en de verwijzing naar.Zal mij eerst wat verder verdiepen in pointers en vewijzingen.

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Google [Bot] en 36 gasten