timer naar 4digit display

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

Re: timer naar 4digit display

Berichtdoor nicoverduin » 27 Jan 2016, 16:08

Dat truukje schijnt op zich wel te werken. Maar:
a) als ik de code begrijp wordt er een bitje gezet. Dus elke keer dat er een cijfer wijzigt, wordt dat bitje gerest.
Ik zou zelf eerst een test programma maken om alleen dat bitje te zetten en kijken of die : aan gaat. Daarna gewoon ff 4 cijfers sturen eenmalig en kijken of het stabiel is.
Zo ja, dan zul je iets moeten verzinnen om dat bitje elke keer aan te zetten.

Overigens die code die je aangeeft is wel een beetje krom:
cpp code
uint8_t segto;
int value = 1244;
segto = 0x80 | display.encodeDigit((value / 100)%10);
display.setSegments(&segto, 1, 1);

Is volgens mij hetzelfde als:
cpp code
uint8_t segto;
segto = 0x80 | display.encodeDigit(2);
display.setSegments(&segto, 1, 1);
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Advertisement

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: timer naar 4digit display

Berichtdoor christiaan » 27 Jan 2016, 16:15

het aan en uitzetten komt wel goed, hij komt namelijk iedere seconde actief dmv de gebruikte code.
Echter is hij een milli seconde aan, en gaat het 2e digit van links nog steeds mee.
Ik kan ook zelf niet de code van &segto aanpassen, omdat ik die niet snap en niks op internet er van kan vinden.

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

Re: timer naar 4digit display

Berichtdoor nicoverduin » 27 Jan 2016, 16:31

Als ik in de laatste sketch van jou kijk, zie ik geen segto??
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: timer naar 4digit display

Berichtdoor christiaan » 27 Jan 2016, 17:05

#include<CountUpDownTimer.h>
#include "pitches.h"

CountUpDownTimer T(DOWN);
cpp code
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 43
#define DIO 45
TM1637Display display(CLK, DIO);

int inPin = 8; // pushbutton connected to digital pin 7
int buttonState = 0; // variable for reading the pushbutton status
int piezoPin = 47;
int ledRedLeft = 22;
int ledRedRight = 25;

int hoursT;
int minutesT;
int secondsT;



void setup()
{
Serial.begin(115200);
pinMode(inPin, INPUT_PULLUP); // sets the digital pin 7 as input
pinMode(ledRedLeft, OUTPUT);
pinMode(ledRedRight, OUTPUT);
display.setBrightness(0x0f);
pinMode(2, INPUT_PULLUP);
digitalWrite(ledRedLeft, LOW);
digitalWrite(ledRedRight, LOW);
//T.SetTimer(1,30,0); // Timer voor de Escape room
T.SetTimer(0,0,10);
T.StartTimer();
}

void loop()
{
T.Timer(); // run the timer
uint8_t fail[] = { 0b01110001,0b01110111,0b00000110,0b00111000 };

if (T.TimeHasChanged() ) // this prevents the time from being constantly shown.
{

tone(piezoPin, 5000, 50);

uint8_t segto;
segto = 0x80 | display.encodeDigit(0);
display.setSegments(&segto, 1, 1);

display.showNumberDec(T.ShowMinutes(), true, 2, 0);
display.showNumberDec(T.ShowSeconds(), true, 2, 2);
Serial.print(T.ShowHours());
Serial.print(":");
Serial.print(T.ShowMinutes());
Serial.print(":");
Serial.println(T.ShowSeconds());

// read the state of the pushbutton value:
buttonState = digitalRead(inPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (!buttonState == HIGH) {
// turn LED on:
Serial.println("Connected");
T.ResumeTimer();
} else {
// turn LED off:
Serial.println("Disconnected");
//T.PauseTimer();
}
hoursT = T.ShowHours();
minutesT = T.ShowMinutes();
secondsT = T.ShowSeconds();
if (hoursT == 0 && minutesT == 0 && secondsT == 0) {
T.StopTimer();
delay(500);
Serial.println("BOOM");
digitalWrite(ledRedLeft, HIGH);
digitalWrite(ledRedRight, HIGH);
//display.setSegments(fail);
melodyFailPlay();
//display.showNumberDec(1234, true, 4, 0);
}

} // End of T.TimeHasChanged

}



void melodyFailPlay() {
tone(piezoPin, 262);
delay(250);
tone(piezoPin, 196);
delay(500);
noTone(piezoPin);
}

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

Re: timer naar 4digit display

Berichtdoor nicoverduin » 27 Jan 2016, 19:36

Ik zou eerst die 2 displays doen en dan dat segto verhaal
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: timer naar 4digit display

Berichtdoor christiaan » 27 Jan 2016, 19:38

Het display werkt zoals ik wil. Output ook allemaal goed, alleen die colon (segto) wil niet lukken zoals ik wil.

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

Re: timer naar 4digit display

Berichtdoor Gij Kieken » 27 Jan 2016, 20:01

uint8_t segto;
segto = 0x80 | display.encodeDigit(0);
display.setSegments(&segto, 1, 1);
&segto adres verwijst naar de eerste byte van segto
0x80 verwijst naar van de bitwaarde voor het dubbele punt en dat wordt geOrd met digit (0).
Als je het display bekijkt van links naar rechts is 0 het meest links en 3 het meest rechts.
Het dubbele punt hoort bij het tweede van links digit geloof ik.
&segto verwijst naar het adres ,1 verwijst naar het aantal tekens die je wilt veranderen en ,1 naar de positie in het display het digit die je wilt veranderen.
Voor de zekerheid moet ik een en ander nogmaals nalezen maar weet niet zo direct weer waar ik het opgeslagen heb.
Laatst gewijzigd door Gij Kieken op 27 Jan 2016, 20:37, in totaal 3 keer gewijzigd.

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: timer naar 4digit display

Berichtdoor christiaan » 27 Jan 2016, 20:03

Maar dat is dus het leuke, ik wil geen ander segment veranderen in een ander teken...

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

Re: timer naar 4digit display

Berichtdoor Gij Kieken » 27 Jan 2016, 20:15

Maar denk dat je verwijst naar het het verkeerde.
Ergens maar vindt het niet direct terug had ik wat sketches gemaakt om alleen de dubbele punt aan te zetten of gecombineerd met andere digits zonder de waarde ervan te wijzigen.

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: timer naar 4digit display

Berichtdoor christiaan » 27 Jan 2016, 20:35

Aangezien ik met de code die ikheb en waar jij mee kwam, de 2 digit van links idd ook mee aanpas naar een andere waarde, denk ik dat het nog de verkeerde code is.
Op internet staat display.setColon(true/false);
Echter werkt die niet met mijn library, gebruik ik de library die dat wel ondersteund werkt mijn display niet meer.

Al is het dat de colon constant aan staat, dan moet dat maar..

VorigeVolgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten