Arduino Polska Forum

Pełna wersja: RFID 125kHz with memory
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam!
Mam problem z takim programem na Arduino Nano plus wyświetlacz OLED 1,3 Arduino I2C SH1106.Przy próbie weryfikacji wyskakuje błąd: Arduino: 1.0.6  Arduino Nano : error: integer constant is too large for 'long' type
Wszystkie aktualne biblioteki są wgrane.Płytka Arduino Nano/Atmega 328.Programator AVRISP mkll .Port COM ok.
Nie wiem jak dodać tu kod źródłowy w Arduino,bo jest on w dwóch częściach?ZIP nie,Arduino plik nie?
1.RFID_125kHz_with_memory
2.functions

Problem częściowo rozwiązałem na Arduino IDE 2.04.Brak błędów jednak nic się nie wyświetla na wyświetlaczu.Program trzeba dostosować do bibliotek: OLED_SSD1306___SH1106-1.0.7 bo wgrywając demo z tej biblioteki wyświetlacz działa.Pomoże jakaś życzliwa dusza?
Należy zadać sobie pytanie i poszukać informacji, czy Arduino ogarnie 64-bitowe zmienne. Long w Arduino ma 32 bity, a w swoim kodzie masz:
uint64_t universalID[8]
(08-07-2023, 23:18)MadMrQ napisał(a): [ -> ]Należy zadać sobie pytanie i poszukać informacji, czy Arduino ogarnie 64-bitowe zmienne. Long w Arduino ma 32 bity, a w swoim kodzie masz:
uint64_t universalID[8]
Może jest coś namieszane w kodzie.Ten projekt to ma być prosty czytnik kodów RFID 125kHz z pamięcią kilku kluczy którymi można otwierać jakieś tam drzwi. 



Ogarnąłem i wyświetlacz już działa.Miałem zły wyświetlacz na OLED 1,3 Arduino I2C SH1106 a w programie jest przewidziany na Adafruit Arduino I2C SSD1306.



Nie wiem do czego są i czy są potrzebne te biblioteki na początku programu bo bez tego program tez się kompiluje.







#include <stdio.h>
#include <EEPROM.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/sleep.h>


Chciałbym aby to urządzenie,działało z modułem czytnika kart RFID RDM6300 125kHz  ale to już wyższa szkoła jazdy.



Oryginalnie za cewkę służy przerobiony jeden klucz RFID 125 kHz gdzie wycięty został mikrochip i dolutowane podzespoły jak na schemacie.Myślę że lepszym rozwiązaniem byłoby zastosowanie właśnie czytnika RDM6300 125kHz,chociaż to powiększa gabarytowo projekt.Czy zamiast tych sensorów można tak przerobić program żeby działał z zwykłymi przełącznikami bistabilnymi?Widać w szkicu że jest to urządzenie o pamięci 8 kluczy przykładowo nazwanych tak jak na wyświetlaczu:

METAKOM_CYFRAL,

  METAKOM_1,

  CYFRAL_1,

  VIZIT_1,

  VIZIT_2,

  ELTIS,

  LIFT,

  TOILET



Po dodaniu sensorów TTP223 14x11mm - Touch Sensor program jakoś tam reaguje ale po chwili sensory szaleją i migają jak chcą.Jeden jest wyraźnie za czuły i działa z większej odległości.Mam je zlutowane bardzo blisko siebie jak na zdjęciu.Oby to nie było powodem ich zakłóceń.Po naciśnięciu środkowego(wejście czy wyjście) program wyświetla monit"Press reset to continue..." i nic się nie da zrobić.Skecz jest przez to niestabilny,czyli ma błędy.Po iluś tam dniach prób program działa i wybiera odpowiedni klucz po każdym zresetowaniu.Po to chyba jest ten monit ,że trzeba go zresetować za każdym razem jak się wybierze klucz.A można to pewnie przerobić inaczej.Z sensorami poradziłem sobie tak że przeniosłem je do pinów D9,D8,D7 i podłączyłem do niższego napięcia 3,3V.Moduł z tranzystorem musi być jako nadajnik.Wykorzystałem antenę z RDM6300 z tego schematu plus elementy dyskretne.Zrobiłem skecz w nowej odsłonie pod nazwą "Nowe"



Kod:
static unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
 B00000001, B11000000,
 B00000001, B11000000,
 B00000011, B11100000,
 B11110011, B11100000,
 B11111110, B11111000,
 B01111110, B11111111,
 B00110011, B10011111,
 B00011111, B11111100,
 B00001101, B01110000,
 B00011011, B10100000,
 B00111111, B11100000,
 B00111111, B11110000,
 B01111100, B11110000,
 B01110000, B01110000,
 B00000000, B00110000 };
To można wywalić,Są to jakieś tablice do grafiki:https://forum.arduino.cc/t/converting-bitmaps-to-byte-arrays/127765
A i doczytałem że w tą tablicę poniżej uint64_t można wstawiać dodatkowe klucze.Tylko w jakim systemie?

uint64_t universalID[] =
{
  METAKOM_CYFRAL,
  METAKOM_1,
  CYFRAL_1,
  VIZIT_1,
  VIZIT_2,
  ELTIS,
  LIFT,
  TOILET
};