2015-12-30 37 views
6
{ 
    digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) 
    delay(1000);    // wait for a second 
    digitalWrite(13, LOW); // turn the LED off by making the voltage LOW 
    delay(1000);    // wait for a second 
} 

Próbuję ustawić opóźnienie na 60 000, ale po wysłaniu go do Arduino po upływie 1 minuty światło się nie włącza.W Arduino jest maksymalny czas opóźnienia podczas korzystania z funkcji (Opóźnienie)

+0

Proszę zaksięgować kod. Co dokumentacja mówi o ograniczeniach opóźnień? Wydaje się, że to pytanie dotyczące środowiska wykonawczego. Podałeś oczekiwane i aktualne wyniki. Następnym (i głównym) wymaganiem dla stackoverflow, com, jest kod źródłowy. – user3629249

+0

Czy nazywasz to "opóźnieniem (60000)" lub czymś w rodzaju 'opóźnienia (60 * 1000)'? –

Odpowiedz

3

Z arduino reference page for delay parametr dla opóźnienia jest unsigned long

niepodpisane long on the arduino może wynosić od 0 do 4294967295.

Jest prawdopodobne, że liczba przekazywana do "opóźnienia" jest interpretowana jako int. Oznaczałoby to, że opóźnienie jest ograniczone do maksimum 32 767.

Powinieneś jawnie zadeklarować swoją wartość opóźnienia jako niepodpisaną długą like the solution in this post.

unsigned long seconds = 1000L; //Notice the L 
unsigned long minutes = seconds * 60; 

delay(minutes); //for 60,000 milliseconds 
+0

To powinno zadziałać, ale postanowiłem podzielić moje wartości i przejrzeć je, co wydaje się działać doskonale. Ale dziękuję za odpowiedź. –

1

podany link: https://www.arduino.cc/en/Reference/DelayMicroseconds

Obecnie największą wartość, która będzie produkować dokładne opóźnienie wynosi 16383. To może się zmienić w przyszłości Arduino zwalnia. W przypadku opóźnień dłuższych niż kilka tysięcy mikrosekund należy zamiast tego użyć delay().

z których wszystkie zdają się wskazywać, że funkcja zwraca uwagę tylko na niższe 14 bitów.

Tak więc nawet w funkcji dłuższego opóźnienia: delay() jest prawdopodobne, że wykorzystywane są tylko niższe 14 bitów.