#include <UbidotsArduino.h>
#include <SPI.h>
#include <MFRC522.h>
#include <WiFiNINA.h>
#define SS_PIN 4 //D4
#define RST_PIN 3 //D3
#define verde 0
#define amarillo 8
#define rojo 2
#define bot_1 1
const char* UBIDOTS_TOKEN = “BBFF-1bDj5d3x14efqWLlkT0g58xGCCCkaI”; // Ubidots Token
const char* WIFI_SSID = “Lucas”; // SSID de tu WiFi
const char* WIFI_PASS = “”; // Clave de tu WiFi
const char* DEVICE_LABEL = “GRI”; // Nombre del dispositivo
Ubidots ubidots(UBIDOTS_TOKEN, UBI_UDP);
MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear instancia para sensor RFID MFRC522
const int cantidad = 4; // Elegir la cantidad de llaves con Acceso.
const int cantida = 4;
/////////Tarjetas con Acceso/////////////
String paso[cantida] = {“E7 DE CF 4D”,“CB 55 6F 85”}; //Codigos de tus tarjetas RFID que tendran acceso a entrar.E7 DE CF 4D
String nombres[cantida] = {“LUCAS”," LUCIANO"}; //Modificar los nombres a tu gusto.
String pases[cantidad] = {“A9 08 A4 6E”, “27 5F A9 4D”}; //Codigos de tus tarjetas RFID que tendran acceso a entrar.
String nombre[cantidad] = {“CARLOS”, " SEBASTIAN"}; //Modificar los nombres a tu gusto.
/////////////////////////////////////////
int acceso = 0;
int out = 0;
String llave;
int x= -1 ;
int a = 0 ;
/****************************************
Funciones principales
****************************************/
void setup()
{
ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);
Serial.begin(9600); // inicializa comunicacion por monitor serie a 9600 bps
SPI.begin(); // inicializa bus SPI
mfrc522.PCD_Init(); // inicializa modulo lector
pinMode(bot_1,INPUT);
pinMode (verde, OUTPUT);
pinMode (amarillo, OUTPUT);
pinMode (rojo, OUTPUT);
digitalWrite(rojo,LOW);
digitalWrite(amarillo,LOW);
digitalWrite(verde,LOW);
}
void loop()
{
a = digitalRead(bot_1);
if(a==LOW)
{
digitalWrite(rojo, LOW);
digitalWrite(amarillo,LOW);
digitalWrite(verde,LOW);
delay(2000);
}
else
{
digitalWrite(rojo, LOW);
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Show UID on serial monitor
//Serial.println();
//Serial.print(" UID tag :");
String content = “”;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
//Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " “);
//Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0” : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
//Serial.println();
llave = content.substring(1);
verifico();
verifica();
if (acceso==1)
{
acceso=0;
}
}
void cambio(){
digitalWrite(rojo,LOW);
digitalWrite(amarillo,HIGH);
digitalWrite(verde,LOW);
}
void cambio1(){
digitalWrite(rojo,LOW);
digitalWrite(amarillo,LOW);
digitalWrite(verde,HIGH);
}
void verifico() {
for (int y = 0; y <cantidad; y++) {
//Serial.println(y);
if (llave == pases[y]) {
//Serial.println(llave);
//Serial.println(pases[y]);
acceso = 1;
x = y;
cambio();
registro();
}
}
}
void verifica() {
for (int y = 0; y <cantida; y++) {
//Serial.println(y);
if (llave == paso[y]) {
//Serial.println(llave);
//Serial.println(pases[y]);
acceso = 1;
x = y;
cambio1();
registra();
}
}
}
void registra() {
//Serial.println(“Registrando”);
char str[11];
nombre[x].toCharArray(str, sizeof(nombre[x]));
ubidots.addContext(“asistio”, str);
char* context = (char*)malloc(sizeof(char) * 60);
/* Estructura el contexto para ser enviado */
ubidots.getContext(context);
/* Envia la variable con su contexto */
ubidots.add(“asistencia”, 1, context); // Cambiar con el nombre de tu variable
bool bufferSent = false;
bufferSent = ubidots.send(DEVICE_LABEL); // Enviará el dato al DEVICE_LABEL declarado.
free(context);
}
void registro() {
//Serial.println(“Registrando”);
char str[11];
nombres[x].toCharArray(str, sizeof(nombres[x]));
ubidots.addContext(“libero”, str);
char* context = (char*)malloc(sizeof(char) * 60);
/* Estructura el contexto para ser enviado */
ubidots.getContext(context);
/* Envia la variable con su contexto */
ubidots.add(“asistencia”, 1, context); // Cambiar con el nombre de tu variable
bool bufferSent = false;
bufferSent = ubidots.send(DEVICE_LABEL); // Enviará el dato al DEVICE_LABEL declarado.
free(context);
}