timer naar 4digit display

algemene C code
Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

timer naar 4digit display

Berichtdoor christiaan » 31 Dec 2015, 14:14

hallo allemaal,
Ik ben ent nieuw met arduino, heb al veel dingetjes geprobeerd. Alleen wil ik nu graag iets gericht gaan uitvoeren wat ik ook binnenkort nodig heb.

Ik heb onderstaande code wat momenteel werkt als timer. Echter wil ik in plaats van dat het naar de seriële monitor wordt gestuurd, zichtbaar maken op een 4 digit display 7 segmenten met 4 aansluit punten (vcc, gnd, clk, dio)

Kan iemand me daarbij helpen???

Code: Alles selecteren
//countdown timer
#include <Time.h>         //http://www.arduino.cc/playground/Code/Time

time_t t;
tmElements_t tm;
int seconds, minutes;

void setup(void)
{
    Serial.begin(115200);

    //initialize the starting time to 3 minutes and 0 seconds.
    //the rest of the elements (hours, etc., don't matter much but should
    //at least be set to something that makes sense.
    tm.Second = 0;
    tm.Minute = 3;
    tm.Day = 1;
    tm.Month = 4;
    tm.Year = CalendarYrToTm(2012);
   
    t = makeTime(tm);
}

void loop(void)
{
    seconds = second(t);
    minutes = minute(t);
   
    if (minutes < 10) Serial.print('0');    //leading zero
    Serial.print(minutes, DEC);   
    Serial.print(':');
    if (seconds < 10) Serial.print('0');    //leading zero
    Serial.println(seconds, DEC);
    --t;                                    //subtract a second
    if (seconds + minutes == 0) {
        Serial.println("BOOM!");
        while (1);                          //infinite loop, press reset to restart
    }
    delay(100);                             //10x normal speed for demo purposes
}

Advertisement

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

Re: timer naar 4digit display

Berichtdoor shooter » 31 Dec 2015, 18:53

zoek op het type display maar eens naar een software of example,
en in de tussentijd ook naar blink without delay, want dat helpt je straks enorm.
of geef het type display wat je hebt gekocht.
je zult versteld staan hoe eenvoudig het wordt.
paul deelen
shooter@home.nl

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

Re: timer naar 4digit display

Berichtdoor christiaan » 31 Dec 2015, 21:10

http://www.okaphone.com/artikel.asp?id=479440

Dit display is wat erbij hoort van mij uit.

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

Re: timer naar 4digit display

Berichtdoor shooter » 01 Jan 2016, 13:02

http://playground.arduino.cc/Main/TM1637

leuk he staat gewoon op de arduino site, onderaan kun je de lib ophalen van github.
paul deelen
shooter@home.nl

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

Re: timer naar 4digit display

Berichtdoor shooter » 01 Jan 2016, 13:05

op github staat rechts boven download zip en dat moet je doen, dan de uitgepakte files plaatsen in library\tm1637 hetzelfde als de h file die erin staat.
dan example ophalen en kijken wat er gebeurt.
paul deelen
shooter@home.nl

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

Re: timer naar 4digit display

Berichtdoor christiaan » 01 Jan 2016, 13:12

Ik heb onderhand een stuk of 3 / 4 verschillende libraries. Echter niet met een functie die ik zoek. Althans niet gevonden in de code ervan...

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

Re: timer naar 4digit display

Berichtdoor shooter » 01 Jan 2016, 18:00

zonder time is het makkelijker.
beschouw het display even als een teller die terugtelt.
begin bij 300
als getal is 299 ofwel %99 dan is het 259
dan telkens een delay van 1000 of nog liever werken met blink without delay
als getal is 0 dan boom.

met time wordt de display 100*minutes+seconds en dat stuur je dan naar de display.
paul deelen
shooter@home.nl

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

Re: timer naar 4digit display

Berichtdoor christiaan » 01 Jan 2016, 18:03

wordt het dan een for loop met decending (i--)

en dan i als waarde 3600 (seconden voor 1 uur) geven of denk ik nu weer veel te lastig?

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

Re: timer naar 4digit display

Berichtdoor shooter » 01 Jan 2016, 21:02

ja dat kan wel, maar dan loopt je display slecht.
op 4 cijfers kun je 59 minuten, en 59 seconden zetten.
begin daar eens mee, en elke 1000 milliseconden (zie blink without delay) een functie doen, waarbij de seconden sec-- als sec==0 dan min-- en sec=59
als min en sec ==0 dan boom.
ik vertel je expres niet precies, anders leer je niks.
paul deelen
shooter@home.nl

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

Re: timer naar 4digit display

Berichtdoor christiaan » 02 Jan 2016, 12:28

He onderstaande code gemaakt, werkt grotendeels, alleen het einde niet.
Op het moment dat de timer op 01:00 staat start hij weer opnieuw met 2 minuten...

Code: Alles selecteren
/*
  Basic usage example

  Demonstrated some of the basic functionality of the library. Initialize the display, set the backlight brightness, print some text, count from 0 to 100 and print on display and blink some text.

  Note: make sure to set your serial monitor to line end: NEW LINE!

  The circuit:
  * connect TM1637 pin CLK to Arduino pin D4
  * connect TM1637 pin DIO to Arduino pin D5
  * connect TM1637 pin Vcc to Arduino pin 5V
  * connect TM1637 pin GND to Arduino pin GND

  Created 25 September 2015
  By Bram Harmsen

  https://github.com/bremme/arduino-tm1637

*/

// include the SevenSegmentTM1637 library
#include "SevenSegmentTM1637.h"
#include "SevenSegmentExtended.h"

/* initialize global TM1637 Display object
*  The constructor takes two arguments, the number of the clock pin and the digital output pin:
* SevenSegmentTM1637(byte pinCLK, byte pinDIO);
*/
const byte PIN_CLK = 4;   // define CLK pin (any digital pin)
const byte PIN_DIO = 5;   // define DIO pin (any digital pin)
const byte d = 1000;      // define D (delay) for 1000 milliseconds (= 1 second)
//SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);
SevenSegmentExtended      display(PIN_CLK, PIN_DIO);

int hours = 1;              // initialize hours
int minutes = 59;            // initialize minutes
byte timeT = hours & minutes;
bool gameEnd = false;         // initialize gameEnd?

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);         // initializes the Serial connection @ 9600 baud
  display.begin();            // initializes the display
  display.setBacklight(100);  // set the brightness to 100 %
  display.print("INIT");      // display INIT on the display
  delay(1000);                // wait 1000 ms
  display.clear();
}

void loop() {
  // put your main code here, to run repeatedly:
  display.printDualCounter(hours, minutes);
  uint8_t m = minutes;
  uint8_t h;
  for ( h=hours; h != 0; h--) {
    for ( ; m != 0; m--) {
      display.printTime((uint8_t)h, m);
      delay(1000);
    };
    m = 59;   // reset minute timer
  };

  if(hours == 0 && minutes == 0) {
    display.print("FAIL");
  }
}

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten