самопальная ОПС на 1 канал. точнее прототип. помогите плз, не взлетает.
- Войдите на сайт для отправки комментариев
Чт, 07/12/2017 - 06:52
Доброго времени суток.
вот что должно было получиться
"на порту д2 висит геркон, на д3 реле нр, имеется считыватель rfid и 2 ключа .
при включенном питании светодиод на д4 (зеленый) горит, при постановке на охрану загорается д5 (красный)
при включении объект под охраной!, записываем статус в переменную,
при размыкании д2 включить д3.
при появлении на считывателе зарегистрированного ключа поменять статус в переменной погасить д5 выключить д3 если сработала, выключить услови при размыкании д2 включить д3
при появлении на считывателе зарегистрированного ключа поменять статус в переменной включить д5 слушать д2".
теперь что имеем:
int RelayDev = 3;//d3 int GerkonDev = 2; //d2 int Stat = 1;//еще одна хрень для статуса int Arm = 0; //переменная статуса int RedLed = 4;//d4 int GreenLed = 5;//d5 //добавляем херню длярфид #include <SPI.h> #include <MFRC522.h> // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате void setup() { pinMode(RelayDev, OUTPUT);//выход pinMode(GerkonDev, INPUT);//вход pinMode(GreenLed, OUTPUT); //индикация питания SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. } void loop() { digitalWrite(GreenLed, HIGH);//индикатор питания включен digitalWrite(RedLed, HIGH);//индикатор запущеной службы вроде тоже 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; } //а с этого места уже заплюхался. if (uidDec == 1973922155 || 299185877) { digitalWrite(RelayDev, LOW); digitalWrite(RedLed, HIGH); } Arm = digitalRead(GerkonDev);//забираем статус геркона if (Arm == LOW) { digitalWrite(RelayDev, HIGH); } }
И что именно не работает? "Не взлетает" это что? бутлоадер слетел и не шьется или что? Если конкретные вопросы по коду задавайте конкретные вопросы.
в С такая логика не работает
39
if
(uidDec == 1973922155 || 299185877)
нада
39
if
((uidDec == 1973922155L) || (uidDec == 299185877L)) // не забывать про long
и вот это, хоть ни на што не влияеть, но в loop-е явно лишнее
23
digitalWrite(GreenLed, HIGH);
//индикатор питания включен
24
digitalWrite(RedLed, HIGH);
//индикатор запущеной службы вроде тоже
если GreenLed должен гореть все время, то его надо в setup() и включить.
А RedLed независимо от того, должен он гореть или нет, включается при каждом входе в loop() (это значит всегда).
заведи все свои ключи в массив и проверяй потом, правильный ли ключ приклали, в одной функции, читабельней будет
ой, не совсем корректно написал. мозги уже в отключенном состоянии были %)
самая большая сложность в том что постановка и снятие с охраны происходит по предъявлении ключа считывателю. конечно уже и форум читал и примеры смотрел все возможные, но самый нормальный пример это вот этот абстрактный пример подходит идеально, но как указать вместо абстрактного buttonPin условия наличия uid'ов ключей.
как указать вместо абстрактного buttonPin условия наличия uid'ов ключей.
как в самом первом скетче написано в строке #7 : "Добавляем херню для rfid"
Эээ.. То есть? Немного не понял ход Ваших мыслей
в скетче из сообщения #4 нету ничего для чтения RFID ключей. Надо добавить.
доброго времени еще раз.
ткните рожей в ошибку плз(
Дак ошибка секретная же. Тем более написан бессмысленный набор операторов, с виду похожих на С
вот эта фигня уже работает. дык блин, почти то же самое делал.. отсюда