Вывод информации с 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 вольта, а отдельно - только земля общая), тогда просто ставьте достаточный блок питания и всё будет нормально.