Помогите с Замком
- Войдите на сайт для отправки комментариев
Пт, 21/02/2020 - 18:46
Хочу что бы при прикладывание второй раз карты серво менял угол
ничего не получается,не понимаю почему,в нете инфы не нашел
#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);
}
}
А что получается?
он закрывает обратно, я наверное не так описал, хочу что бы при первом прикладывании серво имел угол = 0
и если угол = 0 то при повторном прикладывании угол был равен 180, и если угол = 180 то прикладывании карты угол равен 0
Закрывает или раскрывает - вопрос второй. Серва крутится в разные стороны или нет?
При каждом прикладывании меняй переменную 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); }Так ?
Внутри блока if(Uid==xxxxxx) {} ещё один if(ugol==180) ugol =0 else ugol =180 и потом углом корми серву. Один раз.
if (uidDec == 859633691) { if (ugol == 180){ ugol=0; } else { ugol=180; } servo.write(ugol); }Так ?
Спасибо БОЛЬШОЕ.