TM1637 plus DS1302

ik heb de TM1637 4 digit 7 segments display werkend
en ik heb timer DS1302 werkend
kan ik nu via breadboard de plus en min, clck en IO aan elkaar koppelen en dan plus en min aan arduino aansluiten???
en dan CLCK en IO ook aan de arduino???

Vanschagen
De meeste mensen hier weten waarschijnlijk niet uit hun hoofd wat een TM1637 en/of een DSA302 zijn.
We weten ook niet hoe je ze "werkend gekregen hebt". BV welke pinnen gebruik je?

Ook je vraag laat heel wat open.

kan ik nu via breadboard de plus en min, clck en IO aan elkaar koppelen en dan plus en min aan arduino aansluiten???
en dan CLCK en IO ook aan de arduino???

Ik zou kunnen antwoorden: Natuurlijk kan je dat.
En dan is je arduino stuk en dan zeg ik "Jamaar je had toch niet gezegd: Kan ik ze verbinden zonder iets stuk te maken."
Of je zegt: Het werkt niet en ik antwoord: Je had toch niet gevraagd of het dan ging werken.

Met andere woorden: De andere gebruikers van het forum hebben concrete informatie nodig om jou te kunnen helpen.
In dit geval zou ik het volgende verwachten:

  • Schakel schema TM1637
  • Schakel schema DSA302
  • Schakel schema TM1637 met DSA302
  • Wat wil je bereiken met ze samen te steken

En nog los daar van. Wat ga je doen met de code?

Met vriendelijke groet
Jantje

ik zal het proberen uit teleggen
TM1637http://www.seeedstudio.com/wiki/Grove_-_4-Digit_Display
plus en min ,DIO op pin 3
CLCK op pin 2
met deze code

//  Author:Frankie.Chu
//  Date:9 April,2012
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Lesser General Public
//  License as published by the Free Software Foundation; either
//  version 2.1 of the License, or (at your option) any later version.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//
//  Modified record:
//
/*******************************************************************************/
#include <TimerOne.h>
#include "TM1637.h"
#define ON 1
#define OFF 0

int8_t TimeDisp[] = {0x00,0x00,0x00,0x00};
unsigned char ClockPoint = 1;
unsigned char Update;
unsigned char halfsecond = 0;
unsigned char second;
unsigned char minute = 0;
unsigned char hour = 12;


#define CLK 2//pins definitions for TM1637 and can be changed to other ports    
#define DIO 3
TM1637 tm1637(CLK,DIO);

void setup()
{
  tm1637.set();
  tm1637.init();
  Timer1.initialize(500000);//timing for 500ms
  Timer1.attachInterrupt(TimingISR);//declare the interrupt serve routine:TimingISR  
}
void loop()
{
  if(Update == ON)
  {
    TimeUpdate();
    tm1637.display(TimeDisp);
  }
  
}
void TimingISR()
{
  halfsecond ++;
  Update = ON;
  if(halfsecond == 2){
    second ++;
    if(second == 60)
    {
      minute ++;
      if(minute == 60)
      {
        hour ++;
        if(hour == 24)hour = 0;
        minute = 0;
      }
      second = 0;
    }
    halfsecond = 0;  
  }
 // Serial.println(second);
  ClockPoint = (~ClockPoint) & 0x01;
}
void TimeUpdate(void)
{
  if(ClockPoint)tm1637.point(POINT_ON);
  else tm1637.point(POINT_OFF); 
  TimeDisp[0] = hour / 10;
  TimeDisp[1] = hour % 10;
  TimeDisp[2] = minute / 10;
  TimeDisp[3] = minute % 10;
  Update = OFF;
}

tijd kan je instellen,maar als pc uitgaat ,moet je volgende dag weer tijd instellen,nou heb ik ook DS1302 timer
http://playground.arduino.cc/Main/DS1302

nou is het zo dat die ds1302 de tijd bewaard door knoopcel batterij.
nou dacht ik dus dat die 2 printjes samen te gebruiken ,als klokje
is dat mogelijk???

als ik dit zo zie ,zou het moeten kunnen ,
http://wiki.amperka.ru/время:rtc-индикатор

das al heel wat concreter. :slight_smile:
Een klok maken met een arduino moet zeker kunnnen.
Als ik de links naar de componenten bekijk zie ik op het eerste zicht geen pin conflict. Das goed :slight_smile:
Dus dat zou moeten kunnen met deze hardware.

Met vriendelijke groet
Jantje

ok
maar hoe sluit ik nu die printjes aan elkaar ,en aan arduino uno.
dat russiche sketch zegt wel display aan pin 12 en 13
maar waar sluit je de 1307 op aan dat kan ik er niet uit op maken.

DS1307 clock; moet in dat voorbeeld ook nog gedeclareerd worden,word ook niks aan gegeven hoe je hem aansluit.
wie weet hoe je het aanpast???

Tja,
Dat krijg je als je met grote stappen snel thuis denkt te komen....... Maar je bent niet blind dus dat excuus kan je niet gebruiken.... Er staat een prima foto op hoe het aangesloten moet worden... En ik weet niet of Jantje roemeens kent.... Dus hoe zou hij dan kunnen zeggen dat het werkt (wat ik overigens volledig met hem eens ben).

ja idd,nog eens goed gekeken,staat goed op die foto ,hoe het aangesloten zit
SORRY.
maar nu de code
DS1307 clock;
geeft melding dat het gedeclareerd moet worden.
je weet ik kan niet programmeren,ik zie ook niet hoe het te doen.
wat ik me ook afvraag ,moet het via zo'n shield kan toch ook via breadboard of niet???
dus graag hulp!!

vanschagen:
ja idd,nog eens goed gekeken,staat goed op die foto ,hoe het aangesloten zit
DS1307 clock;
geeft melding dat het gedeclareerd moet worden.

beter over typen....
boven in het programma staat:

#include "DS1307.h"

vanschagen:
wat ik me ook afvraag ,moet het via zo'n shield kan toch ook via breadboard of niet???

Die vraag kun je zelf ook beantwoorden...... wat doet een breadboard?

die include staat er hoor
daarom is het juist vreemd.
diet is de fout code

klokje_met_1307_en_1637.ino:4:24: error: DS1307.h: No such file or directory
klokje_met_1307_en_1637:15: error: 'DS1307' does not name a type
klokje_met_1307_en_1637.ino: In function 'void setup()':
klokje_met_1307_en_1637:26: error: 'clock' was not declared in this scope
klokje_met_1307_en_1637.ino: In function 'void loop()':
klokje_met_1307_en_1637:60: error: 'clock' was not declared in this scope

dit is de code die ik wil compilen

    #include <Wire.h>
    #include <EEPROM.h>
    #include "TM1637.h"
    #include "DS1307.h"
     
    //??????, ?????????? ????? ??????????
    char compileTime[] = __TIME__;
     
    //?????? ????? Arduino, ? ??????? ???????????? ?????????
    #define DISPLAY_CLK_PIN 12  
    #define DISPLAY_DIO_PIN 13
     
    //??? ?????? ? ??????????? ????? ? ??????????? ?? ?????????? ??????????
    TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
    DS1307 clock;
     
     
    void setup()
    {
     
      //???????? ? ??????????? ?????????
      display.set();
      display.init();
     
      //????????? ???? ????????? ???????
      clock.begin();
     
      //???????? ????? ?? ??????, ???? ????? ??????? ???????
      byte hour = getInt(compileTime, 0);
      byte minute = getInt(compileTime, 3);
      byte second = getInt(compileTime, 6);
     
      //????????????????? ??? ???????
      //???????? ? ???? ?????????? ?????? ? ?????? ???
      unsigned int hash =  hour * 60 * 60 + minute  * 60 + second; 
     
      //????????? ???????????? ?????? ???? ? ????? ? EEPROM
      if (EEPROMReadInt(0) != hash) {
     
        //????????? ????? ???
        EEPROMWriteInt(0, hash);
     
        //??????? ??? ?????? ? RTC ????, ??????, ???????
        clock.fillByHMS(hour, minute, second);
     
        //?????????? ??? ?????? ?? ?????????? ?????? ?????.
        //? ????? ??????? ??? ???????? ??????? ?????? ??? ??? ?????
        clock.setTime();
      }
     
    }
     
     
    void loop()
    {
      //???????? ??? ??????????? ?? ?????? ?? 4 ????????
      int8_t timeDisp[4];
     
      //??????????? ????? ? ?????
      clock.getTime();
     
      //???????? ??????? ????? ? ??????? ?????????????? ???????
      timeDisp[0] = clock.hour / 10;
     
      //???????? ??????? ????? ? ??????? ??????? ?? ???????
      timeDisp[1] = clock.hour % 10;
     
      //??????????? ?? ?? ????? ? ????????
      timeDisp[2] = clock.minute / 10;
      timeDisp[3] = clock.minute % 10;
     
      //... ? ????? ??????? ??? ?? ?????
      display.display(timeDisp);
     
      //? ??? ??? ????????? ???????? ??? ??????, ???????
      //????? ???????? ? ????????? ????????? ?????? ???????
      display.point(clock.second % 2 ? POINT_ON : POINT_OFF);
     
    }
     
    char getInt(const char* string, int startIndex) {
      return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';
    }
     
    //?????? ????????????? ????? ? ??????
    void EEPROMWriteInt(int address, int value)
    {
      EEPROM.write(address, lowByte(value));
      EEPROM.write(address + 1, highByte(value));
    }
     
    //?????? ????? ?? ??????
    unsigned int EEPROMReadInt(int address)
    {
      byte lowByte = EEPROM.read(address);
      byte highByte = EEPROM.read(address + 1);
     
      return (highByte << 8) | lowByte;
    }

met breadboard hoef ik volgens mij enkel de plus en min door te koppelen,omdat ik op arduino uno 1 plus pin te kort kom

Zie je wel dat je het zelf weet....

Mbt de library..... Je moet natuurlijk wel die library binnenhalen op je PC. Nu zegt dat hij hem niet kan vinden... En zo'n soort probleem heb je al eens eerder gehad meen ik...

dez library gevonden maar werkt ook niet???https://code.google.com/p/libds1307/downloads/detail?name=DS1307.zip&can=2&q=

fout codes

klokje_met_1307_en_1637.ino: In function 'void setup()':
klokje_met_1307_en_1637:26: error: 'class DS1307' has no member named 'begin'
klokje_met_1307_en_1637:44: error: 'class DS1307' has no member named 'fillByHMS'
klokje_met_1307_en_1637:48: error: 'class DS1307' has no member named 'setTime'
klokje_met_1307_en_1637.ino: In function 'void loop()':
klokje_met_1307_en_1637:60: error: 'class DS1307' has no member named 'getTime'
klokje_met_1307_en_1637:63: error: 'class DS1307' has no member named 'hour'
klokje_met_1307_en_1637:66: error: 'class DS1307' has no member named 'hour'
klokje_met_1307_en_1637:69: error: 'class DS1307' has no member named 'minute'
klokje_met_1307_en_1637:70: error: 'class DS1307' has no member named 'minute'
klokje_met_1307_en_1637:77: error: 'class DS1307' has no member named 'second'

Dan heb je de verkeerde lib :slight_smile:
Deze misschien? Google Code Archive - Long-term storage for Google Code Project Hosting.

geinstalleerd de versie 1.24,maar staat DS1307new.h en cpp moet ik die hernoemen ofzo
want hij geeft nog zelfde meldingen
ik had die trouwens vanmiddag ook al geprobeerd.
maar nico bedankt voor helpen
of moet ik de code van die rus new er achter zetten?

dit zijn de fout meldingen van nu

klokje_met_1307_en_1637.ino: In function 'void setup()':
klokje_met_1307_en_1637:26: error: 'class DS1307' has no member named 'begin'
klokje_met_1307_en_1637:44: error: 'class DS1307' has no member named 'fillByHMS'
klokje_met_1307_en_1637:48: error: 'class DS1307' has no member named 'setTime'
klokje_met_1307_en_1637.ino: In function 'void loop()':
klokje_met_1307_en_1637:60: error: 'class DS1307' has no member named 'getTime'
klokje_met_1307_en_1637:63: error: 'class DS1307' has no member named 'hour'
klokje_met_1307_en_1637:66: error: 'class DS1307' has no member named 'hour'
klokje_met_1307_en_1637:69: error: 'class DS1307' has no member named 'minute'
klokje_met_1307_en_1637:70: error: 'class DS1307' has no member named 'minute'
klokje_met_1307_en_1637:77: error: 'class DS1307' has no member named 'second'

Heb het al geprobeerd? dus de naam veranderen in DS1307new?

nu new er achter gezet ,maar dan begint ie weer over wat anders

    #include <Wire.h>
    #include <EEPROM.h>
    #include "TM1637.h"
    #include "DS1307new.h"
     
    //Массив, содержащий время компиляции
    char compileTime[] = __TIME__;
     
    //Номера пинов Arduino, к которым подключается индикатор
    #define DISPLAY_CLK_PIN 12  
    #define DISPLAY_DIO_PIN 13
     
    //Для работы с микросхемой часов и индикатором мы используем библиотеки
    TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
    DS1307new clock;
     
     
    void setup()
    {
     
      //Включаем и настраиваем индикатор
      display.set();
      display.init();
     
      //Запускаем часы реального времени
      clock.begin();
     
      //Получаем число из строки, зная номер первого символа
      byte hour = getInt(compileTime, 0);
      byte minute = getInt(compileTime, 3);
      byte second = getInt(compileTime, 6);
     
      //Импровизированный хэш времени
      //Содержит в себе количество секунд с начала дня
      unsigned int hash =  hour * 60 * 60 + minute  * 60 + second; 
     
      //Проверяем несовпадение нового хэша с хэшем в EEPROM
      if (EEPROMReadInt(0) != hash) {
     
        //Сохраняем новый хэш
        EEPROMWriteInt(0, hash);
     
        //Готовим для записи в RTC часы, минуты, секунды
        clock.fillByHMS(hour, minute, second);
     
        //Записываем эти данные во внутреннюю память часов.
        //С этого момента они начинают считать нужное для нас время
        clock.setTime();
      }
     
    }
     
     
    void loop()
    {
      //Значения для отображения на каждом из 4 разрядов
      int8_t timeDisp[4];
     
      //Запрашиваем время с часов
      clock.getTime();
     
      //Получаем десятки часов с помощью целочисленного деления
      timeDisp[0] = clock.hour / 10;
     
      //Получаем единицы часов с помощью остатка от деления
      timeDisp[1] = clock.hour % 10;
     
      //Проделываем то же самое с минутами
      timeDisp[2] = clock.minute / 10;
      timeDisp[3] = clock.minute % 10;
     
      //... а затем выводим его на экран
      display.display(timeDisp);
     
      //у нас нет отдельных разрядов для секунд, поэтому
      //будем включать и выключать двоеточие каждую секунду
      display.point(clock.second % 2 ? POINT_ON : POINT_OFF);
     
    }
     
    char getInt(const char* string, int startIndex) {
      return int(string[startIndex] - '0') * 10 + int(string[startIndex+1]) - '0';
    }
     
    //Запись двухбайтового числа в память
    void EEPROMWriteInt(int address, int value)
    {
      EEPROM.write(address, lowByte(value));
      EEPROM.write(address + 1, highByte(value));
    }
     
    //Чтение числа из памяти
    unsigned int EEPROMReadInt(int address)
    {
      byte lowByte = EEPROM.read(address);
      byte highByte = EEPROM.read(address + 1);
     
      return (highByte << 8) | lowByte;
    }

fout

klokje_met_1307_en_1637.ino: In function 'void setup()':
klokje_met_1307_en_1637:26: error: 'class DS1307new' has no member named 'begin'

Doe 's gek en maak er een commentaar regel van......

ja inderdaad nu compiled hij wel,maar moet dat "clock begin" dan niet gedaan worden???

je ziet het weer he ,ik begrijp en weet er niks van :wink:

vanschagen:
ja inderdaad nu compiled hij wel,maar moet dat "clock begin" dan niet gedaan worden???

je ziet het weer he ,ik begrijp en weet er niks van :wink:

Dat komt omdat je niet verder kijkt dan je neus lang is. Je had ook in de library zelf kunnen kijken om te ontdekken dat die functie helemaal niet bestaat. Je zou uberhaupt kunnen kijken wat er in die library staat. Het is tenslotten gewoon C/C++ code. Niks geheimzinnig. Dus met "het niet begrijpen" kom je bij mij niet weg :grin:

ik had voordat jij dit typte al in DS1307.h gekeken
daar staat wel startClock,maar die moet weer gedeclareerd worden,en daar wist ik geen oplossing voor.
dus hoe declareer je die startClock????
ja ik weet het , maar ik heb al zo vaak hier gezegd ,programmeren kan ik niet,snap niet wat je wat waar voor moet gebruiken.
dus hulp ben ik dankbaar voor.