Progetto di maturità. Aiutatemi per favore

gpb01:
NON devi cercare un pin SS, qualsiasi pin digitale va bene come SS, purché sia libero. E' che poi devi trovare il modo di dire alla libreria che pin hai usato.

Guglielmo

Qualche libreria da consigliare? Perché non mi sta funzionando con quella che avevo precedentemente usato :-\

Che libreria usi ? Metti il link ...

Guglielmo

gpb01:
Che libreria usi ? Metti il link ...

Guglielmo

Mi sono basato su questo sito che utilizza la libreria MFRC522.h scaricata attraverso Arduino

Il codice usato è questo:

#include <MFRC522.h>
#define GREEN_LED_PIN 2
#define RED_LED_PIN 3

MFRC522 rfid(9, 31);

String users[] = {"50cf837c"};  // array delle tessere autorizzate
int usersSize = sizeof(users)/sizeof(String);

void setup(){
  SPI.begin();
  rfid.PCD_Init();
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(RED_LED_PIN, OUTPUT);
}

void loop(){
  if(rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()){
    String uid = getUID();
    if(checkUID(uid)){
      blinkLed(GREEN_LED_PIN, 2000, 1);
    }else{
      blinkLed(RED_LED_PIN, 400, 2);
    }
  }
  delay(10);
}

String getUID(){
  String uid = "";
  for(int i = 0; i < rfid.uid.size; i++){   // controllo degli userID validi
    uid += rfid.uid.uidByte[i] < 0x10 ? "0" : "";
    uid += String(rfid.uid.uidByte[i], HEX);
  }
  rfid.PICC_HaltA();
  return uid;
}

bool checkUID(String uid){   // controllo se valido o no
  for(int i = 0; i < usersSize; i++){
    if(users[i] == uid){
      return true;
    }
  }
  return false;
}

void blinkLed(int led, int duration, int repeat){  // lampeggio led
  for(int i = 0; i < repeat; i++){
    digitalWrite(led, HIGH);
    delay(duration/2);
    digitalWrite(led, LOW);
    delay(duration/2);
  }
}

E come hai collegato i pin del RFID ?

Guglielmo

gpb01:
E come hai collegato i pin del RFID ?

Guglielmo

SDA D31
SCK D52
MOSI D51
MISO D50
GND GND
RST D9
3.3V 3.3V

MFRC522 mfrc522(SS_PIN, RST_PIN);

brunello22:
MFRC522 mfrc522(SS_PIN, RST_PIN);

L'ho provato ma niente

brunello22:
MFRC522 mfrc522(SS_PIN, RST_PIN);

Infatti ... :smiley:
... per questo gli ho chiesto i collegamenti, perché ero certo che avesse scambiato RST e SS :grin: :grin: :grin:

Guglielmo

Ho cancellato io gli ultimi due post ...
... la mia era una domanda errata :wink:

Guglielmo

Dreax99921:
Ma SS non equivale al pin SDA?

SI, per cui devi mettere MFRC522 rfid(31, 9); ovvero il contrario di quanto hai riportato nel codice.

Guglielmo

gpb01:
SI, per cui devi mettere MFRC522 rfid(31, 9); ovvero il contrario di quanto hai riportato nel codice.

Guglielmo

Salve Guglielmo, ho collegato il modulo RFID e funziona!!!
Ho provato a mandare dei comandi ad Arduino(Es: accensione di due led) ma non appena si accendono e rimangono accesi per più di 30 secondi, si spengono lentamente e Arduino si scollega. cosa può essere?

Dreax99921:
... cosa può essere?

Beh ... ora che tutto l'HW sembra funzionare, dovrai affrontare con la stessa metodologia il SW ...
... con tutto l'HW attaccato, ora fai funzionare UN PEZZO alla volta di codice. Comincia da una cosa, quando funzioona bene, aggiungi un altra cosa, e così via.

In questo modo, come cominci ad avere malfunzionamenti .. sai cosa hai aggiunto e sai quindi dove andare a cercare il problema :wink:

Guglielmo

gpb01:
Beh ... ora che tutto l'HW sembra funzionare, dovrai affrontare con la stessa metodologia il SW ...
... con tutto l'HW attaccato, ora fai funzionare UN PEZZO alla volta di codice. Comincia da una cosa, quando funzioona bene, aggiungi un altra cosa, e così via.

In questo modo, come cominci ad avere malfunzionamenti .. sai cosa hai aggiunto e sai quindi dove andare a cercare il problema :wink:

Guglielmo

Non può essere che Arduino non ce la fa e quindi ha bisogno di qualche alimentazione esterna?
Inoltre, che cosa intendi per HW e SW?

Dreax99921:
Non può essere che Arduino non ce la fa e quindi ha bisogno di qualche alimentazione esterna?
Inoltre, che cosa intendi per HW e SW?

Se si accende e resta acceso senza resettarsi ... direi che come alimentazione ci stai dentro ...

HW = Hardware
SW = Software

Guglielmo

gpb01:
Se si accende e resta acceso senza resettarsi ... direi che come alimentazione ci stai dentro ...

HW = Hardware
SW = Software

Guglielmo

Il problema è dato dalla scheda ethernet perché caricando lo sketch senza la shield, il programma funziona benissimo e arduino non si disconnette.

... ma tu che intendi "si disconnette" ? ? ? :o :o :o

Perché, "si disconnette", normalmente si intende "si disconnette dalla sessione TCP/IP" ... cosa che NON può esistere senza la scheda ethernet ... quindi tu stai parlando di qualche cosa d'altro ... di cosa ? ? ?

Guglielmo

gpb01:
... ma tu che intendi "si disconnette" ? ? ? :o :o :o

Perché, "si disconnette", normalmente si intende "si disconnette dalla sessione TCP/IP" ... cosa che NON può esistere senza la scheda ethernet ... quindi tu stai parlando di qualche cosa d'altro ... di cosa ? ? ?

Guglielmo

Io intendo che si disconnette Arduino dal computer, ovverro si spegne

... in questo campo usare i termini corretti è fondamentale per essere capiti :smiley: :smiley: :smiley:

Se si "spegne" allora è ovvio che, probabilmente, c'è un problema sull'alimentazione ...
... ricorda che, se alimenti via USB (dal PC), hai solo 500mA.

Guglielmo

gpb01:
... in questo campo usare i termini corretti è fondamentale per essere capiti :smiley: :smiley: :smiley:

Se si "spegne" allora è ovvio che, probabilmente, c'è un problema sull'alimentazione ...
... ricorda che, se alimenti via USB (dal PC), hai solo 500mA.

Guglielmo

Che alimentatore posso utilizzare per alimentare tutti questi sensori?
lcd a 4 fili;
RFID;
20 led;
un servo motore;
un lettore audio usato come sirena;
un pir;
una shield ethernet;
arduino mega;
sensore di midità per il terreno;
un dht11;
un sensore per il livello dell'acqua;
un relè

Dovresti separare le alimentazioni ...

... Arduino e le sole shield, tramite il collegamento USB, tutto il resto con un alimentatore esterno a 5V del quale colleghi il solo GND in comune con il GND di Arduino.

Guglielmo