salve avrei bisogno di un aiuto su un progetto che sto sviluppando.
io vorrei fare in modo che se arriva un segnale bluetooth e il codice della carta magnetica corrisponde a quello inserito nello sketch, il servomotore deve girare di 90 gradi.
sono riuscito a costruirmi l'applicazione che fa girare il servo.
sono riuscito a far in modo che mi dica se la carta è corretta o meno.
il mio problema è mettere le cose assieme.
qui allego il codice
/*
PINOUT:
RC522 MODULE Uno/Nano
SDA D10
SCK D13
MOSI D11
MISO D12
IRQ N/A
GND GND
RST D9
3.3V 3.3V
*/
/*servomotore*/
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo;
/*bluetooth*/
int bluetoothTx =2; // bluetooth tx to 10 pin
int bluetoothRx = 3; // bluetooth rx to 11 pin
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
/*rfid card*/
#include <SPI.h>
#include <RFID.h>
#define SDA_DIO 10 // 53 per Mega
#define RESET_DIO 9
#define delayRead 700 // Time of delay
RFID RC522(SDA_DIO, RESET_DIO);
String codiceAutorizzato = "C0449B7C63";
void setup()
{
//setup servo
myservo.attach(4);
//setup bluetooth
bluetooth.begin(9600);
//setup RFID card
Serial.begin(9600);
SPI.begin();
RC522.init();
Serial.println("Setup");
}
void loop(){
//solo bluetooth
if(bluetooth.available()> 0 ){ // receive number from bluetooth
int servopos = bluetooth.read();
myservo.write(servopos);
}
//solo rfit card
byte i;
if (RC522.isCard())
{
// Viene letto il suo codice
RC522.readCardSerial();
String codiceLetto ="";
Serial.println("Codice delle tessera letto:");
for(i = 0; i <= 4; i++)
{
codiceLetto+= String (RC522.serNum[i],HEX);
codiceLetto.toUpperCase();
}
Serial.println(codiceLetto);
if(verificaCodice(codiceLetto)){
Serial.println("accesso autorizzato");
}else{
Serial.println("accesso non autorizzato");
}
delay(delayRead);
}
}
boolean verificaCodice(String codiceLetto){
if(codiceLetto.equals(codiceAutorizzato)){
return true;
}else{
return false;
}
}