Close

Odpověď na: uspání arduina nano

Úvodní stránka Fórum Vaše projekty Arduino uspání arduina nano Odpověď na: uspání arduina nano

#11061
michal09
Účastník

Výsledkem by mělo být, že mi arduino změří venkovní teplotu ca každých 10 minut a odešle pře vysílač 433MHZ a půjde zase spát. Jelikož za oknem nemám zásuvku, tak bude arduino napájeno z baterie a proto nutnost uspání. Nicméně moje kroky jsou postupné, tzn, nejprve si chci odladit kód pro uspání a následně přidat odesílání přes vysíláč 433Mhz.
V kódu jsem našel již také chybu a také jsem našel na youtubu dobrý zdroj na uspání arduina, ale ani to mi nefunguje:

Na serial monitoru se mi objeví následující:
07/04/2017 20:33:17
Woke up
Woke up
07/04/2017 20:33:18
Woke up
Woke up
07/04/2017 20:33:19
Woke up
alarm zpusten
Woke up
Woke up
vstup do spanku
Woke up
07/04/2017 20:33:22
07/04/2017 20:33:23
07/04/2017 20:33:24
07/04/2017 20:33:25
07/04/2017 20:33:26
07/04/2017 20:33:27
07/04/2017 20:33:28
07/04/2017 20:33:29
07/04/2017 20:33:30
07/04/2017 20:33:31
07/04/2017 20:33:32
07/04/2017 20:33:33
07/04/2017 20:33:34
07/04/2017 20:33:35
07/04/2017 20:33:36
07/04/2017 20:33:37
07/04/2017 20:33:38
07/04/2017 20:33:39
07/04/2017 20:33:40
07/04/2017 20:33:41
07/04/2017 20:33:42
07/04/2017 20:33:43
07/04/2017 20:33:44
07/04/2017 20:33:45
07/04/2017 20:33:46
07/04/2017 20:33:47
07/04/2017 20:33:48
07/04/2017 20:33:49
07/04/2017 20:33:50
07/04/2017 20:33:51
07/04/2017 20:33:52
07/04/2017 20:33:53
07/04/2017 20:33:54
07/04/2017 20:33:55
07/04/2017 20:33:56
07/04/2017 20:33:57
07/04/2017 20:33:58
07/04/2017 20:33:59
07/04/2017 20:34:00
07/04/2017 20:34:01
07/04/2017 20:34:02
07/04/2017 20:34:03
07/04/2017 20:34:04
07/04/2017 20:34:05
07/04/2017 20:34:06
07/04/2017 20:34:07
07/04/2017 20:34:08
07/04/2017 20:34:09
07/04/2017 20:34:10
07/04/2017 20:34:11
07/04/2017 20:34:12
07/04/2017 20:34:13
07/04/2017 20:34:14
07/04/2017 20:34:15
07/04/2017 20:34:16
07/04/2017 20:34:17
07/04/2017 20:34:18
07/04/2017 20:34:19
07/04/2017 20:34:20
alarm zpusten
vstup do spanku
Woke up
Woke up
07/04/2017 20:34:22
07/04/2017 20:34:23
07/04/2017 20:34:24
07/04/2017 20:34:25
07/04/2017 20:34:26

Trochu mi to přijde, jako by mi na ten pin 2 co mi má probouzet arduino ze spánku pořád něco posílalo bez ohledu na nastavený alarm.
Na pin 2 jsem přivedl přímo SQW z DS3231, tak jako je to v tom odkazu na youtubu, ale když změřím napětí mezi GND a SQW, tak zjistím, že z SQW mi vlastně lezou pulzy, což by mě mohlo neustále zapína arduino bez ohledu na nastavený alarm.
Původně mi ještě napadl rezistor mezi pinem 2 a SQW, ale to nepomohlo. Více méně mi stačí poradit jak rozchodit program co je na youtubu a měl bych vystaráno.

kód z youtubu:
#include <DS3231.h>
#include <avr/sleep.h>
#include <Wire.h>

int wakePin = 2;
int led = 13;

DS3231 clock;
RTCDateTime t;

void setup() {
Serial.begin(9600);
Serial.println(„initislizace“);
clock.begin();
pinMode(wakePin, INPUT_PULLUP);
pinMode(led,OUTPUT);

clock.armAlarm1(false);
clock.clearAlarm1();
clock.setAlarm1(0,0,0,20,DS3231_MATCH_S);
attachInterrupt(0,wakeUpNow,CHANGE);
CheckAlarms();
}

void CheckAlarms(){
RTCAlarmTime a1;
RTCAlarmTime a2;
if(clock.isArmed1()){
a1 = clock.getAlarm1();
Serial.print(„Alarm1 je nastaven“);
switch(clock.getAlarmType1()){
case DS3231_MATCH_S:
Serial.print(„when second match: „);
Serial.println(clock.dateFormat(„_ _:_:s“,a1));
delay(100);
break;
default:
Serial.println(„nezname nastaveni RTC“);
break;
}

}
}

void wakeUpNow(){
Serial.println(„Woke up“);
delay(300);
}

void sleepNow(){
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
attachInterrupt(0,wakeUpNow,CHANGE);
sleep_mode();

sleep_disable();
detachInterrupt(0);
}

void loop() {
t = clock.getDateTime();
Serial.println(clock.dateFormat(„d/m/Y H:i:s“, t));
delay(100);

if (clock.isAlarm1()){
Serial.println(„alarm zpusten“);
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
Serial.println(„vstup do spanku“);
delay(100);
sleepNow();
}

delay(900);
}