buonasera a tutti sono nuovo in questo forum e avrei bisogno del vostro aiuto su di un progetto che sto portando avanti, si tratta di collegare arduino alla macchina, premetto che sono in primissima fase di progettazione, e in campo arduino ne so veramente poco. ho creato vari progetti in vb.net ma con arduino non mastico molto bene. allora, sto scrivendo vari sketch singolarmente e singolarmewnte funzionano, adesso vorrei unirli, ma trovo alcune difficolota, spero che qualcuno mi possa aiutare.
i 2 sketch sono il primo il riconoscimento della tessera con l rfid522 dove se il codice è corretto si accende un led verde e contemporaneamente dovrà lampeggiare il led del pulsante di avviamento motore auto, il secondo sketch è il blink non bloccante del led pulsante motore. Use code tags to format code for the forum. il problema che singolarmente funzionano ma se li unisco il led pulsante motore rimane acceso e non lampeggia.
grazie mille
primo sketch
#include <MFRC522.h>
#define GREEN_LED_PIN 2
#define RED_LED_PIN 3
#define LED_PULSANTE_PIN 4
#define INTERVALLO 1000
int stato = LOW;
unsigned long t0, dt;
MFRC522 rfid(10, 9);
String users[] = {"f3704273"};
int usersSize = sizeof(users)/sizeof(String);
void setup(){
SPI.begin();
rfid.PCD_Init();
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(LED_PULSANTE_PIN, OUTPUT);
t0 = millis();
}
void loop(){
if(rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()){
String uid = getUID();
if(checkUID(uid)){
led();
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++){
uid += rfid.uid.uidByte[i] < 0x10 ? "0" : "";
uid += String(rfid.uid.uidByte[i], HEX);
}
rfid.PICC_HaltA();
return uid;
}
bool checkUID(String uid){
for(int i = 0; i < usersSize; i++){
if(users[i] == uid){
return true;
}
}
return false;
}
void led(){
dt = millis() - t0;
if ( dt >= INTERVALLO ) {
t0 = millis();
stato = !stato;
digitalWrite(LED_PULSANTE_PIN, stato);
}
}
void blinkLed(int led, int duration, int repeat){
for(int i = 0; i < repeat; i++){
digitalWrite(led, HIGH);
delay(duration/2);
digitalWrite(led, LOW);
delay(duration/2);
}
}
secondo sketch
#define INTERVALLO 500
#define LED_PULSANTE_PIN 4
int stato = LOW;
unsigned long t0, dt;
void setup() {
pinMode(LED_PULSANTE_PIN, OUTPUT);
t0 = millis();
}
void loop() {
led();
}
void led(){
dt = millis() - t0;
if ( dt >= INTERVALLO ) {
t0 = millis();
stato = !stato;
digitalWrite(LED_PULSANTE_PIN, stato);
}
}