Drzwi na pin

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Drzwi na pin

Post autor: konstruktor » 14 paź 2015, 12:24

Witam chciałbym zrobić drzwi otwierane pinem z klawiatury membranowej 4x3, do tego był by wyświetlacz na którym można by było odczytywać info, drzwi byłyby otwierane serwem typu mikro, tylko jest problem ponieważ jestem jeszcze
zielony w arduino i prosiłbym jakiegoś dobrego człowieka o napisanie kodu, klawiaturka będzie podłączona pod konwerter, a lcd pod rejestr przesuwny. Wiem że trzeba ćwiczyć programowanie ale nie jestem w stanie zrobić takiego kodu, bardzo proszę

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


rumunn95
Majsterkowicz
Posty: 174
Rejestracja: 12 mar 2015, 18:32

Re: Drzwi na pin

Post autor: rumunn95 » 14 paź 2015, 12:28

Obejzyj tutki od elektroprzewodnika lub elektromarasa dla mnie tez byla czarna magia ale duzo sie nauczylem od nich

Tapniete z LG G2
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 14 paź 2015, 12:33

oglądam elektroprzewodnika, elektronikiem nie jestem najgorszym tylko mam problemy z programowaniem
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 15 paź 2015, 11:53

jest problem w kompilacji: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'
Ostatnio zmieniony 15 paź 2015, 17:47 przez konstruktor, łącznie zmieniany 1 raz.
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 15 paź 2015, 13:12

Witam zrobiłem takie coś, powie ktoś czy to zadziała?
#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Password.h>

#include <Keypad.h>

#include <Servo.h>

#define BACKLIGHT_PIN 3

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);

Servo servo1; //dodajemy serwo
Password password = Password( "3728" ); //ustalamy hasło

const byte ROWS = 4;
const byte COLS = 3;
int lock=0;
int proby=0;

char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
}; //tworzymy klawiaturkę

byte rowPins[ROWS] = { 5,4,3,2 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 8,7,6, }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
short but1=0;
short but2=0;

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void servo_lock(){ //funkcja blokująca drzwi
servo1.attach(12);
servo1.write(0);
delay(500);
servo1.detach();}

void servo_unlock(){ //funkcja otwierająca drzwi
servo1.attach(12);
servo1.write(100);
delay(500);
servo1.detach();}
void setup(){
Serial.begin(9600);
lcd.begin (16,2);
lcd.home();
lcd.print("WPISZ HASLO:");
lcd.setCursor(0,1);


}
void cls() {
lcd.clear();
lcd.home();
lcd.print("WPISZ HASLO");
lcd.setCursor(0,1); }
keypad.addEventListener(keypadEvent); //rozpoczyna nasluch na klawiaturce
void loop(){

}

Keypad getKey();


void keypadEvent(KeypadEvent eKey){


switch (eKey){
case '#':
checkPassword(); //po nacisnięciu # sprawdza poprawność hasła

break;
case '*': //po naciśnięciu * resetuje próbę wpisania hasła
password.reset();
servo_lock();


break;
default:
password.append(eKey);


}
}


void checkPassword(){
if (password.evaluate()){//jeśli hasło się zgadza otwiera drzwi
servo_unlock();
Serial.println("POPRAWNE HASLO");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("POPRAWNE ");
lcd.setCursor(0,2);
lcd.print("HASLO");
delay(10000);
servo_lock();
password.reset();


}
else{//a jesli nie to je zamyka
Serial.println("ZLE HASLO");
lcd.clear();
lcd.print("ZLE HASLO");


password.reset();
}
}
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 15 paź 2015, 17:52

proszę niech odpowie ktoś na ten kod bo nie wiem czy będzie to działało
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 16 paź 2015, 18:30

Witaj krapi, jestem nowicjuszem w tej dziedzinie, mam jeszcze jeden błąd przy kompilacji: 'keypad' does not name a type
a to kod: keypad.addEventListener(keypadEvent); //rozpoczyna nasluch na klawiaturce
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 16 paź 2015, 19:09

a czy ktoś inny pomoże mi z tym błędem?
stiven
Złota rączka
Posty: 1595
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Drzwi na pin

Post autor: stiven » 16 paź 2015, 20:48

Przenieś tą linijkę do funkcji setup().
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 16 paź 2015, 21:00

teraz wszystko się kompiluję, jak wszystko złożę to dam znać, jeszcze raz dzięki za pomoc, spróbuję się wam odwdzięczyć przy najbliższej okazji
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 23 paź 2015, 16:26

Wszystko podłączyłem jak trzeba i nic... wyświetlacz nie wyświetla nic (no oprócz białych prostokątów) serwo nie reaguje na sygnał z keypada.... nie wiem co mam robić. Pomożecie?
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 24 paź 2015, 12:11

nie, wyświetlacz nie był podłączany w innych projektach. oto link do wyświetlacza:
http://botland.com.pl/wyswietlacze-alfa ... m1602.html
a wyświetlacz jest pod 0x27
EDIT dobra wyświetlacz działa, widocznie miałem jakąś starszą biblioteke...
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 25 paź 2015, 09:12

Dziękuje za dobrą rade, skorzystam z niej, serwem już się bawiłem ale lcd I2C i keypadem nie...
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 28 paź 2015, 20:13

Witam, pobawiłem się trochę lcd i keypadem no i mam problem w kompilacji piszę:'lcd' does not name a type. i nie wiem o co z tym chodzi, o to kod:
#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <Password.h>

#include <Keypad.h>

#include <Servo.h>

#define BACKLIGHT_PIN 3

LiquidCrystal_I2C lcd(0x27,2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Servo servo1; //dodajemy serwo
Password password = Password( "3728" ); //ustalamy hasło

const byte ROWS = 4;
const byte COLS = 3;
int lock=0;
int proby=0;

char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
}; //tworzymy klawiaturkę

byte rowPins[ROWS] = { 5,4,3,2 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 8,7,6, }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
short but1=0;
short but2=0;

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void servo_lock(){ //funkcja blokująca drzwi
servo1.attach(12);
servo1.write(0);
delay(500);
servo1.detach();}

void servo_unlock(){ //funkcja otwierająca drzwi
servo1.attach(12);
servo1.write(100);
delay(500);
servo1.detach();}
void setup();
lcd.begin (16,2);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Wpisz Haslo");
keypad.addEventListener(keypadEvent);//rozpoczyna nasluch na klawiaturce

}
void cls() {
lcd.clear();
lcd.print("WPISZ HASLO");
lcd.setCursor(0,1); }
void loop(){

}

Keypad getKey();


void keypadEvent(KeypadEvent eKey){


switch (eKey){
case '#':
checkPassword(); //po nacisnięciu # sprawdza poprawność hasła

break;
case '*': //po naciśnięciu * resetuje próbę wpisania hasła
password.reset();
servo_lock();


break;
default:
password.append(eKey);


}
}


void checkPassword(){
if (password.evaluate()){//jeśli hasło się zgadza otwiera drzwi
servo_unlock();
lcd.begin(16,2); // Inicjalizacja LCD 2x16

lcd.backlight(); // zalaczenie podwietlenia
lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Poprawne Haslo");

delay(10000);
servo_lock();
password.reset();


}
else{//a jesli nie to je zamyka
lcd.begin(16,2); // Inicjalizacja LCD 2x16

lcd.backlight(); // zalaczenie podwietlenia
lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Zle haslo");


password.reset();
}
}
mgreta36
Majsterkowicz
Posty: 115
Rejestracja: 11 mar 2014, 22:20

Re: Drzwi na pin

Post autor: mgreta36 » 28 paź 2015, 21:28

Sprawdz to:

Kod: Zaznacz cały

#include <Wire.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

#include <Password.h>
#include <Keypad.h>
#include <Servo.h>

#define BACKLIGHT_PIN 3

Servo servo1; //dodajemy serwo
Password password = Password( "1234" ); //ustalamy hasło

const byte ROWS = 4;
const byte COLS = 3;
int lock=0;
int proby=0;

char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
}; //tworzymy klawiaturkę

byte rowPins[ROWS] = { 5,4,3,2 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 8,7,6, }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
short but1=0;
short but2=0;

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void servo_lock(){ //funkcja blokująca drzwi
servo1.attach(12);
servo1.write(0);
delay(500);
servo1.detach();}

void servo_unlock(){ //funkcja otwierająca drzwi
servo1.attach(12);
servo1.write(100);
delay(500);
servo1.detach();}

void setup()
{
lcd.setCursor(0,0);
lcd.print("Wpisz Haslo");
keypad.addEventListener(keypadEvent);//rozpoczyna nasluch na klawiaturce

}
void cls() {
lcd.clear();
lcd.print("WPISZ HASLO");
lcd.setCursor(0,1); }
void loop(){

}

Keypad getKey();


void keypadEvent(KeypadEvent eKey){


switch (eKey){
case '#':
checkPassword(); //po nacisnięciu # sprawdza poprawność hasła

break;
case '*': //po naciśnięciu * resetuje próbę wpisania hasła
password.reset();
servo_lock();


break;
default:
password.append(eKey);


}
}


void checkPassword(){
if (password.evaluate()){//jeśli hasło się zgadza otwiera drzwi
servo_unlock();
lcd.init();
lcd.backlight(); // Inicjalizacja LCD 2x16

lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Poprawne Haslo");

delay(10000);
servo_lock();
password.reset();


}
else{//a jesli nie to je zamyka
llcd.init();
lcd.backlight(); // zalaczenie podwietlenia
lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Zle haslo");


password.reset();
}
}
Looknij na LiquidCrystal_I2C lcd(0x27, 16, 2);

i podaj właściwy adres dla LCD po I2C.
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 30 paź 2015, 19:05

No i mam niestety problem przy kompilacji zaznacza mi #define BACKLIGHT_PIN 3 na czerwono i piszę że variable or field 'keypadEvent' declared void
nie wiem co z tym zrobić. Proszę pomóżcie mi
stiven
Złota rączka
Posty: 1595
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Drzwi na pin

Post autor: stiven » 31 paź 2015, 20:04

Spróbuj na starszej wersji arduino ide, 1.05.
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 31 paź 2015, 22:03

ten sam problem na 1.0.5 :-(
stiven
Złota rączka
Posty: 1595
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Drzwi na pin

Post autor: stiven » 1 lis 2015, 11:27

Dziwne, że z treści błędu wynika, że to coś związane z klawiaturą, a tak naprawdę chodzi o wyświetlacz a dokładniej o to, że linijka inicjalizująca wyświetlacz LiquidCrystal_I2C lcd(0x27, 16, 2) jest wcześniej, niż zadeklarowana stała #define BACKLIGHT_PIN 3, która jest potrzebna przy inicjalizacji. Jak się przeniesie tą linijkę inicjalizującą za deklarację stałej, to nie ma już tego błędu.

Keypad getKey(); ma być w pętli loop a nie poza.
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 2 lis 2015, 14:07

I niestety jeszcze jeden problemik przy kompilacji invalid conversion from 'int' to 't_backlighPol' [-fpermissive]
. Naprawdę nie rozumiem o co chodzi z tymi błędami i dlatego proszę o pomoc. Jak na razie mam taki kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Password.h>
#include <Keypad.h>
#include <Servo.h>

#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo servo1; //dodajemy serwo
Password password = Password( "1234" ); //ustalamy hasło

const byte ROWS = 4;
const byte COLS = 3;
int lock=0;
int proby=0;

char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
}; //tworzymy klawiaturkę

byte rowPins[ROWS] = { 5,4,3,2 }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 8,7,6, }; // Connect keypad COL0, COL1 and COL2 to these Arduino pins.
short but1=0;
short but2=0;

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


void servo_lock(){ //funkcja blokująca drzwi
servo1.attach(12);
servo1.write(0);
delay(500);
servo1.detach();}

void servo_unlock(){ //funkcja otwierająca drzwi
servo1.attach(12);
servo1.write(100);
delay(500);
servo1.detach();}

void setup()
{
lcd.setCursor(0,0);
lcd.print("Wpisz Haslo");
keypad.addEventListener(keypadEvent);//rozpoczyna nasluch na klawiaturce

}
void cls() {
lcd.clear();
lcd.print("WPISZ HASLO");
lcd.setCursor(0,1); }
void loop(){
Keypad getKey();
}


void keypadEvent(KeypadEvent eKey){


switch (eKey){
case '#':
checkPassword(); //po nacisnięciu # sprawdza poprawność hasła

break;
case '*': //po naciśnięciu * resetuje próbę wpisania hasła
password.reset();
servo_lock();


break;
default:
password.append(eKey);


}
}


void checkPassword(){
if (password.evaluate()){//jeśli hasło się zgadza otwiera drzwi
servo_unlock();
lcd.init();
lcd.backlight(); // Inicjalizacja LCD 2x16

lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Poprawne Haslo");

delay(10000);
servo_lock();
password.reset();


}
else{//a jesli nie to je zamyka
lcd.init();
lcd.backlight(); // zalaczenie podwietlenia
lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna)
lcd.print("Zle haslo");


password.reset();
}
}
rumunn95
Majsterkowicz
Posty: 174
Rejestracja: 12 mar 2015, 18:32

Re: Drzwi na pin

Post autor: rumunn95 » 2 lis 2015, 15:48

W internetach jest ksiazka ( pdf) Arduino 65 praktycznych projektow tak jest wlasnie taki projekt warto sprawdzic

Tapniete z LG G2
stiven
Złota rączka
Posty: 1595
Rejestracja: 13 maja 2014, 08:47
Lokalizacja: Zielona Góra

Re: Drzwi na pin

Post autor: stiven » 2 lis 2015, 17:28

konstruktor u mnie na arduino ide 1.6.3 też jest ten błąd, ale na 1.0.5 nie ma.
konstruktor
Majsterkowicz
Posty: 100
Rejestracja: 27 wrz 2015, 16:23

Re: Drzwi na pin

Post autor: konstruktor » 2 lis 2015, 20:27

wszystko się kompiluje tylko ma problemy z działaniem ale to naprawie sam, rumun podeślesz linka? bo nie ma nigdzie projektu z drzwiami
rumunn95
Majsterkowicz
Posty: 174
Rejestracja: 12 mar 2015, 18:32

Re: Drzwi na pin

Post autor: rumunn95 » 2 lis 2015, 20:55

Sprawdz pw

Tapniete z LG G2
ODPOWIEDZ

Strony partnerskie: