Ви не увійшли.
Сторінки 1
Добрий день. Потрібна допомога з доповнення скечу.
Роблю rfid замок, потрібно добавити кнопку(з підтягнути опором на 10ком на масу) , щоб при натисканні на кнопку зпрацював селеноид на 1 секунду і провернувся сервомотор на 90 градусів а потім повернувся на 0.
Будь ласка допоможіть.
Остання редакція Shylz (2022-06-22 00:40:03)
Неактивний
#include <SPI.h>
#include <MFRC522.h>
const int SS_PIN = 10; // SS вывод модуля RC522
const int RST_PIN = 9; // RST вывод модуля RC522
const int BUZZER = 3; //Пин для Пищалки
const int LED_R = 8; //Пин для Красного цвета
const int LED_G = 7; //Пин для Зелёного цвета
const int buttonPin = 6; //Пин для кнопка откр
const int LOCK = 4; // подключаем электрозамок
char* keys[]={"71 17 43 99"}; // ,"242 166 122 26","02 187 203 27"
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(buttonPin, INPUT); // объявляем пин как вход.
pinMode(LED_G, OUTPUT); //объявляем пин как выход.
pinMode(LED_R, OUTPUT); //объявляем пин как выход.
pinMode(BUZZER, OUTPUT); //объявляем пин как выход.
pinMode(LOCK, OUTPUT); //объявляем пин как выход.
digitalWrite(LOCK, LOW); //Выключаем замок
Serial.println("Поднесите карту к считывателю");
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()){
return;
}
Serial.print("UID:");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], DEC);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], DEC));
}
Serial.println();
content.toUpperCase();
int x=1;
for (int i = 0; i < sizeof(keys) / sizeof(char *); i++){
if (content.substring(1) == keys[i]){
Serial.println("Доступ разрешён");
digitalWrite(BUZZER, HIGH); // Включаем Замок
digitalWrite(LED_G, HIGH); // Зажигаем Зелёный светодиод
digitalWrite(LOCK, HIGH); //Включаем замок
delay(500);
digitalWrite(LOCK, LOW); //Выключаем замок
digitalWrite(BUZZER, LOW);
delay(1000);
digitalWrite(LED_G, LOW); // Гасим Зелёный светодиод
return;
}
else x=0;
}
if(x==0){
Serial.println("Доступ запрещён");
digitalWrite(LED_R, HIGH);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
delay(100);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER,LOW);
delay(100);
digitalWrite(LED_R, LOW);
}
}
Неактивний
помогать бесплатно принято тем, кто что то сам накодил, но не получается.
в вашем коде нет ни кнопки, ни соленоида, ни сервы.
В коді є і кнопка і соленоід (const int buttonPin = 6; //Пин для кнопка откр
const int LOCK = 4; // подключаем электрозамок) соліноід від карточки спрацьовує а от з кнопкою ніяк неможу ту частину коду яку писав під кнопку витер щоб незаважала
Неактивний
ту частину коду яку писав під кнопку витер щоб незаважала
потрібно не витирати, а показувати і писати що конкретно не виходить. Інакше - #3
// карта - 02 187 203 27
// брелок - "60 19 192 33"
// КАРТА - 242 166 122 26
#include <SPI.h>
#include <MFRC522.h>
const int SS_PIN = 10; // SS вывод модуля RC522
const int RST_PIN = 9; // RST вывод модуля RC522
const int BUZZER = 3; //Пин для Пищалки
const int LED_R = 8; //Пин для Красного цвета
const int LED_G = 7; //Пин для Зелёного цвета
const int buttonPin = 6; //Пин для кнопка откр
const int LOCK = 4; // подключаем электрозамок
char* keys[]={"71 17 43 99"}; // ,"242 166 122 26","02 187 203 27"
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
void setup()
{
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
pinMode(buttonPin, INPUT); // объявляем пин как вход.
pinMode(LED_G, OUTPUT); //объявляем пин как выход.
pinMode(LED_R, OUTPUT); //объявляем пин как выход.
pinMode(BUZZER, OUTPUT); //объявляем пин как выход.
pinMode(LOCK, OUTPUT); //объявляем пин как выход.
digitalWrite(LOCK, LOW); //Выключаем замок
Serial.println("Поднесите карту к считывателю");
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()){
return;
}
Serial.print("UID:");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], DEC);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], DEC));
}
Serial.println();
content.toUpperCase();
int x=1;
for (int i = 0; i < sizeof(keys) / sizeof(char *); i++){
if (content.substring(1) == keys[i]){
Serial.println("Доступ разрешён");
digitalWrite(BUZZER, HIGH); // Включаем Замок
digitalWrite(LED_G, HIGH); // Зажигаем Зелёный светодиод
digitalWrite(LOCK, HIGH); //Включаем замок
delay(500);
digitalWrite(LOCK, LOW); //Выключаем замок
digitalWrite(BUZZER, LOW);
delay(1000);
digitalWrite(LED_G, LOW); // Гасим Зелёный светодиод
return;
}
else x=0;
}
if(x==0){
Serial.println("Доступ запрещён");
digitalWrite(LED_R, HIGH);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
delay(100);
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER,LOW);
delay(100);
digitalWrite(LED_R, LOW);
}
int buttonState = digitalRead(buttonPin);
// делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение
if (buttonState == HIGH) {
digitalWrite(BUZZER, HIGH); // Включаем Замок
digitalWrite(LED_G, HIGH); // Зажигаем Зелёный светодиод
digitalWrite(LOCK, HIGH); //Включаем замок
delay(500);
digitalWrite(LOCK, LOW); //Выключаем замок
digitalWrite(BUZZER, LOW);
delay(1000);
digitalWrite(LED_G, LOW); // Гасим Зелёный светодиод //
}
}
Неактивний
А схема где?
На карточку більше нереагує
Вообще-то на кнопку не должно быть никакой реакции при таком построении кода. Так что схему в студию. И желательно нормальную (хоть и на листочке от руки), а не наскальную живопись из всяких там фритцингов и тинкеркадов
Остання редакція г0сть (2022-06-22 21:51:38)
Неактивний
Куча вопросов.
1. Что собой представляет механизм открывания (схемотехнически)? Разводка платы если правильно понял - двусторонняя?
2. Если из кода убрать все что касается карточки - тоже зависает?
3. Если после включения карту не подносить, а сразу нажать кнопку - что происходит?
Ну и повторюсь, с этим кодом кнопка не должна срабатывать. Эти строки
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
крутятся к цикле пока не будет поднесена карта и код дальше не должен выполняться. Перенеси обработку кнопки в начало loop.
Неактивний
1-механізм відкривання буде соленоід через мосфет, або сервомотор. Більш завсесервомотор просто зараз нема в наявності бо той що прийшов бракований.
Плата одностороння, там лише одна перемичка між опором та масою, і конденсатори стабілізаторів навісним монтажом.
Код без рфід не пробував.
Неактивний
Плата одностороння, там лише одна перемичка між опором та масою
тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?
Неактивний
Shylz пише:Плата одностороння, там лише одна перемичка між опором та масою
тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?
Сама нижня дорожка приходить на опір, другий вивід опору переходить на 6 ножку ардуіни і опір на землю, зараз на місті першого опору перемичка. На ціх опорах на випадок необхідності може бути виконано пониження напруги, якщо наприклад кнопка це напруга в 12-15 v.
Неактивний
На ціх опорах на випадок необхідності може бути виконано пониження напруги, якщо наприклад кнопка це напруга в 12-15 v.
Бред. INPUT_PULLUP, кнопка на землю и не морочь йайголову всякой ерундой
Неактивний
Може так буде зрозуміліше, pullup тут не проходить.
Выход з домофона на замок +15v саме вони мають давати команду на 6 ногу ардуіни щоб вона открывала замок. Домофон встановлено а кнопка покищо для тестової роботи ардуіни.
Остання редакція Shylz (2022-06-23 22:54:32)
Неактивний
Объясни мне в чем сакральный смысл замыкания кнопки на "плюс" ???
подсказка http://schip.com.ua/pc817/
Остання редакція renoshnik (2022-06-24 08:04:29)
Неактивний
void loop()
{
int buttonState =digitalRead(buttonPin); //считуем порт кнопки
if (buttonState == HIGH) {
Serial.println("Доступ разрешён");
digitalWrite(BUZZER, HIGH); // Включаем Зумер
digitalWrite(LED_G, HIGH); // Зажигаем Зелёный светодиод
digitalWrite(LOCK, HIGH); //Включаем замок
delay(500);
digitalWrite(LOCK, LOW); //Выключаем замок
digitalWrite(BUZZER, LOW);
delay(1000);
digitalWrite(LED_G, LOW); // Гасим Зелёный светодиод
}
if ( ! mfrc522.PICC_IsNewCardPresent()){
return;
}
Неактивний
Сторінки 1