// STM32 Nucleo-C031C6 I2C Example
// Simulation: https://wokwi.com/projects/365421666018061313
#include "LiquidCrystal_I2C.h"
#include <Keypad.h>
#include <Stepper.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 7, 6, 5, 4 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 13, 12, 11, 10 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, A0, A1, A2, A3);
int floor_num = 2;
int target = 3;
void setup() {
Serial.begin(115200);
Serial.println("Hello, STM32!");
lcd.init();
lcd.backlight();
myStepper.setSpeed(50);
}
char password[4] = {'1', '2', '3', '4'};
int idx = 0;
char userPass[4];
void loop() {
lcd.setCursor(0, 0);
int c = 0;
while(int i = 0) {
char key = keypad.getKey();
lcd.setCursor(0, c);
lcd.print(key);
c = c + 1;
if (key != NO_KEY) {
userPass[idx] = key;
if (userPass[idx] == password[idx]) {
idx = idx + 1;
if (idx == 4) {
Serial.println("Correct");
}
continue;
}
Serial.println("error");
break;
}
}
}