Strona 2 z 2
: wtorek 12 wrz 2017, 14:15
autor: ptja
Modyfikować. W funkcji loop sprawdzaj czy upłynął czas i w razie potrzeby wyłącz światło.
: wtorek 12 wrz 2017, 14:20
autor: luzik
Przy próbie wgrania tego:
#include <Timers.h>
Timer ledBlinkTimer;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
ledBlinkTimer.begin(SECS(2));
}
void loop() {
if (ledBlinkTimer.available())
{
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
ledBlinkTimer.restart();
}
}
mam taki komunikat:
Arduino:1.8.4 (Windows 7), Płytka:"Arduino Nano, ATmega328P"
C:\Users\Andrew\Documents\Arduino\sketch_sep12a\sketch_sep12a.ino:1:20: fatal error: Timers.h: No such file or directory
#include <Timers.h>
^
compilation terminated.
exit status 1
Błąd kompilacji dla płytki Arduino Nano.
W ten sposób do niczego nie dojdziemy i będzie tego za chwilę kilka stron. Nie ogarniam tego jak pisałem więc nie wiem czy jest sens to ciągnąć
: wtorek 12 wrz 2017, 15:12
autor: ptja
Jak uważasz. Powyższy błąd chyba wynika z tego, że ominąłeś "Jeśli spodobała Ci się ta biblioteka, przejdź na stronę projektu, pobierz ją i zapoznaj się z dodatkowymi funkcjami oraz przykładami."
: wtorek 12 wrz 2017, 15:17
autor: luzik
Nie ominąłem... Żaden z pobranych plików stąd
https://github.com/nettigo/Timers z folderu examples - nie przechodzi u mnie pozytywnie weryfikacji. Dlaczego? Nie wiem. Jak mam ciągnąć temat skoro cały czas pod górkę a konkretnej pomocy w formie gotowych kilku linijek nie zobaczę chyba nigdy. Nie jestem leniem tylko po prostu tego nie rozumiem. Czuję się "grillowany" troszkę na zasadzie zmusimy cię do pracy kolego . Chociaż szukam w sieci czegoś podobnego niczego póki co nie znajduję.
: wtorek 12 wrz 2017, 16:56
autor: ptja
Musisz zainstalować bibliotekę ("Bibliotekę należy pobrać i umieścić w katalogu libraries, który znajduje się w folderze ze szicami Arduino."). Przykłady nie zadziałają bez tego.
: wtorek 12 wrz 2017, 17:06
autor: luzik
ptja pisze:Musisz zainstalować bibliotekę ("Bibliotekę należy pobrać i umieścić w katalogu libraries, który znajduje się w folderze ze szicami Arduino."). Przykłady nie zadziałają bez tego.
Zrobiłem jak wskazałeś. Teraz weryfikacja i wgrywanie jest ok, ale dalej nie wiem jak to ma działać u mnie ? Zmieniłem wartość w linijce:
ledBlinkTimer.begin(SECS(10)); na 10 sekund i dioda L teraz świeci 10 sekund potem 10 sekund nie świeci i tak w kółko, a mnie chodzi o sterowanie załączaniem z mikrofonu - świeceniem powiedzmy 30 sekund i wyłączeniem do następnego sygnału dżwiękowego zarejestrowanego przez moduł z mikrofonem.
Jaki powinien być mój kolejny krok? Co muszę zmienić i jak?
: wtorek 12 wrz 2017, 17:14
autor: ptja
Na początek może prościej (paskudny kod, wiem):
Kod: Zaznacz cały
#define CZAS_SWIECENIA 60
void loop () {
nowMic = digitalRead(mic);
if (lastMic == LOW && nowMic == HIGH) {
digitalWrite (lamp, 1);
delay(CZAS_SWIECENIA * 1000);
digitalWrite (lamp, 0);
}
lastMic = nowMic;
}
: wtorek 12 wrz 2017, 17:15
autor: luzik
Coś nie halo...
Arduino:1.8.4 (Windows 7), Płytka:"Arduino Nano, ATmega328P"
Opcje projektu zmienione, przeładuj całość
C:\Users\Andrew\Desktop\Timers-master\Timers-master\examples\smooth_blink\smooth_blink.ino: In function 'void loop()':
smooth_blink:4: error: 'nowMic' was not declared in this scope
nowMic = digitalRead(mic);
^
smooth_blink:4: error: 'mic' was not declared in this scope
nowMic = digitalRead(mic);
^
smooth_blink:5: error: 'lastMic' was not declared in this scope
if (lastMic == LOW && nowMic == HIGH) {
^
smooth_blink:6: error: 'lamp' was not declared in this scope
digitalWrite (lamp, 1);
^
C:\Users\Andrew\Desktop\Timers-master\Timers-master\examples\smooth_blink\smooth_blink.ino:7:28: warning: integer overflow in expression [-Woverflow]
delay(CZAS_SWIECENIA * 1000);
^
smooth_blink:10: error: 'lastMic' was not declared in this scope
lastMic = nowMic;
^
exit status 1
'nowMic' was not declared in this scope
: wtorek 12 wrz 2017, 17:20
autor: ptja
Zmień tylko tę jedną funkcję (loop) w swoim pierwotnym kodzie (i dodaj to #define). To, co wkleiłem to tylko fragment programu, ale reszta pozostaje bez zmian.
: wtorek 12 wrz 2017, 17:23
autor: luzik
Nie mógłbyś wrzucić już właściwego kompletnego kodu Jarku?
Tak to zmodyfikowałem:
#define CZAS_SWIECENIA 60
Timer ledBlinkTimer;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
ledBlinkTimer.begin(SECS(2));
}
void loop () {
nowMic = digitalRead(mic);
if (lastMic == LOW && nowMic == HIGH) {
digitalWrite (lamp, 1);
delay(CZAS_SWIECENIA * 1000);
digitalWrite (lamp, 0);
}
lastMic = nowMic;
}
Po próbie wykonania tego o co prosiłeś mam taki komunikat:
Arduino:1.8.4 (Windows 7), Płytka:"Arduino Nano, ATmega328P"
sketch_sep12b:3: error: 'Timer' does not name a type
Timer ledBlinkTimer;
^
C:\Users\Andrew\Documents\Arduino\sketch_sep12b\sketch_sep12b.ino: In function 'void setup()':
sketch_sep12b:7: error: 'ledBlinkTimer' was not declared in this scope
ledBlinkTimer.begin(SECS(2));
^
sketch_sep12b:7: error: 'SECS' was not declared in this scope
ledBlinkTimer.begin(SECS(2));
^
C:\Users\Andrew\Documents\Arduino\sketch_sep12b\sketch_sep12b.ino: In function 'void loop()':
sketch_sep12b:11: error: 'nowMic' was not declared in this scope
nowMic = digitalRead(mic);
^
sketch_sep12b:11: error: 'mic' was not declared in this scope
nowMic = digitalRead(mic);
^
sketch_sep12b:12: error: 'lastMic' was not declared in this scope
if (lastMic == LOW && nowMic == HIGH) {
^
sketch_sep12b:13: error: 'lamp' was not declared in this scope
digitalWrite (lamp, 1);
^
C:\Users\Andrew\Documents\Arduino\sketch_sep12b\sketch_sep12b.ino:14:28: warning: integer overflow in expression [-Woverflow]
delay(CZAS_SWIECENIA * 1000);
^
sketch_sep12b:17: error: 'lastMic' was not declared in this scope
lastMic = nowMic;
^
exit status 1
'Timer' does not name a type
Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Czyli amba
: wtorek 12 wrz 2017, 18:51
autor: ptja
Chodziło o ten poprzedni szkic, przecież w tym nie ma definicji
lastMic ani
nowMic.
Ja nie uruchamiam Twojego kodu, piszę "z głowy" (to się może też przydać:
http://trash.ttrsite.net/jezykansic.pdf ).
: wtorek 12 wrz 2017, 18:57
autor: luzik
Wpisałem zmodyfikowany taki:
#define CZAS_SWIECENIA 60
int mic = 4;
int lamp = 13;
boolean lastMic = LOW;
boolean nowMic = LOW;
boolean lampON = false;
void setup () {
pinMode(mic, INPUT);
pinMode (lamp, OUTPUT);
}
void loop () {
nowMic = digitalRead(mic);
if (lastMic == LOW && nowMic == HIGH) {
digitalWrite (lamp, 1);
delay(CZAS_SWIECENIA * 1000);
digitalWrite (lamp, 0);
}
lastMic = nowMic;
}
ale weryfikacja wygląda tak:
C:\Users\Andrew\Documents\Arduino\sketch_sep12b\sketch_sep12b.ino: In function 'void loop()':
C:\Users\Andrew\Documents\Arduino\sketch_sep12b\sketch_sep12b.ino:16:28: warning: integer overflow in expression [-Woverflow]
delay(CZAS_SWIECENIA * 1000);
^
Szkic używa 1112 bajtów (3%) pamięci programu. Maksimum to 30720 bajtów.
Zmienne globalne używają 11 bajtów (0%) pamięci dynamicznej, pozostawiając 2037 bajtów dla zmiennych lokalnych. Maksimum to 2048 bajtów.
Powoli moja głowa jest jak kula ziemska. Zaraz wybuchnie
: wtorek 12 wrz 2017, 19:12
autor: luzik
Wielkie podziękowania dla kolegi
ptja za pomoc i sfinalizowanie tematu. Bez niego realizacja tego pomysłu nie była by możliwa. Mogę cieszyć się nową funkcjonalną zabawką
Jeszcze raz DZIĘKUJĘ Jarku
!
: środa 20 wrz 2017, 07:25
autor: amman
Niby można zorganizować takie oświetlenie, ale z mojej analizy wynika, że bywa ono czasami problematyczne. Wydaje mi się się, że lepszą, korzystniejszą opcją jest pozostawienie tych podstawowych funkcji dźwiękowych. Natomiast te bardziej skomplikowane lepiej zastąpić jakiś bardziej niezawodnym systemem, algorytmem sterującym. Np w oparciu o włącznik czy wyłącznik czasowy.
: środa 20 wrz 2017, 07:27
autor: luzik
amman pisze:Niby można zorganizować takie oświetlenie, ale z mojej analizy wynika, że bywa ono czasami problematyczne. Wydaje mi się się, że lepszą, korzystniejszą opcją jest pozostawienie tych podstawowych funkcji dźwiękowych. Natomiast te bardziej skomplikowane lepiej zastąpić jakiś bardziej niezawodnym systemem, algorytmem sterującym. Np w oparciu o włącznik czy wyłącznik czasowy.
A tak po ludzku mówiąc to co kolega ma na myśli konkretnie? Bo to bardzo ogólne i nic nie mówiące
Taki tekst każdy może napisać i dokładnie NIC z niego nie wynika.