// /**
// Arduino Electronic Safe
// Copyright (C) 2020, Uri Shaked.
// Released under the MIT License.
// */
// #include <LiquidCrystal.h>
// #include <Keypad.h>
// #include <Servo.h>
// #include "SafeState.h"
// #include "icons.h"
// /* Locking mechanism definitions */
// #define SERVO_PIN 6
// #define SERVO_LOCK_POS 20
// #define SERVO_UNLOCK_POS 90
// Servo lockServo;
// /* Display */
// LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// /* Keypad setup */
// const byte KEYPAD_ROWS = 4;
// const byte KEYPAD_COLS = 4;
// byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2};
// byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0};
// char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
// {'1', '2', '3', 'A'},
// {'4', '5', '6', 'B'},
// {'7', '8', '9', 'C'},
// {'*', '0', '#', 'D'}
// };
// Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
// /* SafeState stores the secret code in EEPROM */
// SafeState safeState;
// void lock() {
// lockServo.write(SERVO_LOCK_POS);
// safeState.lock();
// }
// void unlock() {
// lockServo.write(SERVO_UNLOCK_POS);
// }
// void showStartupMessage() {
// lcd.setCursor(4, 0);
// lcd.print("Welcome!");
// delay(1000);
// lcd.setCursor(0, 2);
// String message = "ArduinoSafe v1.0";
// for (byte i = 0; i < message.length(); i++) {
// lcd.print(message[i]);
// delay(100);
// }
// delay(500);
// }
// String inputSecretCode() {
// lcd.setCursor(5, 1);
// lcd.print("[____]");
// lcd.setCursor(6, 1);
// String result = "";
// while (result.length() < 4) {
// char key = keypad.getKey();
// if (key >= '0' && key <= '9') {
// lcd.print('*');
// result += key;
// }
// }
// return result;
// }
// void showWaitScreen(int delayMillis) {
// lcd.setCursor(2, 1);
// lcd.print("[..........]");
// lcd.setCursor(3, 1);
// for (byte i = 0; i < 10; i++) {
// delay(delayMillis);
// lcd.print("=");
// }
// }
// bool setNewCode() {
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print("Enter new code:");
// String newCode = inputSecretCode();
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print("Confirm new code");
// String confirmCode = inputSecretCode();
// if (newCode.equals(confirmCode)) {
// safeState.setCode(newCode);
// return true;
// } else {
// lcd.clear();
// lcd.setCursor(1, 0);
// lcd.print("Code mismatch");
// lcd.setCursor(0, 1);
// lcd.print("Safe not locked!");
// delay(2000);
// return false;
// }
// }
// void showUnlockMessage() {
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.write(ICON_UNLOCKED_CHAR);
// lcd.setCursor(4, 0);
// lcd.print("Unlocked!");
// lcd.setCursor(15, 0);
// lcd.write(ICON_UNLOCKED_CHAR);
// delay(1000);
// }
// void safeUnlockedLogic() {
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.write(ICON_UNLOCKED_CHAR);
// lcd.setCursor(2, 0);
// lcd.print(" # to lock");
// lcd.setCursor(15, 0);
// lcd.write(ICON_UNLOCKED_CHAR);
// bool newCodeNeeded = true;
// if (safeState.hasCode()) {
// lcd.setCursor(0, 1);
// lcd.print(" A = new code");
// newCodeNeeded = false;
// }
// auto key = keypad.getKey();
// while (key != 'A' && key != '#') {
// key = keypad.getKey();
// }
// bool readyToLock = true;
// if (key == 'A' || newCodeNeeded) {
// readyToLock = setNewCode();
// }
// if (readyToLock) {
// lcd.clear();
// lcd.setCursor(5, 0);
// lcd.write(ICON_UNLOCKED_CHAR);
// lcd.print(" ");
// lcd.write(ICON_RIGHT_ARROW);
// lcd.print(" ");
// lcd.write(ICON_LOCKED_CHAR);
// safeState.lock();
// lock();
// showWaitScreen(100);
// }
// }
// void safeLockedLogic() {
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.write(ICON_LOCKED_CHAR);
// lcd.print(" Safe Locked! ");
// lcd.write(ICON_LOCKED_CHAR);
// String userCode = inputSecretCode();
// bool unlockedSuccessfully = safeState.unlock(userCode);
// showWaitScreen(200);
// if (unlockedSuccessfully) {
// showUnlockMessage();
// unlock();
// } else {
// lcd.clear();
// lcd.setCursor(0, 0);
// lcd.print("Access Denied!");
// showWaitScreen(1000);
// }
// }
// void setup() {
// lcd.begin(16, 2);
// init_icons(lcd);
// lockServo.attach(SERVO_PIN);
// /* Make sure the physical lock is sync with the EEPROM state */
// Serial.begin(115200);
// if (safeState.locked()) {
// lock();
// } else {
// unlock();
// }
// showStartupMessage();
// }
// void loop() {
// if (safeState.locked()) {
// safeLockedLogic();
// } else {
// safeUnlockedLogic();
// }
// }
/*
Created by Rui Santos
All the resources for this project:
https://randomnerdtutorials.com/
Based on some Arduino code examples
*/
// include the library code
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int potPin = A0; // Analog pin 0 for the LED brightness potentiometer
int ledPin = 6; // LED Digital Pin with PWM
int potValue = 0; // variable to store the value coming from the potentiometer
int brightness = 0; // converts the potValue into a brightness
int pBari = 0; // progress bar
int i = 0; // foor loop
//progress bar character for brightness
byte pBar[8] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
};
void setup() {
// setup our led as an OUTPUT
pinMode(ledPin, OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD
lcd.print(" LED Brightness");
//Create the progress bar character
lcd.createChar(0, pBar);
}
void loop() {
// clears the LCD screen
lcd.clear();
// Print a message to the LCD
lcd.print(" LED Brightness");
//set the cursor to line number 2
lcd.setCursor(0,1);
// read the value from the potentiometer
potValue = analogRead(potPin);
// turns the potValue into a brightness for the LED
brightness=map(potValue, 0, 1024, 0, 255);
//lights up the LED according to the bightness
analogWrite(ledPin, brightness);
// turns the brighness into a percentage for the bar
pBari=map(brightness, 0, 255, 0, 17);
//prints the progress bar
for (i=0; i < pBari; i++)
{
lcd.setCursor(i, 1);
lcd.write(byte(0));
}
// delays 750 ms
delay(750);
}