hi, so i can't figure how to use millis, and I don't really have the time to right now because this is a school project and I need it done, I just need someone to please help me by changing my delays to millis so pumping_drink and pump_relay2 will run at the same time, thanks! i will try to learn this after i just dont have the time right now, my code works but because of me using delay it wont work properly.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
MFRC522 mfrc522(SS_PIN, RST_PIN);
String read_rfid;
String ok_rfid_1="a070dba4";
String ok_rfid_2="be31dbd9";
int lock = 7;
int lock2 = 7;
void setup() {
Serial.begin(9600);
while (!Serial);
SPI.begin();
mfrc522.PCD_Init();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0, 0);
display.setTextColor(WHITE);
pinMode(lock, OUTPUT);
pinMode(lock2, OUTPUT);
}
void dump_byte_array(byte *buffer, byte bufferSize) {
read_rfid="";
for (byte i = 0; i < bufferSize; i++) {
read_rfid=read_rfid + String(buffer[i], HEX);
}
}
void pump_relay() {
digitalWrite(lock,HIGH);
delay(500);
digitalWrite(lock,LOW);
}
void pumping_drink() {
display.setCursor(0, 0);
display.print("pumping");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("pumping.");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("pumping..");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("pumping...");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("pumping");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("pumping.");
display.display();
delay(1000);
display.clearDisplay();
display.setCursor(0, 0);
display.print("Done!");
display.display();
delay(1000);
display.clearDisplay();
}
void pump_relay2() {
digitalWrite(lock2, HIGH);
delay(5000);
digitalWrite(lock2,LOW);
}
void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent())
return;
if ( ! mfrc522.PICC_ReadCardSerial())
return;
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println(read_rfid);
if (read_rfid==ok_rfid_1) {
pump_relay2();
pumping_drink();
}
Serial.println(read_rfid);
if (read_rfid==ok_rfid_2) {
pump_relay();
}
}
Thanks!