Treker (Damian Szymański) Luty 1, 2017 Udostępnij Luty 1, 2017 SpectrumPL, witaj na forum, Twoje pytanie przeniosłem do wątku związanego z tym kursem. \ Schemat zbudowany we Fritzing nie różniłby się od zdjęć. Połączenie klawiatury jest proste i widoczne dokładnie na początkowych zdjęciach. Podłączenie pozostałych elementów było opisywane dokładnie w poprzednich częściach kursu. Można je spokojnie podłączyć bazując na informacjach z programu (definicje wykorzystywanych ponów). Z którymi połączeniami masz konkretnie problem?
Frodus Luty 17, 2017 Udostępnij Luty 17, 2017 Zastanawiam się jak by rozgryźć temat. Wyjście alarmowe (akustyczne) podłączone mam pod przekaźnik nr 1 (syrena 12V) i kombinuję jak podczas stanu alarmowego można by rozbroić alarm za pomocą klawiatury, którą mamy użytą w projekcie. Myślałem aby wykorzystać przerwanie (osobny szyfrator -> cewka przekaźnika nr 2 -> styki robocze tego przekaźnika podłączone pod pin arduino). W praktyce zadziałałoby to tak samo jak dodatkowy klawisz jednak nie jest to rozwiązanie które mnie zadowala. Można zawsze zagonić do roboty drugi procesor, ale to też nie jest najlepszym rozwiązaniem. Da się to ogarnąć programowo, bez zbędnego rozbudowywania układu? Ucieszyłaby mnie nawet opcja aby rozbroić stan alarmu, po za wpisaniem kodu pin można by nawet przytrzymać wciśnięte 2-3 klawisze przez kilka sekund
Treker (Damian Szymański) Luty 19, 2017 Udostępnij Luty 19, 2017 Frodus, oczywiście da się to zrobić bez rozbudowywania układu (a już na pewno dodatkowy procesor jest zbędny). Zacząłbym od sprawdzenia, czy podczas stanu alarmowego nadal działa klawiatura - nie mam teraz układu pod ręką, ale wydaje mi się, że powinna działać (a już na pewno zadziała wykrycie tego, że klawisz jest wciśnięty i trzymany). Jeśli ta opcja zadziała, to wystarczy po wciśnięciu przycisku przejść do odpowiedniego stanu
Frodus Marzec 16, 2017 Udostępnij Marzec 16, 2017 Nie zaglądałem ostatnio na forum. Przy możliwej okazji posiedzę i pomyślę na tym. Czy tutaj trzeba użyć funkcji millis?
Treker (Damian Szymański) Marzec 18, 2017 Udostępnij Marzec 18, 2017 Frodus, powinno się dać bez (ale to tak na szybko z głowy mówię)
SiaQ Październik 20, 2017 Udostępnij Październik 20, 2017 Mam pewien problem z czujnikiem PIR - mianowicie ustawiłem wszystkie potencjometry tak jak w kursie, żeby od razu wykrywał jakikolwiek ruch, natomiast czujnik reaguje dopiero po jakichś 5 sekundach od uruchomienia systemu - nie tak jak na filmach :/ edit. Problem rozwiązany, reset Arduino, ponowne podłączenie czujnika i wszystko śmiga
Treker (Damian Szymański) Październik 21, 2017 Udostępnij Październik 21, 2017 SiaQ, ten czujnik "tak ma", nie masz czym się przejmować. Dyskusja na ten temat była prowadzona już w komentarzach do jednej z poprzedniej części kursu (LINK). Więcej szczegółów znajdziesz np. w tej dokumentacji czujnika. Już na wstępie jestem tam mowa opóźnieniu wynoszącym właśnie 5 sekund
Maksus Październik 21, 2018 Udostępnij Październik 21, 2018 (edytowany) Witam, próbując samemu coś napisać kierowałem się wytycznymi jakie były podane podczas kursu, lecz kiedy dodaje bibliotekę Keyboard i wpisuje (komendę?!) Keypad (nazwa klawiatury) = Keypad (makeKeymap itd. Po zweryfikowaniu wyskakuje błąd "Keypad" does not name a type". Nie mam zielonego pojęcia co tu może być nie tak. Proszę o pomoc, z góry Bardzo Dziękuję! Edytowano Październik 22, 2018 przez Treker Poprawiłem formatowanie.
Treker (Damian Szymański) Październik 22, 2018 Udostępnij Październik 22, 2018 @Maksus, witam na forum Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start: Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników. Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć? Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości. 16 godzin temu, Maksus napisał: Po zweryfikowaniu wyskakuje błąd "Keypad" does not name a type". Zainstalowałeś najpierw bibliotekę klawiatury z GitHuba tak jak jest to opisane w artykule? Jeśli tak to wstaw swój cały program - zobaczymy gdzie mógł schować się błąd.
Maksus Październik 22, 2018 Udostępnij Październik 22, 2018 @Treker , we wczejszych etapach kursu można było pobrać bez wchodzenia na GitHuba tylko zarządzania biblioteką, aczkolwiek szkic wygląda w następujący sposób.
Treker (Damian Szymański) Październik 23, 2018 Udostępnij Październik 23, 2018 @Maksus, napisałem o GitHubie, bo myślałem, że może zainstalowałeś złą wersję biblioteki lub zupełnie inną bibliotekę o tej samej nazwie. Jednak chyba zwyczajnie masz błąd w programie. Spójrz na plik, który dołączasz na samym początku kodu. U Ciebie jest Keyboard.h, a w kursie Keypad.h.
D3binski Listopad 7, 2018 Udostępnij Listopad 7, 2018 /* Kurs Arduino II Forbot [5/10] Alarm złożony z czujnika ruchu (PIR), kontaktronu, sygnalizacji świetlnej, dżwiękowej i klawiatury */ // Adafruit NeoPixel - Version: Latest #include <Adafruit_NeoPixel.h> // Keypad - Version: Latest #include <Key.h> #include <Keypad.h> #define kontaktron 12 //czujnik magnetyczny #define buzzer A2 //sygnalizator dzwiekowy #define PIR A1 //czujnik ruchu const byte ROWS = 4; //deklaracja i przypisanie liczby rzedow const byte COLS = 4; //deklaracja i przypisanie liczby kolumn byte rowPins[ROWS] = {7, 6, 5, 4}; //deklaracja i przypisanie pinow rzedow i kolumn byte colPins[COLS] = {8, 9, 10, 11}; char keys[ROWS][COLS] = { //mapowanie klawiatury {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '7', 'C'}, {'*', '0', '#', 'D'} }; Keypad klawiatura = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //Inicjalizacja klawiatury Adafruit_NeoPixel linijka = Adafruit_NeoPixel(8, A0, NEO_GRB + NEO_KHZ800); //Konfiguracja linijki LED volatile int stanAlarmu = 1; int pinAlarmuPozycja = 1; char pinCyfra1 = '1'; // Ustawienie kodu char pinCyfra2 = '2'; char pinCyfra3 = '3'; char pinCyfra4 = '4'; int ileCzasuMinelo = 0; void setup() { pinMode(kontaktron, INPUT_PULLUP); pinMode(buzzer, OUTPUT); pinMode(PIR, INPUT); linijka.begin(); //Inicjalizacja linijki linijka.show(); } void loop() { char klawisz = 0; //zmienna przetrzymujaca znaki z klawiatury int i = 0; //zmienna pomocnicza do petli for switch (stanAlarmu){ //wykonaj akcje dla danego stanu alarmu case 1: //czuwanie linijka.setPixelColor(0, linijka.Color(0, 15, 0)); //dioda nr 1 swieci na zielono linijka.show(); klawisz = klawiatura.getKey(); if(klawisz == 'A'){ //Czy wlaczyc alarm for(i = 1; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 15)); linijka.show(); delay(680); } for(i = 1; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(15, 0, 0)); linijka.show(); delay(680); } pikpik(); //efekt dźwiękowy wylaczDiody(); stanAlarmu = 2; } break; case 2: //monitorowanie linijka.setPixelColor(7, linijka.Color(15, 0, 0)); //dioda nr 7 swieci na czerwono linijka.show(); delay(50); linijka.setPixelColor(7, linijka.Color(0, 0, 0)); //dioda nr 7 wylaczona linijka.show(); delay(50); if(digitalRead(PIR) == HIGH){ stanAlarmu = 4; //uruchom alarm pikpik(); //efekt dzwiekowy } else if(digitalRead(kontaktron) == HIGH){ ileCzasuMinelo = 0; //wyzeruj czas wpisywania pinu stanAlarmu = 3; //pozwol rozbroic } break; case 3: //rozbrajanie klawisz = klawiatura.getKey(); if (klawisz) { //Czy kolejna podana cyfra jest poprawna? if (pinAlarmuPozycja == 1 && klawisz == pinCyfra1) { //Jesli sprawdzamy 1 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 4300); //efekt dźwiękowy podczas wpisywania kodu delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 2 && klawisz == pinCyfra2) { //Jesli sprawdzamy 2 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 3500); delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 3 && klawisz == pinCyfra3) { //Jesli sprawdzamy 3 pozycje PINu pinAlarmuPozycja++; //Cyfra poprawna, mozna sprawdzic na kolejna tone(buzzer, 3500); delay(50); noTone(buzzer); } else if (pinAlarmuPozycja == 4 && klawisz == pinCyfra4) { //Jesli sprawdzamy 4 pozycje PINu stanAlarmu = 1; //Wszystkie 4 cyfry kodu sa poprawne tone(buzzer, 4300); delay(50); noTone(buzzer); } else { stanAlarmu = 4; //Blad w kodzie PIN - wlacz alarm pikpik(); } } delay(100); ileCzasuMinelo++; if(ileCzasuMinelo >= 50){ stanAlarmu = 4; pikpik(); } break; case 4: //alarm for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 255)); } linijka.show(); tone(buzzer, 4300); delay(50); for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(255, 0, 0)); } linijka.show(); tone(buzzer, 3500); delay(50); klawisz = klawiatura.getKey(); if(klawisz == 'D'){ for(i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 0)); } stanAlarmu = 1; noTone(buzzer); } break; } } void wylaczDiody(){ for(int i = 0; i < 8; i++){ linijka.setPixelColor(i, linijka.Color(0, 0, 0)); //dioda nr i wylaczona } linijka.show(); } void pikpik(){ //funkcja dżwiękowa tone(buzzer, 4300); delay(100); noTone(buzzer); delay(50); tone(buzzer, 4300); delay(100); noTone(buzzer); delay(1000); } Dodane: *efekty dźwiękowe *pzycisk reset 1
Treker (Damian Szymański) Listopad 8, 2018 Udostępnij Listopad 8, 2018 @D3binski, super - bardzo ładny program, aż miło się przegląda Powodzenia w dalszych eksperymentach! 1
D3binski Listopad 8, 2018 Udostępnij Listopad 8, 2018 (edytowany) @Treker, dziękuję, miło to słyszeć Edytowano Listopad 8, 2018 przez D3binski 1
tomica28 Listopad 15, 2018 Udostępnij Listopad 15, 2018 Witam, W kodzie jest błąd, ponieważ po wpisaniu pinu i ponownym uzbrojeniu ,i próbie wpisania pinu licznik pozycji nie jest przywracany do pozycji początkowej, co powoduje wywołanie alarmu Pozdrawiam, 1
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »