28-05-2022, 21:17
Cześć,
Jestem graczem ASG, znalazłem poradnik jak zbudować atrapę bomby na rozgrywki w Internecie wraz z całym schematem oraz skryptem, i o ile podłączenie wszystkiego do kupy nie sprawiło mi problemu tak wgranie programu już tak.
Mianowicie mam problem z biblioteką LiquidCrystal_I2C... Gość niestety w poradniku nie napisał z jakich bibliotek korzystał. Szukam i czytam, wgrywam nowe biblioteki, testuje ale nie potrafię rozwiązać tego problemu sam. Macie może jakąś radę jak dobrać tą bibliotekę?
Program:
Oraz komunikat błędu:
Poradnik jest z 2016 (nie wiem czy ma to jakieś znaczenie), jakaś rada jak próbować znaleźć tą bibliotekę?
Jestem graczem ASG, znalazłem poradnik jak zbudować atrapę bomby na rozgrywki w Internecie wraz z całym schematem oraz skryptem, i o ile podłączenie wszystkiego do kupy nie sprawiło mi problemu tak wgranie programu już tak.
Mianowicie mam problem z biblioteką LiquidCrystal_I2C... Gość niestety w poradniku nie napisał z jakich bibliotek korzystał. Szukam i czytam, wgrywam nowe biblioteki, testuje ale nie potrafię rozwiązać tego problemu sam. Macie może jakąś radę jak dobrać tą bibliotekę?
Program:
Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define BACKLIGHT_PIN 3
int e;
int p=0;
char t;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);
const byte wiersze= 4; //ilosc wierszy
const byte kolumny= 4; //ilosc kolumn
char mapaklawiszy[wiersze][kolumny]=
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte wiersze_piny[wiersze] = {9,8,7,6};//{0,1,2,3};
byte kolumny_piny[kolumny] = {5,4,3,2};//{4,5,6,7};
Keypad myKeypad= Keypad(makeKeymap(mapaklawiszy), wiersze_piny, kolumny_piny,wiersze, kolumny);
volatile int l=0;
int mykey[4];
int haslo[4];
int zapis_h[4]={-2,-2,-2,-2};
void setup()
{
Serial.begin(9600);
lcd.begin (16,2);
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
pinMode(10,OUTPUT);
pinMode(A0,INPUT_PULLUP);
pinMode(A1,INPUT_PULLUP);
lcd.home();
lcd.print(" GOTOWY ??? ");
lcd_czas_zero();
lcd_haslo_zero();
}
void loop()
{
int test=0;
char wybor;
wybor=myKeypad.getKey();
switch(wybor)
{
case 'A': //case '1':
{
opcja1();
}
break;
case 'C': //case '1':
{
lcd.setCursor(0,0);
lcd.print("ARE YOU READY ? ");
lcd_czas_zero();
lcd_haslo_zero();
}
break;
}
}
int opcja1()
{
lcd_czas_zero();
lcd_haslo_zero();
lcd.setCursor(0,0);
lcd.print(" Ust. CZAS ");
Serial.println("case 1");
jaki_czas();
}
int czas(int j, int i)
{
boolean czy=false;
lcd.setCursor(0,0);
lcd.print(" Ust. HASLO ");
Serial.println("HASLO");
l=0;
haslo_glowne();
lcd.setCursor(0,0);
lcd.print(" ");
start_czas();
i=i*10;
while(j>-1)//(int x=j+1;j>-1;x--)
{
for(int y=i;y>-1;y--)
{
if(j<10)
{
lcd.setCursor(2,1);
lcd.print("0");
lcd.setCursor(3,1);
lcd.print(j);
}
else
{
lcd.setCursor(2,1);
lcd.print(j);
}
lcd.setCursor(4,1);
lcd.print(":");
if(y<100)
{
lcd.setCursor(5,1);
lcd.print("0");
lcd.setCursor(6,1);
lcd.print(y/10);
}
else
{
lcd.setCursor(5,1);
lcd.print(y/10);
}
if(y<100 & j==0)
{
lcd.setCursor(5,1);
lcd.print("0");
lcd.setCursor(6,1);
lcd.print(y/10);
if(y%10 == 0)
{
digitalWrite(10,HIGH);
lcd.noDisplay();
}
}
else if(y<100)
{
lcd.setCursor(5,1);
lcd.print("0");
lcd.setCursor(6,1);
lcd.print(y/10);
}
else
{
lcd.setCursor(5,1);
lcd.print(y/10);
}
test_haslo();
float odczyt1 = analogRead(A0);
float odczyt2 = analogRead(A1);
if(odczyt1 >1000.00 && odczyt2 >1000.00)
{
if(haslo[0]==zapis_h[0] && haslo[1]==zapis_h[1] && haslo[2]==zapis_h[2] && haslo[3]==zapis_h[3])
{
Serial.println("HASLO POPRAWNE");
lcd.display();
digitalWrite(10,LOW);
lcd.setCursor(4, 1);
czy=true;
break;
}
}
if(zapis_h[0]>-1 && zapis_h[1]>-1 && zapis_h[2]>-1 && zapis_h[3]>-1)
{
zapis_h[0]=-1;
zapis_h[1]=-1;
zapis_h[2]=-1;
zapis_h[3]=-1;
Serial.println("HASLO NIE POPRAWNE");
lcd_haslo_zero();
}
delay(70);
lcd.display();
digitalWrite(10,LOW);
delay(30);
}
float odczyt1 = analogRead(A0);
float odczyt2 = analogRead(A1);
if(odczyt1 >1000.00 && odczyt2 >1000.00)
{
if(haslo[0]==zapis_h[0] && haslo[1]==zapis_h[1] && haslo[2]==zapis_h[2] && haslo[3]==zapis_h[3])
{
Serial.println("HASLO POPRAWNE");
lcd.display();
digitalWrite(10,LOW);
lcd.setCursor(4, 1);
czy=true;
break;
}
}
i=600;
j=j-1;
}
int o=0;
if(czy)
{
lcd.setCursor(0, 0);
lcd.print("HASLO. POPRAWNE ");
while(o<3)
{
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
delay(200);
o++;
}
}
else
{
lcd.setCursor(0, 0);
lcd.print(" BOOOOOM!!! ");
digitalWrite(10,HIGH);
delay(5000);
digitalWrite(10,LOW);
}
}
//wyswietlenie czasu ktory jest nieznany
int lcd_czas_zero()
{
lcd.setCursor(0,1);
lcd.print("T~--:--");
}
//wyswietlenie hasła ktore jest nieznane
int lcd_haslo_zero()
{
lcd.setCursor(10,1);
lcd.print("H~****");
}
int jaki_czas()
{
lcd_czas_zero();
int i,j;
for(int q=0;q<4;q++)
{
mykey[q]=0;
}
i=0;
j=0;
l=0;
while(l<4)
{
char keypressed = myKeypad.getKey();
if (keypressed)
{
mykey[l]=keypressed-'0';
if(l<=1)
{
lcd.setCursor(l+2,1);
lcd.print(mykey[l]);
}
else
{
lcd.setCursor(l+3,1);
lcd.print(mykey[l]);
}
l++;
Serial.println(keypressed);
}
}
i=(mykey[0]*10)+mykey[1];//i=((mykey[0]-'0')*10)+(mykey[1]-'0');
j=(mykey[2]*10)+mykey[3];// j=((mykey[2]-'0')*10)+(mykey[3]-'0');
lcd.setCursor(0,0);
lcd.print(" ");
while(l!=66)
{
l=myKeypad.getKey();
if(l==67)
{
jaki_czas();
}
}
czas(i,j);
}
int start_czas()
{
int l=0;
while(l!=35)
{
l=myKeypad.getKey();
}
lcd.setCursor(0,0);
lcd.print(" START ");
Serial.println("START");
}
int haslo_glowne()
{
lcd_haslo_zero();
l=0;
while(l<4)
{
char keypressed_1 = myKeypad.getKey();
if (keypressed_1) //if (keypressed != NO_KEY)
{
haslo[l]=keypressed_1-'0';
lcd.setCursor(l+12,1);
lcd.print(haslo[l]);
l++;
}
}
while(l!=35)
{
l=myKeypad.getKey();
Serial.println("2 while");
if(l==67) //C = 67, B=66
{
haslo_glowne();
}
}
lcd_haslo_zero();
Serial.println("HASLO ZAPISANE");
}
int test_haslo()
{
int keypressed_2 = 0;
if(zapis_h[0]==-1)
{
p=0;
}
keypressed_2 = myKeypad.getKey()-'0';
if( p<4 && keypressed_2>0 )
{
zapis_h[p]=keypressed_2;
lcd.setCursor(p+12,1);
lcd.print(zapis_h[p]);
p++;
}
}
Oraz komunikat błędu:
Kod:
Arduino:1.8.19 (Windows Store 1.8.57.0) (Windows 10), Płytka:"Arduino Uno"
sketch_may26a:10:41: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);
^
In file included from C:\Users\grabe\Documents\Arduino\sketch_may26a\sketch_may26a.ino:2:0:
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:57:3: note: candidate: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
^~~~~~~~~~~~~~~~~
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:57:3: note: candidate expects 3 arguments, 8 provided
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)
class LiquidCrystal_I2C : public Print {
^~~~~~~~~~~~~~~~~
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(LiquidCrystal_I2C&&)
C:\Users\grabe\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided
C:\Users\grabe\Documents\Arduino\sketch_may26a\sketch_may26a.ino: In function 'void setup()':
sketch_may26a:37:6: error: 'class LiquidCrystal_I2C' has no member named 'setBacklightPin'; did you mean 'setBacklight'?
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
^~~~~~~~~~~~~~~
setBacklight
sketch_may26a:37:36: error: 'POSITIVE' was not declared in this scope
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
^~~~~~~~
exit status 1
no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'
Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Poradnik jest z 2016 (nie wiem czy ma to jakieś znaczenie), jakaś rada jak próbować znaleźć tą bibliotekę?