Janu12345 Napisano Listopad 12, 2022 Udostępnij Napisano Listopad 12, 2022 Witam jeśli ktoś by mógł to sprawdzić to byłbym bardzo wdzięczny. Mianowicie w kodzie jest chyba wszystko poprawnie ale gdy próbuje wgrać pokazuje błąd kompilacji jaka jest tego wada ?? // RFID/NFC Scanner // (C)2018 Pawel A. Hernik // YouTube video: https://youtu.be/RnljdPqzepk /* CONNECTIONS ----------- SSD1306 OLED: SDA -> A4 SCL -> A5 RC522 RFID module: SDA -> D10 (SS) SCK -> D13 MOSI -> D11 MISO -> D12 IRQ -> NC GND -> GND RST -> D9 3V3 -> 3V3 (5V seems to work fine, too) RC522 library: https://github.com/mdxs/MFRC522 */ #include <OLEDSoftI2C_SSD1306.h> //#include <OLEDSoftI2C_SH1106.h> // define USEHW in above header for hw I2C version OLEDSoftI2C_SSD1306 oled(0x3c); //OLEDSoftI2C_SH1106 oled(0x3c); #if USEHW==1 #include <Wire.h> #endif #include "small5x7bold_font.h" #include "term7x14_font.h" //#include "fonts_all.h" #include <SPI.h> #include <MFRC522.h> #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); char *getPICCname(MFRC522::PICC_Type piccType) { switch (piccType) { case MFRC522::PICC_TYPE_ISO_14443_4: return "ISO/IEC 14443-4"; case MFRC522::PICC_TYPE_ISO_18092: return "ISO/IEC 18092 (NFC)"; case MFRC522::PICC_TYPE_MIFARE_MINI: return "MIFARE Mini"; case MFRC522::PICC_TYPE_MIFARE_1K: return "MIFARE 1KB"; case MFRC522::PICC_TYPE_MIFARE_4K: return "MIFARE 4KB"; case MFRC522::PICC_TYPE_MIFARE_UL: return "MIFARE Ultralight"; case MFRC522::PICC_TYPE_MIFARE_PLUS: return "MIFARE Plus"; case MFRC522::PICC_TYPE_TNP3XXX: return "MIFARE TNP3XXX"; case MFRC522::PICC_TYPE_NOT_COMPLETE: return "not complete"; case MFRC522::PICC_TYPE_UNKNOWN: default: return "Unknown"; } } char buf[30]; void RFID_PrintInfo( MFRC522::Uid *uid ) { snprintf(buf,30,"UID: %d bytes",uid->size); oled.setFont(Small5x7PLBold); oled.printStr(ALIGN_CENTER, 3, buf); oled.setFont(uid->size>7 ? Small5x7PLBold : Term7x14PL); oled.setCR(1); Serial.print(F("Card UID:")); int wd = 18; // for size=7 if(uid->size>7) wd=15; if(uid->size<7) wd=19; int xs = (SCR_WD-uid->size*wd)/2; for(byte i = 0; i < uid->size; i++) { snprintf(buf,30,"%02X ",uid->uidByte[i]); oled.printStr(xs+i*wd, 0, buf); if(uid->uidByte[i] < 0x10) Serial.print(F(" 0")); else Serial.print(F(" ")); Serial.print(uid->uidByte[i], HEX); } Serial.println(); oled.setCR(0); oled.setFont(Small5x7PLBold); Serial.print(F("Card SAK: ")); if(uid->sak < 0x10) Serial.print(F("0")); Serial.println(uid->sak, HEX); snprintf(buf,30,"Card SAK: 0x%02X",uid->sak); oled.printStr(ALIGN_CENTER, 4, buf); MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(uid->sak); Serial.print(F("PICC type: ")); Serial.println(getPICCname(piccType)); oled.setFont(Small5x7PLBold); oled.printStr(ALIGN_CENTER, 2, getPICCname(piccType)); char *txt=""; switch (piccType) { case MFRC522::PICC_TYPE_MIFARE_MINI: txt="5 sectors = 320 bytes"; break; case MFRC522::PICC_TYPE_MIFARE_1K: txt="16 sectors = 1024 bytes"; break; case MFRC522::PICC_TYPE_MIFARE_4K: txt="40 sectors = 4096 bytes"; break; case MFRC522::PICC_TYPE_MIFARE_UL: txt="16 pages = 64 bytes"; break; } oled.printStr(ALIGN_CENTER, 5, txt); Serial.println(txt); Serial.println(); mfrc522.PICC_HaltA(); } void RFID_FirmwareVersion() { byte v = mfrc522.PCD_ReadRegister(MFRC522::VersionReg); Serial.print(F("Firmware Version: 0x")); Serial.print(v, HEX); Serial.print(F(" ")); char *ver; switch(v) { case 0x88: ver="clone?"; break; case 0x90: ver="v0.0"; break; case 0x91: ver="v1.0"; break; case 0x92: ver="v2.0"; break; default: ver="v???"; } Serial.println(ver); Serial.println(); oled.printStr(ALIGN_CENTER, 0, "MRC522 Firmware Version"); snprintf(buf,30,"%s (0x%02x)",ver,v); oled.printStr(ALIGN_CENTER, 2, buf); if((v == 0x00) || (v == 0xFF)) { oled.printStr(ALIGN_CENTER, 4, "Communication failure!"); Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?")); } } void setup() { Serial.begin(9600); oled.init(0); // 0-128x64, 1-128x32 oled.clrScr(); oled.setFont(Small5x7PLBold); SPI.begin(); mfrc522.PCD_Init(); //mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max); RFID_FirmwareVersion(); } int cardNo = 1; unsigned long t = 0; void loop() { if( mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial() ) { oled.clrScr(); RFID_PrintInfo(&(mfrc522.uid)); cardNo++; } else { if(millis()-t<400) { snprintf(buf,30,"Scan card #%d",cardNo); oled.printStr(ALIGN_CENTER, 7, buf); } else { oled.fillWin(0,7,SCR_WD,1,0); } if(millis()-t>800) t = millis(); } } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Listopad 14, 2022 Udostępnij Listopad 14, 2022 @Janu12345 witam na forum! Sprawdź czy kompilator na pewno nie pokazuje nic więcej ponad tym wycinkiem, który tutaj wstawiłeś 😉 To pole z błędami można przewijać i prawdopodobnie znajdziesz tam więcej informacji na temat Twojego błędu. Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Listopad 14, 2022 Udostępnij Listopad 14, 2022 3 minuty temu, Treker napisał: Sprawdź czy kompilator na pewno nie pokazuje nic więcej ponad tym wycinkiem Najlepiej jak w ustawieniach IDE PLIK-PREFERENCJE zaznaczysz by były pokazywane szczegółowe informacje podczas kompilowania i wgrywania programu, a także wszystkie ostrzeżenia kompilatora. 6 minut temu, Treker napisał: To pole z błędami można przewijać Nie tylko - można także rozciągnąć je do większego rozmiaru. Po zaznaczeniu tych opcji poszukaj konkretnego błędu. Cytuj Link do komentarza Share on other sites More sharing options...
ethanak Listopad 14, 2022 Udostępnij Listopad 14, 2022 A najlepiej kliknąć w przycisk "skopiuj opis błędów" (pokaże się nad polem błędów w przypadku ich wystąpienia) i wkleić do posta w polu "wstaw kod programu", najlepiej zaznaczając "brak podświetlenia składni". 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Janu12345 Listopad 14, 2022 Autor tematu Udostępnij Listopad 14, 2022 Dzięki popróbuje i zabacze:) 1 Cytuj Link do komentarza Share on other sites More sharing options...
darex120 Sierpień 19, 2023 Udostępnij Sierpień 19, 2023 Witam nie będe otwierał nowego tematu ale mam podobny problem z tą biblioteką może coś zaradzicie na ten problemik Wyskakuje mi błąd w kompilacji Arduino Uno C:\Users\darex120\AppData\Local\Temp\ccQQhaSd.ltrans0.ltrans.o: In function `i2c_write': C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:310: undefined reference to `ass_i2c_wait_scl_high' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:310: undefined reference to `ass_i2c_wait_scl_high' C:\Users\darex120\AppData\Local\Temp\ccQQhaSd.ltrans0.ltrans.o: In function `i2c_start(unsigned char) [clone .constprop.29]': C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:161: undefined reference to `ass_i2c_wait_scl_high' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:161: undefined reference to `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:161: undefined reference to `ass_i2c_write' C:\Users\darex120\AppData\Local\Temp\ccQQhaSd.ltrans0.ltrans.o: In function `ass_i2c_stop': C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234: undefined reference to `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234:(.text+0xf66): relocation truncated to fit: R_AVR_13_PCREL against undefined symbol `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234: undefined reference to `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234:(.text+0xf6a): relocation truncated to fit: R_AVR_13_PCREL against undefined symbol `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234: undefined reference to `ass_i2c_wait_scl_high' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234:(.text+0xf6e): relocation truncated to fit: R_AVR_13_PCREL against undefined symbol `ass_i2c_wait_scl_high' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234: undefined reference to `ass_i2c_delay_half' C:\Users\darex120\Documents\Arduino\libraries\OLEDSoftI2C_SSD1306-master/SoftI2C.cpp:234:(.text+0xf72): relocation truncated to fit: R_AVR_13_PCREL against undefined symbol `ass_i2c_delay_half' collect2.exe: error: ld returned 1 exit status exit status 1 Błąd kompilacji dla płytki Arduino Uno. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!