RC522+servo+led

Нет ответов
Faraday
Faraday аватар
Offline
Зарегистрирован: 15.10.2015

Честно говоря, даже стыдно выкладывать "свой" (недоскеч), греет душу то что никто прямо в лицо не плюнет :D 
В общем запарился я искать решение этой проблемы в просторах гугла/яндекс и того же ютюба. ничего дельного найти не смог, русских уроков "НОРМАЛЬНЫХ" а не там где дергается камера и всё записывают с экрана, а в конце даже скетча не выложат, НЕТУ. ну или просто я криворукий и не нашёл) 
Сразу скажу, прочёл статьи Лешшего http://alxarduino.blogspot.ru/
что-то понятно, что-то думал что понял а в итоге ничерта не понял.
Прошу отнестись с пониманием! И без "всеми любимого сарказма"
Все с чего-то начинали!

Что я хочу получить на выходе:
при подаче питания, горит светодиод R ~ 30мин
при поднисении записанной карты, он R и включается светодиод G и в обратном порядке.(поднес ещё раз, 30м. R и off) 

Если карта не прописана светодиод R мигнул ~ 5 раз и продолжил гореть, те же 30 мин.

ну и светодиод W, просто чтоб плавно мигал, цикл бесконечный

Ну и да, знаю что мой код отвратный, но я его писал сам и это моя можно так сказать 2-я попытка что-то сделать самому) 
Спасибо за советы и ответы!)

 

#include <Servo.h> 
Servo door; 
Servo door2; 
#include <SPI.h>
#include <MFRC522.h> 
#define SS_PIN 53
#define RST_PIN 49
//#define LED_PIN  9
//#define  INTERVAL  5000UL
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp;
boolean doorOpen;
int dz = 33; 
void setup() {
  //pinMode(LED_PIN, OUTPUT);
  //digitalWrite(LED_PIN, HIGH);
  pinMode(32, OUTPUT);
  pinMode(dz, OUTPUT);
  digitalWrite(dz, HIGH);
  Serial.begin(9600);
  Serial.println("Prilozhite kartu / Waiting for card...");
  SPI.begin();
  mfrc522.PCD_Init(); 
  door.attach(22); 
  door2.attach(23);
  door.write(0);
  door2.write(0);
}
void loop() {
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  uidDec = 0;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
    uidDecTemp = mfrc522.uid.uidByte[i];
    uidDec = uidDec*256+uidDecTemp;  
  }  
  Serial.println("Serial number card / Card UID: ");
  Serial.println(uidDec); 
if (uidDec == 3063551102){
  if (doorOpen)
  {
    Serial.println("Hi Pavel");
    digitalWrite(32, HIGH);
    digitalWrite(dz, LOW);
    door.write(180);  
    delay(300);
    door2.write(180);  
    doorOpen = false;
}
  else
  {
    digitalWrite(32, LOW);
    digitalWrite(dz, HIGH);
    Serial.println("Bye Pavel");
    door.write(0); 
    delay(300); 
    door2.write(0); 
    doorOpen = true;
  }
  delay(500);
  }
  else 
  if (uidDec == 2130725580){
  if (doorOpen)
  {
    Serial.println("Hi Pavel");
    door.write(180);   
    doorOpen = false;
  }
  else
  {
    Serial.println("Bye Pavel");
    door.write(0);   
    doorOpen = true;
  }
  delay(500);
  }
  else
  {
    Serial.println("!!!!!!!!!!Unknown card!!!!!!!!!!!!!!!!!!"); 
    digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW); 
    delay(50);
    digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW); 
    delay(50);
     digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW); 
    delay(50);
     digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW); 
    delay(50);
     digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW); 
    delay(50);
    digitalWrite(dz, HIGH);
    delay(50);
    digitalWrite(dz, LOW);
  }
    Serial.println("====================================="); 
  }