Вывод информации с SD на TM1637
- Войдите на сайт для отправки комментариев
Вс, 19/06/2016 - 16:33
Здравствуйте форумчане, появилась такая проблема, хотел написать программу где выводит время на TM1637 с файла test.txt но толком у меня не получается. А вот и собственно код:
#include <SPI.h>
#include <SD.h>
#include <TimerOne.h>
#include "TM1637.h"
#define ON 1
#define OFF 0
File myFile;
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;
unsigned char s;
#define CLK 7
#define DIO 6
TM1637 tm1637(CLK,DIO);
void setup()
tm1637.set();
tm1637.init();
Timer1.initialize(500000);
Timer1.attachInterrupt(TimingISR);
{
Serial.begin(9600);
while (!Serial) {
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
while (myFile.available()) {
s = myFile.read();
hour = s;
minute = s;
s = s - 1;
Serial.write(s - 1);
}
myFile.close();
} else {
Serial.println("error opening test.txt");
}
}
void loop()
{
if(Update == ON)
{
TimeUpdate();
tm1637.display(TimeDisp);
}
}
void TimingISR()
{
//halfsecond ++;
Update = ON;
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;
}
Здравствуйте форумчане, появилась такая проблема, хотел написать программу где выводит время на TM1637 с файла test.txt но толком у меня не получается. А вот и собственно код:
Принято к сведению.
Когда (и если) у Вас появятся вопросы, просьбы, предложения и т.п., обращайтесь.
Ой, пардон, вопрос был таков, как вывести время из файла в TM1637?
В файле я указал 10:05 но в TM1637 выдало 10:10
Ой, пардон, вопрос был таков, как вывести время из файла в TM1637?
В файле я указал 10:05 но в TM1637 выдало 10:10
Вопрос неверный. Задача разбивается на две: 1) ввести время из файла в переменные; и 2) вывести из переменных на TM1637. Вы знаете с какой из двух подзадач у Вас проблема? Для начала выясните это.
Насколько я понимаю, за ввод времени из файла у Вас отвечают строки 50-60. Правильно?
Так поставьте же после строки 60 печать введённых переменных hour и minute в Serial, чтобы убедиться, что они введены правильно. И не убирайте эту печать пока не отладите всё полностью. Хоть будете видеть, что в чём Ваша проблема - во вводе или в выводе! (блин, и почему все новички так любят вслепую работать?)
Как только Вы поставите печать, о которой я говорю, Вы увидите, что в переменных hour и minute содержится "цена на прошлогодний овёс", а вовсе не то, что Вы ожидаете. Так вот, начните с того, что отладьте это место - добейтесь, чтобы в них было то, что Вам нужно. Пока там не будет печататься то, что нужно, о TM1637 даже не думайте. Нельзя вывести то, чего Вы не можете толком получить.
Спасибо, была проблема с переменными, Ардуино оказывается все считал по байтам а я писал как программу на C++.
А теперь появилась такая проблема. Не хватает энергии на 6 модулей TM1637. Когда подключаю 4 модуля то все прекрасно работает и отображается время а когда подключаю 6 модулей то даж SD карта перестаёт видеть флешку . Нужно ли покупать какой нибудь дополнительный модуль для Ардуино или все зависит от блока питания?
Зависит от схемы по которой Вы их питаете. Их надо питать отдельно от Ардуино (не с её 5/3,3 вольта, а отдельно - только земля общая), тогда просто ставьте достаточный блок питания и всё будет нормально.