25-10-2016, 22:42
Witam,
mam pewien problem, za pomocą Arduino Yun chce realizować pewien program ,który zlicza impulsy od kontaktronu poprzez przerwanie zewnętrzne oraz co 30s chce generować przerwanie od timera który zapisze stan licznika na kartę pamięci. Aby zwiększyć szybkość wykonywania się kodu w funkcji Setup chce zapisywać na kartę datę i godzinę tylko przy uruchamianiu programu. Tutaj właśnie jest problem bo gdy po odłączeniu zasilania i ponownym podłączeniu nie zapisuję na karcie daty , natomiast zapis stanu licznika jest realizowany prawidłowo , poniżej kod programu .
Będe wdzięczny za każdą rade bo siedzę nad tym już sporo czasu .
mam pewien problem, za pomocą Arduino Yun chce realizować pewien program ,który zlicza impulsy od kontaktronu poprzez przerwanie zewnętrzne oraz co 30s chce generować przerwanie od timera który zapisze stan licznika na kartę pamięci. Aby zwiększyć szybkość wykonywania się kodu w funkcji Setup chce zapisywać na kartę datę i godzinę tylko przy uruchamianiu programu. Tutaj właśnie jest problem bo gdy po odłączeniu zasilania i ponownym podłączeniu nie zapisuję na karcie daty , natomiast zapis stanu licznika jest realizowany prawidłowo , poniżej kod programu .
Będe wdzięczny za każdą rade bo siedzę nad tym już sporo czasu .
Kod:
#include <Bridge.h>
#include <Timers.h>
#include <Wire.h>
#include <DS3231.h>
#include <FileIO.h>
Timers<1>akcja;
DS3231 clock;
RTCDateTime dt;
volatile int licznik = 0;
void setup()
{
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP);
Bridge.begin();
FileSystem.begin();
attachInterrupt(1,przycisk,FALLING);
Serial.begin(9600);
akcja.attach(0,30000,zapis);
clock.begin();
//clock.setDateTime(__DATE__, __TIME__);
dt = clock.getDateTime();
File dataFile = FileSystem.open("/mnt/sd/datalog.txt", FILE_APPEND);
if (dataFile)
{
dataFile.println(clock.dateFormat("d-m-Y H:i: s", dt));
}
}
void loop()
{
akcja.process();
}
void zapis()
{
digitalWrite(13,HIGH);
if(dataFile)
{
dataFile.println(licznik);
dataFile.close();
digitalWrite(13,LOW);
}
licznik=0;
}
void przycisk()
{
static unsigned long lastTime;
unsigned long timeNow = millis();
if (timeNow - lastTime < 25)
return;
licznik++;
lastTime = timeNow;
}