Вопрос по аналоговым входам и rfid
- Войдите на сайт для отправки комментариев
Втр, 14/04/2015 - 00:09
Читаю ардуинкой мини RC 522
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // объект MFRC522
unsigned long uidDec, uidDecTemp; // для отображения номера карточки в десятичном формате
byte bCounter, readBit;
unsigned long ticketNumber;
int ledPin7 = 7;
void setup() {
pinMode(ledPin7, OUTPUT);
Serial.begin(9600);
SPI.begin(); // инициализация SPI
mfrc522.PCD_Init(); // инициализация MFRC522
Serial.println("Waiting for card...");
}
void loop() {
// Поиск новой карточки
if ( ! mfrc522.PICC_IsNewCardPresent()) {
digitalWrite(7,0);
return;
}
// Выбор карточки
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
uidDec = 0;
// Выдача серийного номера карточки
Serial.print("Card UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++) {
uidDecTemp=mfrc522.uid.uidByte[i];
uidDec=uidDec*256+uidDecTemp;
}
int id=uidDec-3732680251;
if(id!=0) { int var=0;
while (var<4){
var++;
delay(1000);
digitalWrite(7,1);
Serial.println("Odobreno ");}}
else{Serial.println("STOP ");
digitalWrite (7,0);}
Serial.println(id);
Serial.println(uidDec);
Serial.println();
delay(500);
}
В принципе по нему нет вопросов .
Дальше 4 ардуинки мини подключены к uno по питанию и на аналоговые разьемы 14-17;
так вот в чем проблема. Аналог читает тока 1 пин а остальные нет. Если читать как цифру то все нормально 1 ил 0 в зависимости от состояни. Но проблема в том что rfid при повторном чтении перезагружается и при читке цифры высока пероятность ошибки а при аналого проще отфильтровать результат.В чем может быть проблема что не читает больше 1 аналогового порта.
int analogPin14 = 14;
int analogPin15 = 15;
int analogPin16 = 16;
int analogPin17 = 17; // читаем состояние диода А0
int rele=11;
void setup()
{
Serial.begin(9600);
pinMode(analogPin7,INPUT);
pinMode(analogPin8,INPUT);
pinMode(analogPin9,INPUT);
pinMode(analogPin10,INPUT);
pinMode(rele,OUTPUT);
}
void loop()
{
digitalWrite(11,0);
val5=val1+val6;
val1 = digitalRead(analogPin7); // считываем значение с порта, подключенному к диоду аппы
val2 = digitalRead(analogPin10);
val3 = digitalRead(analogPin9);
val4 = digitalRead(analogPin10);
Serial.print(val1); Serial.println(" v1");
Serial.print(val2); Serial.println(" v2");
Serial.print(val3); Serial.println(" v3");
Serial.print(val4); Serial.println(" v4");
delay(500);
}
Откуда взято число 3732680251?
Я вижу несовпадение имён переменных в строках 1-4 и 11-14. Если это аналоговые, то так и пиши: А0, А1.
Я вижу несовпадение имён переменных в строках 1-4 и 11-14. Если это аналоговые, то так и пиши: А0, А1.
Да ты вообще ниче не понимаешь. Если переменная названа analogPin все блин. Сразу любой пин становиться АЦП. Гыыы
Когда сюда вкидывал код не посмотрел просто это урезаный. Часа 3 мудохался и так и сяк пробовал аналог тока 1 канал работает. ЦИфра 4 работают. Просто уже и пины менял че тока не делал.
int analogPin7 = 14; int analogPin8 = 15; int analogPin9 = 16; int analogPin10 = 17; // читаем состояние диода А0 int rele=11; void setup() { Serial.begin(9600); pinMode(analogPin7,INPUT); pinMode(analogPin8,INPUT); pinMode(analogPin9,INPUT); pinMode(analogPin10,INPUT); pinMode(rele,OUTPUT); } void loop() { digitalWrite(11,0); val5=val1+val6; val1 = digitalRead(analogPin7); // считываем значение с порта, подключенному к диоду аппы val2 = digitalRead(analogPin10); val3 = digitalRead(analogPin9); val4 = digitalRead(analogPin10); Serial.print(val1); Serial.println(" v1"); Serial.print(val2); Serial.println(" v2"); Serial.print(val3); Serial.println(" v3"); Serial.print(val4); Serial.println(" v4"); delay(500); }попробую с А0-А4 мож и в правду заработает.
Тогда поясни это:
Но проблема в том что rfid при повторном чтении перезагружается и при читке цифры высока пероятность ошибки а при аналого проще отфильтровать результат.
Чем проще? Почему не использовать цифровой вход, если изначально Mini у тебя выдает логический сигнал (0 В или 5 В)?
GND всех плат объединены?
#define PIN_RFID1 A0 // читаем состояние диода А0 #define PIN_RFID2 A1 #define PIN_RFID3 A2 #define PIN_RFID4 A3 #define PIN_RELAY 11 void setup() { Serial.begin(9600); pinMode(PIN_RELAY,OUTPUT); } void loop() { digitalWrite(PIN_RFID4,LOW); val5=val1+val6; val1 = digitalRead(PIN_RFID1); // считываем значение с порта, подключенному к диоду аппы val2 = digitalRead(PIN_RFID2); val3 = digitalRead(PIN_RFID3); val4 = digitalRead(PIN_RFID4); Serial.print(val1); Serial.println(" v1"); Serial.print(val2); Serial.println(" v2"); Serial.print(val3); Serial.println(" v3"); Serial.print(val4); Serial.println(" v4"); delay(500); }аналог дает значения 750-750-750-750-0-0(нули перегнужается рфид) мы считает среднее 3000/6=500 все значит врублено
цифра 1-1-1-1-0-0 со средней небольшая проблема из-за запятой. в этом и проще.
Питание на мини идет с пинов основной платы
цифра 1-1-1-1-0-0 со средней небольшая проблема из-за запятой. в этом и проще.
Умножаешь результат средней на 100 и проблема отпадает.
цифра 1-1-1-1-0-0 со средней небольшая проблема из-за запятой. в этом и проще.
Умножаешь результат средней на 100 и проблема отпадает.