Помогите с Замком

Ice
Offline
Зарегистрирован: 21.02.2020
Хочу что бы при прикладывание второй раз карты серво менял угол
ничего не получается,не понимаю почему,в нете инфы не нашел






#include <Servo.h>
#include <MFRC522.h> // библиотека "RFID".
int ser;
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp;  // для храниения номера метки в десятичном формате
Servo servo;
void setup() {
  Serial.begin(9600);
  Serial.println("Waiting for card...");
  SPI.begin();  //  инициализация SPI / Init SPI bus.
  mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.
  servo.attach(5);
}
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("Card UID: ");
  Serial.println(uidDec); // Выводим UID метки в консоль.
  Serial.println(ser);
  
    if (uidDec == 859633691&&ser==0) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
    ser=1;
    servo.write(0);
    delay(3000);
  } else
  {
  if (uidDec == 859633691&&ser==1) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
    ser=0;
    servo.write(180);
    delay(3000);
  }
 }

 

sadman41
Offline
Зарегистрирован: 19.10.2016

А что получается?

Ice
Offline
Зарегистрирован: 21.02.2020

он закрывает обратно, я наверное не так описал, хочу что бы при первом прикладывании серво имел угол = 0
и если угол = 0 то при повторном прикладывании угол был равен 180, и если угол = 180 то прикладывании карты угол равен 0

sadman41
Offline
Зарегистрирован: 19.10.2016

Закрывает или раскрывает - вопрос второй. Серва крутится в разные стороны или нет?

sadman41
Offline
Зарегистрирован: 19.10.2016

При каждом прикладывании меняй переменную ugol: если она 0, то клади в нее 180, иначе 0. А потом подсовывай этот ugol в функцию servo.write()

Ice
Offline
Зарегистрирован: 21.02.2020

sadman41 пишет:
При каждом прикладывании меняй переменную ugol: если она 0, то клади в нее 180, иначе 0. А потом подсовывай этот ugol в функцию servo.write()

if (uidDec == 859633691&&ser==0) // Сравниваем Uid метки, если он равен заданому то серва открывает.
{
    ser=180;
    servo.write(ser);
  {
  if (uidDec == 859633691&&ser==180)
{
    ser=0;
    servo.write(ser);
    delay(3000);
  }

Так ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Внутри блока if(Uid==xxxxxx) {} ещё один if(ugol==180) ugol =0 else ugol =180 и потом углом корми серву. Один раз.

Ice
Offline
Зарегистрирован: 21.02.2020
 if (uidDec == 859633691)
{ if (ugol == 180){
  ugol=0;
  }
  else
  {
    ugol=180;
    } 
    servo.write(ugol);   
    }

Так ?

Ice
Offline
Зарегистрирован: 21.02.2020

Спасибо БОЛЬШОЕ.