Как отредактировать этот код ИК-датчика в COINSLOT sensor

Проект похож на защищенный PiggyBank, но он будет считать монеты внутри него. Im с помощью датчика монет по умолчанию он имеет 5 В, а затем переходит на zer, если вставлен с монетой. У меня есть 2 кода: один был из моего старого проекта, а второй-из кода coinslot, полученного на youtube.

Я надеюсь, что кто-то может подсказать мне, где снять некоторые коды, а затем добавить их в один lsit кода. Поведение проекта -Start > Display Total : Amount >> если я разблокирую соленоид, то на нем появится приветственное "NAME" . Надеюсь, вы поймете мою идею. Какой-то код внутри соленоида был не идеален, жаль, что я просто получаю его от скрата без должного знания.

Это код для ПОДКЛЮЧЕНИЯ ОТПЕЧАТКА ПАЛЬЦА К ЭЛЕКТРОМАГНИТНОМУ ЗАМКУ

#include <Adafruit_Fingerprint.h>    //Libraries needed
#include <SoftwareSerial.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27          //LCD i2c stuff
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

int in2 = 4;

int But1=8;  // In order to add a push button I got the 5v from the pin 8 instead of "5v" arduino pin
int But2=9;

String Names[] = { "RAVEN", "Surtr", "Tech",}; //Those are the names affected to the fingertemplates IDs
                                                 //The first on which is Names[0] : Yassine has the ID 1 in the fingerprint sensor

SoftwareSerial mySerial(2, 3);                  //Fingerprint sensor wiring RX 3, TX 2           
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); //LCD declaring

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);                    //Fingerprint sensor declaring

void setup() 
{
  pinMode(in2, OUTPUT);
  digitalWrite(in2, HIGH);
  pinMode(But1, OUTPUT);    //Push button stuff, I made the pin 8 permanent LOW level
  digitalWrite(But1,LOW);
  pinMode(But2,INPUT_PULLUP);     //And I read the button state on pin 9
 
  Serial.begin(9600);               //Serial begin incase you need to see something on the serial monitor
  finger.begin(57600);              //Sensor baude rate
  lcd.begin (16,2);
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.home();
  finger.getTemplateCount();        //Counts the number of templates stored in the sensor flash memory
  delay(2000);
  introScreen();
}

void loop()                     
{
  int result = getFingerprintIDez();  //This function keeps looping and waiting for a fingerprint to be put on the sensor
  //delay(50);
  bool Button1=digitalRead(But2);  //Reading the state of the pushbutton
  if(Button1==LOW or result >= 0){
    //If the button is pressed it opens the doorlock as the button is meant to be inside
    OpenDoor();
    introScreen();
  }
}

void introScreen()
{
    lcd.clear();
    lcd.print("Place finger");
}

//Main function taken from the "fingerprint" example and modified
//Only the modifications are commented
int getFingerprintIDez() {
  uint8_t p = finger.getImage();        //Image scanning
  if (p != FINGERPRINT_OK)  return -1; 

  p = finger.image2Tz();               //Converting
  if (p != FINGERPRINT_OK)  return -1;

  lcd.clear();                     //And here we write a message or take an action for the denied template
  p = finger.fingerFastSearch();     //Looking for matches in the internal memory
  if (p != FINGERPRINT_OK){          //if the searching fails it means that the template isn't registered
    lcd.print("Access denied");
    delay(2000);
    introScreen();
    return -1;
  }
            //If we found a match we proceed in the function
 
  lcd.print("Welcome");                  //Printing a message for the recognized template
  lcd.setCursor(2,1);
  lcd.print(Names[finger.fingerID-1]); //Then print the name we gave it and the -1 is to remove the shift as the ID starts from "1" but the array from "0"
  return finger.fingerID;
}

/*The two following functions depends on your locking system
 *mine has a DC motor that should turn in both ways for opening and closing
 *that's why I'm using H bridge, you could have a solenoid with a transistor
 *then you'll need only opening sequence but controlling the transistor
 *as the closing is spring loaded...
 */


void OpenDoor(){
  digitalWrite(in2, LOW); // turn on motor
  delay(5000);
  digitalWrite(in2, HIGH); // turn off motor
}

Этот код предназначен для COINSLOT

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#define coinSlot 6


LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified module

int coinCount = 0;
int coinSlotSignal;
int requiredCoins = 1;
boolean coinInserted = false;


void setup() {
  Serial.begin(9600); 
 pinMode(coinSlot, INPUT_PULLUP);

 lcd.setBacklightPin(3,POSITIVE);
 lcd.setBacklight(LOW); // You can turn the backlight off by setting it to LOW instead of HIGH
 lcd.begin(16, 2);
lcd.write(EEPROM.read(5));
}

void loop() {
  while(!coinInserted){
  coinSlotSignal = digitalRead(coinSlot);
  if(coinSlotSignal < 1) {
    coinCount += 1;
    coinInserted = true;
EEPROM.write(0,coinCount);
Serial.println(EEPROM.read(0)); 


lcd.setCursor(0,0);
lcd.print("TOTAL:");
lcd.setCursor(0,1);
lcd.print(coinCount);
}
  }
  
while(coinInserted) {
  coinSlotSignal = digitalRead(coinSlot);
  if(coinSlotSignal >0) {
    coinInserted = false;
  
  }
}
if(coinCount >= requiredCoins) {
  delay(1500);
}
}

, 👍1

Обсуждение

у вас не может быть двух " пустых настроек ()"... поместите коды из обоих в один ... то же самое с " пустым циклом()`, @jsotola

пожалуйста, исправьте отступ в вашем коде ... будет намного проще следить за потоком кода, и это затруднит совершение ошибок, @jsotola

почему ПОВЕДЕНИЕ ПРОЕКТА ничего не говорит о слоте монет? ... является ли coinslot частью проекта или нет? ... в нем также ничего не говорится о соленоиде блокировки...... не очень хорошее описание поведения проекта .... четкое, подробное описание поведения проекта обычно переводится в код почти напрямую, @jsotola

У меня есть 2 отдельных кода проекта, сэр, но я получил код coinslot в Google, я надеюсь, что как потопить 2 кода в 1, чтобы запустить проект, @Raven Tenepre

Неясно, в чем проблема. Если устройство для монетного слота имеет логический выход, основанный на внутреннем датчике, затем подключите этот выход к Arduino и обработайте его как любой другой логический вход-в чем конкретная проблема?, @Dave Newton

Я не знаю, как объединить 2 кода проекта в 1 код :(, @Raven Tenepre

Я прочитал статью, сэр, и попытался утопить код, но это дает краткую информацию о проблеме, из-за которой я не могу понять, почему она вызвала это, но пытаюсь увидеть код ошибки, в котором говорится, что "ожидалось, что неквалифицированный-идентификатор перед "в то время как", @Raven Tenepre