Oświetlenie sterowane dżwiękiem.
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ąć
#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ąć
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ę.
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.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.
Jaki powinien być mój kolejny krok? Co muszę zmienić i jak?
Ostatnio zmieniony wtorek 12 wrz 2017, 17:14 przez luzik, łącznie zmieniany 1 raz.
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;
}
--
pozdrawiam,
Jarek Andrzejewski
pozdrawiam,
Jarek Andrzejewski
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
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
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
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
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 ).
Ja nie uruchamiam Twojego kodu, piszę "z głowy" (to się może też przydać: http://trash.ttrsite.net/jezykansic.pdf ).
--
pozdrawiam,
Jarek Andrzejewski
pozdrawiam,
Jarek Andrzejewski
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
#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
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.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.