Ви не увійшли.
Сторінки 1
виявляється у мене ардуіна нано 3 з мк wavgat. Буду пробувати ставити ядро для нього можливо потом запрацюэ
А ще замовив нано на мк атмега якщо нерозбуруся то буду на ній робити.
Shylz пише:Пробував інші бібліотеки то щоб запрацювали коректно хочаб часи потрібно було разів з 2 зробити ресет
А яку краще використати бібліотеку на вашу думку.З терморезистором взагалі без бібліотек працюю
Можете поділитись кодом для термістора NTC3950 100k
Спробував поставити цей код щоб провірити датчик ntc 3950 через монітор порта
int ThermistorPin = A1;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
void setup() {
Serial.begin(9600);
}
void loop() {
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273.15;
Serial.print("Temperature: ");
Serial.print(T);
Serial.println("c");
delay(100);
}
7
А в монитор порта приходять якісь квадратики, швидкість порта 9600, arduino nano old bootloader
при спробі будь що вивести в монітор якісь квадрати, символи
Що я роблю не так
Класичний випадок GayverXXX, спробуйте alexgayver.ru/feedback/, а я піду руки з милом вимию
Пробував інші бібліотеки то щоб запрацювали коректно хочаб часи потрібно було разів з 2 зробити ресет
А яку краще використати бібліотеку на вашу думку.
Shylz пише:Я хочу щоб показувалв годиник а коли температура піднімеця вище 40с то перемкнутися на термометр але покищо застряг на цьому
якось так
if(tempInt >40) { виводимо температуру } if(tempInt <=40) { виводимо час }
Дякую
#define CLK 2
#define DIO 3
#include <GyverNTC.h>
GyverNTC therm(0, 100000, 3950, 25, 100000, 10);
#include "GyverTM1637.h"
GyverTM1637 disp(CLK, DIO);
#include <microDS3231.h>
MicroDS3231 rtc;
boolean flag;
void setup() {
disp.brightness(7); // яркость, 0 - 7 (минимум - максимум)
}
void loop() {
float temperature = therm.getTempAverage();
int tempInt = temperature * 10;
disp.displayInt(tempInt);
delay(1000);
DateTime now = rtc.getTime();
disp.displayClock(now.hour, now.minute); // выводим время функцией часов
flag = !flag;
disp.point(flag); // выкл/выкл точки
delay(500);
disp.point(0); // выкл точки
}
Як я можу виложити кусок відио з тим як працює?
Доброго дня спільнота, допоможіть розібратися з кодом.
Я хочу зібрати на TM1637, ds3231, NTC 3950, часи і термометр на ~250с
Покищо получився такий код
Часи ще якось показують а от температура то 0в 1розряді то 2 в 4розряді
Що я нетак зробив,
Я хочу щоб показувалв годиник а коли температура піднімеця вище 40с то перемкнутися на термометр але покищо застряг на цьому
Частину коду яка відповіла за кнопку переніс з низу в самий початок луп, тепер все запрацювало. Дякую всім за допомогу.
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;
}
Може так буде зрозуміліше, pullup тут не проходить.
Выход з домофона на замок +15v саме вони мають давати команду на 6 ногу ардуіни щоб вона открывала замок. Домофон встановлено а кнопка покищо для тестової роботи ардуіни.
https://forum.arduino.ua/img/members/3335/IMG_20220623_224258.jpeg
Shylz пише:Плата одностороння, там лише одна перемичка між опором та масою
тогда как подключена кнопка к пину ардуины? Судя по огрызку с рисунком платы кнопка (самый нижний проводник?) подходит к одному выводу резистора, второй конец резистора на gnd(?), а к пину как? Тоже навесным проводом?
Сама нижня дорожка приходить на опір, другий вивід опору переходить на 6 ножку ардуіни і опір на землю, зараз на місті першого опору перемичка. На ціх опорах на випадок необхідності може бути виконано пониження напруги, якщо наприклад кнопка це напруга в 12-15 v.
1-механізм відкривання буде соленоід через мосфет, або сервомотор. Більш завсесервомотор просто зараз нема в наявності бо той що прийшов бракований.
Плата одностороння, там лише одна перемичка між опором та масою, і конденсатори стабілізаторів навісним монтажом.
Код без рфід не пробував.
Shylz пише:при натисканні на кнопку ардуіна зависа
В чем это выражается?
На карточку більше нереагує пока неперезавантажиш
Пробував отак але при натисканні на кнопку ардуіна зависа
// карта - 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); // Гасим Зелёный светодиод //
}
}
помогать бесплатно принято тем, кто что то сам накодил, но не получается.
в вашем коде нет ни кнопки, ни соленоида, ни сервы.
В коді є і кнопка і соленоід (const int buttonPin = 6; //Пин для кнопка откр
const int LOCK = 4; // подключаем электрозамок) соліноід від карточки спрацьовує а от з кнопкою ніяк неможу ту частину коду яку писав під кнопку витер щоб незаважала
#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);
}
}
Добрий день. Потрібна допомога з доповнення скечу.
Роблю rfid замок, потрібно добавити кнопку(з підтягнути опором на 10ком на масу) , щоб при натисканні на кнопку зпрацював селеноид на 1 секунду і провернувся сервомотор на 90 градусів а потім повернувся на 0.
Будь ласка допоможіть.
Сторінки 1