Создание проекта Arduino с различными приводами и сенсорами
Я пытался сделать автоматизированную домашнюю систему безопасности Arduino с датчиком огня, считывателем карт RFID и датчиком движения PIR. У меня также есть три исполнительных механизма - активный пьезозуммер, реле постоянного тока(для представления системы орошения водой для пожарной сигнализации) и ЖК-дисплей, показывающий состояние безопасности дома. У меня есть индивидуальные наборы кодов для каждого из них, просто я не знаю, как объединить все это вместе, чтобы заставить их работать вместе.
Мой фон кодирования довольно прост, и я получил эти коды онлайн. Вот они :
ЖК-дисплей :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Установить ЖК-адрес на 0x27 для 16 символов и 2-строчного дисплея
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// инициализация LCD
lcd.begin();
// Включить черный свет и распечатайте сообщение.
lcd.backlight();
lcd.print("Hello, world!");
}
void loop()
{
// Ничего не делать здесь...
}
Считыватель RFID-карт :
/*
* Initial Author: ryand1011 (https://github.com/ryand1011)
*
* Reads data written by a program such as "rfid_write_personal_data.ino"
*
* See: https://github.com/miguelbalboa/rfid/tree/master/examples/rfid_write_personal_data
*
* Uses MIFARE RFID card using RFID-RC522 reader
* Uses MFRC522 - Library
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Конфигурируемый, см. типичный макет pin выше
#define SS_PIN 10 // Конфигурируемый, см. типичный макет pin выше
MFRC522 mfrc522(SS_PIN, RST_PIN); // Создать экземпляр MFRC522
//*****************************************************************************************//
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println(F("Read personal data on a MIFARE PICC:")); //shows in serial that it is ready to read
}
//*****************************************************************************************//
void loop() {
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
//some variables we need
byte block;
byte len;
MFRC522::StatusCode status;
//-------------------------------------------
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
Serial.println(F("**Card Detected:**"));
//-------------------------------------------
mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid)); //dump some details about the card
//mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); //uncomment this to see all blocks in hex
//-------------------------------------------
Serial.print(F("Name: "));
byte buffer1[18];
block = 4;
len = 18;
//------------------------------------------- GET FIRST NAME
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
if (status != MFRC522::STATUS_OK) {
Serial.print(F("Authentication failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
status = mfrc522.MIFARE_Read(block, buffer1, &len);
if (status != MFRC522::STATUS_OK) {
Serial.print(F("Reading failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
//PRINT FIRST NAME
for (uint8_t i = 0; i < 16; i++)
{
if (buffer1[i] != 32)
{
Serial.write(buffer1[i]);
}
}
Serial.print(" ");
//---------------------------------------- GET LAST NAME
byte buffer2[18];
block = 1;
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
if (status != MFRC522::STATUS_OK) {
Serial.print(F("Authentication failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
status = mfrc522.MIFARE_Read(block, buffer2, &len);
if (status != MFRC522::STATUS_OK) {
Serial.print(F("Reading failed: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
//PRINT LAST NAME
for (uint8_t i = 0; i < 16; i++) {
Serial.write(buffer2[i] );
}
//----------------------------------------
Serial.println(F("\n**End Reading**\n"));
delay(1000); //change value if you want to read cards faster
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//
Датчик движения PIR :
int sensor = 2; // the pin that the sensor is atteched to
int state = LOW; // by default, no motion detected
int val = 0; // variable to store the sensor status (value)
void setup() {
pinMode(led, OUTPUT); // initalize LED as an output
pinMode(sensor, INPUT); // initialize sensor as an input
Serial.begin(9600); // initialize serial
}
void loop(){
val = digitalRead(sensor); // read sensor value
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(led, HIGH); // turn LED ON
delay(100); // delay 100 milliseconds
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(led, LOW); // turn LED OFF
delay(200); // delay 200 milliseconds
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}
Датчик пожара с активным зуммером:
int flameSensorPin = 0; // a0
int flameSensorReading;
int buzzerPin=8;
void setup(void)
{
Serial.begin(9600);
pinMode(buzzerPin,OUTPUT);
}
void loop(void)
{
flameSensorReading = analogRead(flameSensorPin);
if(flameSensorReading< 1023)
{
digitalWrite(buzzerPin,HIGH);
}
else
{
digitalWrite(buzzerPin,LOW);
}
Serial.print("Analog reading = ");
Serial.println(flameSensorReading); // the raw analog reading delay(1000);
delay(500);
}
Реле постоянного тока :
// функция настройки запускается один раз при нажатии кнопки reset или power board
void setup() {
// инициализировать цифровой вывод LED_BUILTIN в качестве вывода.
pinMode(7, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(7, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(7, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Любая помощь будет оценена по достоинству.
@Arduino UNO, 👍0
Обсуждение0
Смотрите также:
- Бесполезная проводка коробки и код
- Может ли датчик 12 В, быть подключен к выходному сигналу 5 В Arduino Uno
- Arduino-проект с датчиком цвета и rgb-светодиодом
- Я пытаюсь сделать что то вроде видеоигры с Arduino UNO
- boxservo работает вопреки коду
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
Это ответ на ваш вопрос? Как объединить 2 разных скетча together Обратите внимание, что объединение скетчей означает, что вам нужно понять, как работает каждый скетч. Простое копирование и вставка в этом случае не работают., @chrisl
Кроме того, вам действительно нужно изучить принцип неблокирующего стиля кодирования, как в примере "BlinkWithoutDelay" (который поставляется с IDE Arduino), используя функцию " millis ()". Затем вы можете отбросить все вызовы
delay ()
, что является обязательным для объединения такого количества кодов вместе., @chrislЯ не собираюсь лгать и говорить, что понимаю, но на самом деле я еще больше запутался . Например, не могли бы вы сказать мне, какой следующий шаг мне нужно сделать, чтобы достичь конечного результата. Я должен представить этот проект к концу этой недели. РАЗРЫВ, @Arduino UNO