Salve a tutti,
sono profano del mestiere ma ho ben chiaro quello che vorrei fare.
vorrei realizzare come da titolo un sistema di controllo accessi per minori che una volta riscontrato la maggiore età attivarà un motore passo passo , tra i tanti progetti nella rete sono riuscito a fare un po’ di passi copiando qua e la gli sketch.
per la realizzazione ho acquistato:
N 1 arduino uno rev3
N 1 USB Host arduino shield
N 1 Lettore di tessere magnetiche
N 1 motore passo passo
questo è quanto sono riuscito a programmare oltre non riesco, chiedo gentilmente a chiunque voglia aiutarmi nel progetto la compilazione corretta per il giusto funzionamento.
grazie anticipatamante a tutti
#include <DS1307RTC.h>
#include <SPI.h>
#include <Max3421e.h>
#include <Max3421e_constants.h>
#include <Usb.h>
/*
Data taken from configuration descriptor.
/
#define KBD_ADDR 1
#define KBD_EP 1
#define EP_MAXPKTSIZE 8
#define EP_POLL 0x0a
/
Endpoint record structure.
/
EP_RECORD ep_record[2];
#define LINEFEED 10
#define RETURNCH 13
#define ENDTXTFILE 26
/
0 nessun debug;
1 debug normale;
1 per avere debug dettagliato.
/
#define DEBUG 1
MAX3421E Max;
USB Usb;
String idutn="";
void setup()
{
Serial.begin(9600);
Serial.println(“Controllo accesso”);
/
Setto l’uscita digitale “ctcPin” come OUTPUT.
/
if(DEBUG>1) Serial.println(“connesso”);
/
Start USB Host controller.
*/
Max.powerOn();
if(DEBUG) Serial.println(“Sistema attivato e pronto per la lettura di schede”);
delay(1000);
}
void loop()
{
/*
If there are incoming bytes available
from the server, read them and print them.
/
String row="";
String testo="";
String code="";
/**/
if(DEBUG>1) Serial.println(“Inizio loop”);
Max.Task();
if(DEBUG>1) Serial.println(“Max Task”);
Usb.Task();
if(DEBUG>1) Serial.println(“Usb Task”);
if(Usb.getUsbTaskState() == USB_STATE_CONFIGURING )
{
/
Wait for addressing state.
/
if(DEBUG>1) Serial.println(“init”);
crdrdr_init();
Usb.setUsbTaskState( USB_STATE_RUNNING );
}
if(Usb.getUsbTaskState() == USB_STATE_RUNNING )
{
/
Poll the card reader.
*/
if(DEBUG>1) Serial.println(“poll”);
code=crdrdr_poll();
if(DEBUG>1) Serial.println(“exit poll”);
}
if(code.length()==8)
{
if(DEBUG) Serial.println(“Connessione al server.”);
{
}
{
if(DEBUG>1) Serial.print(“S:”);
if(DEBUG>1) Serial.println(row);
if(DEBUG) Serial.println(“ACCESSO NEGATO!”);
}
Serial.flush();
if(DEBUG>1) Serial.println(“END”);
while(1); //stop
}
} /* loop */
String row="";
String netgets()
{
String s="";
char ch=0;
int i=0;
/**/
while(1)
{
if(ch==RETURNCH)
{
return(s);
}
if(ch!=-1) s+=ch;
}
return(s);
} /* netgets /
void crdrdr_init(void)
/
Initialize card reader.
/
{
byte rcode = 0; //return code
/
Initialize data structures;
Copy endpoint 0 parameters.
*/
ep_record[ 0 ] = ( Usb.getDevTableEntry( 0,0 ));
ep_record[ 1 ].MaxPktSize = EP_MAXPKTSIZE;
ep_record[ 1 ].Interval = EP_POLL;
ep_record[ 1 ].sndToggle = bmSNDTOG0;
ep_record[ 1 ].rcvToggle = bmRCVTOG0;
/
Plug endpoint parameters to devtable.
/
Usb.setDevTableEntry( 1, ep_record );
/
Configure device.
/
rcode = Usb.setConf( KBD_ADDR, 0, 1 );
if(rcode)
{
if(DEBUG) Serial.print(“Error attempting to configure card reader.Return code:”);
if(DEBUG) Serial.println( rcode, HEX );
while(1); //stop
}
/
Set boot protocol.
*/
rcode = Usb.setProto( KBD_ADDR, 0, 0, 0 );
if(rcode)
{
if(DEBUG) Serial.print(“Error attempting to configure boot protocol.Return code:”);
if(DEBUG) Serial.println( rcode, HEX );
while(1); //stop
}
} /* crdrdr_init /
int readCardReader(void)
{
int val=0;
byte rcode=0; //return code
char buf[8]={0};
while(buf[2]==0) rcode=Usb.inTransfer(KBD_ADDR,KBD_EP,8,buf);
if(rcode!=0)
{
return -1;
}
val=(int)buf[2]-29;
if(val==10) val=0;
if(DEBUG>1) Serial.println(val);
return(val);
} / readCardReader /
String crdrdr_poll(void)
/
Poll card reader and print result.
/
{
int digit=readCardReader();
if(DEBUG>1) Serial.println(".poll inizia switch");
switch(digit)
{
case 22:
if(DEBUG>1) Serial.println(“Inizio lettura codice traccia 2”);
idutn=readCardReader();
idutn+=readCardReader();
idutn+=readCardReader();
/
Controlla che siamo in presenza di un prefisso valido di tre cifre.
*/
if(idutn!=“204”)
{
if(DEBUG>1) Serial.println(".poll errore 1"); return("-ERR1");
}
idutn+=readCardReader();
idutn+=readCardReader();
idutn+=readCardReader();
idutn+=readCardReader();
idutn+=readCardReader();
if(readCardReader()==27)
{
return(idutn);
}
else
{
if(DEBUG>1) Serial.println(".poll errore 2 “);
return(”-ERR2");
}
break;
default:
if(DEBUG>1) Serial.println(".poll default");
return(“0”);
}
/*
Start USB Host controller.
*/
Max.powerOn();
if(DEBUG) Serial.println(“Sistema attivato e pronto per la lettura di schede”);
delay(1000);
}
String testo="";
String code="";
private Sub AssisititoCodiceFIscale_AfterUpdato ()
Dim anno As Integer
Dim Mese As Integer
Dim giorno As Integer
Dim DataNascita As Date
anno = Mid"$"(AssisititoCodiceFIscale, 7, 2)
If anno > Year(Format(Now(),“dd/mm/yy”)) Then
anno = anno - 100
MsgBox “anno STRANO…”
end If
Mese = retMese(Mid"$"(AssisititoCodiceFIscale, 9, 1))
giorno = Mid"$"(AssisititoCodiceFIscale, 10, 2)
If giorno > 31 Then
giorno = giorno - 40
MsgBox “FEMMINA”
end If
DataNascita = DateSerial(anno, Mese, giorno)
Me!AssisititoEta = "Anni: " & Age(DataNascita)
end Sub
If IsNull(varBirthdate) then Age = 0: Exit Function
varAge = DateDiff(“yyyy”, varBirthDate, Now)
If Date < DateSerial(Year(Now), Month(varBirthDate), _
Day(varBirthDate)) Then
varAge = varAge - 1
end If
Age = CInt(varAge)
end Function
int motorPins = {8, 9, 10, 11};
int count = 0;
int count2 = 0;
int delayTime = 500;
int val = 0;
void setup() {
for (count = 0; count < 4; count++) {
pinMode(motorPins[count], OUTPUT);
}
}
void moveForward() {
if ((count2 == 0) || (count2 == 1)) {
count2 = 16;
}
}