Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <Keypad.h>
- Adafruit_SSD1306 display(128, 64, &Wire, 4);
- //int pTrig = A0;
- //int pEcho = A1;
- //int pEcho2 = A2;
- //int pEcho3 = A3;
- //int pEcho4 = 2;
- int digit;
- char keys[4][4] = {
- {'1', '2', '3', 'A'},
- {'4', '5', '6', 'B'},
- {'7', '8', '9', 'C'},
- {'*', '0', '#', 'D'}
- };
- byte pinyRadku[4] = {12, 11, 10, 9};
- byte pinySloupcu[4] = {8, 7, 6, 4};
- Keypad klavesnice = Keypad( makeKeymap(keys), pinyRadku, pinySloupcu, 4, 4);
- void(* resetFunc) (void) = 0;
- char First = '.'; // Creating variables to store the history of 4 last pressed key on the keypad.
- char Second = '.';
- char Third = '.';
- char Fourth = '.';
- char keyFirst = '9'; // The pincode is set here: You can use any of the character from the chart below.
- char keySecond = '9';
- char keyThird = '1';
- char keyFourth = '1';
- int menu;
- int us1;
- int us2;
- int us3;
- int us4;
- bool state;
- int red_dis = 20;
- int orange_dis = 40;
- long odezva, vzdalenost;
- float u1, u2, u3, u4;
- void setup()
- {
- // Serial.begin(9600);
- pinMode(A0, OUTPUT);
- pinMode(A1, INPUT);
- pinMode(A2, INPUT);
- pinMode(A3, INPUT);
- pinMode(2, INPUT);
- pinMode(5, OUTPUT);
- pinMode(3, OUTPUT);
- pinMode(13, OUTPUT);
- if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
- digitalWrite(5, HIGH);
- for (;;); // Don't proceed, loop forever
- }
- display.clearDisplay();
- display.setTextSize(2);
- display.setTextColor(WHITE);
- if (readDistanceCM() > 3) us1 = HIGH;
- else u1 = 999;
- delay(200);
- if (readDistanceCM2() > 3) us2 = HIGH;
- else u2 = 999;
- delay(200);
- if (readDistanceCM3() > 1) us3 = HIGH;
- else u3 = 999;
- delay(200);
- if (readDistanceCM4() > 1) us4 = HIGH;
- else u4 = 999;
- delay(200);
- display.setCursor(0, 0);
- display.println("Ultrasonic");
- display.print(us1);
- display.print(us2);
- display.print(us3);
- display.print(us4);
- display.display();
- delay(2000);
- lock();
- }
- void loop()
- {
- char klavesa = klavesnice.getKey();
- if (menu == 0) {
- if (u1 != 999) u1 = readDistanceCM();
- delay(50);
- if (u2 != 999) u2 = readDistanceCM2();
- delay(50);
- if (u3 != 999) u3 = readDistanceCM3();
- delay(50);
- if (u4 != 999) u4 = readDistanceCM4();
- delay(50);
- if (u1 < red_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 0); //GREEN
- digitalWrite(1, LOW);
- tone(13, 1000);
- }
- else if (u2 < red_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 0); //GREEN
- digitalWrite(1, LOW);
- tone(13, 1000);
- }
- else if (u3 < red_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 0); //GREEN
- digitalWrite(1, LOW);
- tone(13, 1000);
- }
- else if (u4 < red_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 0); //GREEN
- digitalWrite(1, LOW);
- tone(13, 1000);
- }
- else if (u1 < orange_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 165); //GREEN
- digitalWrite(1, LOW);
- noTone(13);
- }
- else if (u2 < orange_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 165); //GREEN
- digitalWrite(1, LOW);
- noTone(13);
- }
- else if (u3 < orange_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 165); //GREEN
- digitalWrite(1, LOW);
- noTone(13);
- }
- else if (u4 < orange_dis) {
- analogWrite(5, 255); //RED
- analogWrite(3, 165); //GREEN
- digitalWrite(1, LOW);
- noTone(13);
- }
- else {
- analogWrite(5, 0); //RED
- analogWrite(3, 255); //GREEN
- digitalWrite(3, HIGH);
- noTone(13);
- }
- }
- if (klavesa) {
- if (menu == 0) {
- // Serial.print("Pressed key: ");
- // Serial.println(klavesa);
- if (digit == 0) First = klavesa;
- if (digit == 1) Second = klavesa;
- if (digit == 2) Third = klavesa;
- if (digit == 3) Fourth = klavesa;
- digit++;
- //float distance = readDistanceCM();
- // Serial.print("Measured distance: ");
- // Serial.println(readDistanceCM());
- // delay(100);
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print("PIN:");
- display.print(First);
- display.print(Second);
- display.print(Third);
- display.print(Fourth);
- display.display();
- if (digit == 4) {
- if (keyFirst == First && keySecond == Second && keyThird == Third && keyFourth == Fourth) {
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print("A -RED LED");
- display.setCursor(0, 15);
- display.print("B -ORANGE");
- display.setCursor(0, 30);
- display.print("C -C PIN");
- display.setCursor(0, 45);
- display.print("D -LOCK");
- display.display();
- if (readDistanceCM() > 3) u1 = 90;
- else u1 = 999;
- delay(200);
- if (readDistanceCM2() > 3) u2 = 90;
- else u2 = 999;
- delay(200);
- if (readDistanceCM3() > 1) u3 = 90;
- else u3 = 999;
- delay(200);
- if (readDistanceCM4() > 1) u4 = 90;
- else u4 = 999;
- delay(200);
- delay(500);
- menu = 1;
- digit = 0;
- } else {
- digit = 0;
- display.clearDisplay();
- First = '.';
- Second = '.';
- Third = '.';
- Fourth = '.';
- display.setCursor(0, 0);
- display.print("PIN:");
- display.print(First);
- display.print(Second);
- display.print(Third);
- display.print(Fourth);
- display.setCursor(0, 14);
- display.println("Incorrect!");
- display.display();
- delay(500);
- }
- }
- display.display();
- }
- }
- if (menu == 1) {
- if (klavesa == 'A') {
- display.clearDisplay();
- display.setCursor(0, 0);
- display.setTextSize(2);
- display.print("Min dis.10\nMax dis.99\nSet:");
- display.print(red_dis);
- display.setTextSize(2);
- display.display();
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- if (klavesa == '1' || klavesa == '2' || klavesa == '3' || klavesa == '4' || klavesa == '5' || klavesa == '6' || klavesa == '7' || klavesa == '8' || klavesa == '9') {
- First = klavesa;
- state = true;
- }
- }
- }
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print(First);
- display.print(" cm");
- display.display();
- state = false;
- if (First == '1') red_dis = 10;
- if (First == '2') red_dis = 20;
- if (First == '3') red_dis = 30;
- if (First == '4') red_dis = 40;
- if (First == '5') red_dis = 50;
- if (First == '6') red_dis = 60;
- if (First == '7') red_dis = 70;
- if (First == '8') red_dis = 80;
- if (First == '9') red_dis = 90;
- //Serial.println(red_dis);
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- if (klavesa == '1' || klavesa == '2' || klavesa == '3' || klavesa == '4' || klavesa == '5' || klavesa == '6' || klavesa == '7' || klavesa == '8' || klavesa == '9' || klavesa == '0') {
- Second = klavesa;
- state = true;
- }
- }
- }
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print(First);
- display.print(Second);
- display.print(" cm");
- display.setCursor(0, 15);
- display.print("Saved!");
- display.display();
- state = false;
- if (Second == '1') red_dis = red_dis + 1;
- if (Second == '2') red_dis = red_dis + 2;
- if (Second == '3') red_dis = red_dis + 3;
- if (Second == '4') red_dis = red_dis + 4;
- if (Second == '5') red_dis = red_dis + 5;
- if (Second == '6') red_dis = red_dis + 6;
- if (Second == '7') red_dis = red_dis + 7;
- if (Second == '8') red_dis = red_dis + 8;
- if (Second == '9') red_dis = red_dis + 9;
- delay(2000);
- //Serial.println(red_dis);
- lock();
- }
- if (klavesa == 'B') {
- display.clearDisplay();
- display.setTextSize(2);
- display.setCursor(0, 0);
- display.print("Min dis.10\nMax dis.99\nSet:");
- display.print(orange_dis);
- display.setTextSize(2);
- display.display();
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- if (klavesa == '1' || klavesa == '2' || klavesa == '3' || klavesa == '4' || klavesa == '5' || klavesa == '6' || klavesa == '7' || klavesa == '8' || klavesa == '9') {
- First = klavesa;
- state = true;
- }
- }
- }
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print(First);
- display.print(" cm");
- display.display();
- state = false;
- if (First == '1') orange_dis = 10;
- if (First == '2') orange_dis = 20;
- if (First == '3') orange_dis = 30;
- if (First == '4') orange_dis = 40;
- if (First == '5') orange_dis = 50;
- if (First == '6') orange_dis = 60;
- if (First == '7') orange_dis = 70;
- if (First == '8') orange_dis = 80;
- if (First == '9') orange_dis = 90;
- //Serial.println(orange_dis);
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- if (klavesa == '1' || klavesa == '2' || klavesa == '3' || klavesa == '4' || klavesa == '5' || klavesa == '6' || klavesa == '7' || klavesa == '8' || klavesa == '9' || klavesa == '0') {
- Second = klavesa;
- state = true;
- }
- }
- }
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print(First);
- display.print(Second);
- display.print(" cm");
- display.setCursor(0, 15);
- display.print("Saved!");
- display.display();
- state = false;
- if (Second == '1') orange_dis = orange_dis + 1;
- if (Second == '2') orange_dis = orange_dis + 2;
- if (Second == '3') orange_dis = orange_dis + 3;
- if (Second == '4') orange_dis = orange_dis + 4;
- if (Second == '5') orange_dis = orange_dis + 5;
- if (Second == '6') orange_dis = orange_dis + 6;
- if (Second == '7') orange_dis = orange_dis + 7;
- if (Second == '8') orange_dis = orange_dis + 8;
- if (Second == '9') orange_dis = orange_dis + 9;
- delay(2000);
- //Serial.println(red_dis);
- lock();
- }
- if (klavesa == 'D') {
- lock();
- }
- if (klavesa == '0')
- {
- for (int i = 0; i <= 25500; i++)
- {
- digitalWrite(3, LOW);
- digitalWrite(5, LOW);
- digitalWrite(13, LOW);
- display.clearDisplay();
- display.display();
- if (klavesa == '1')
- {
- digitalWrite(3, HIGH);
- digitalWrite(5, HIGH);
- digitalWrite(13, HIGH);
- i=25501;
- lock();
- }
- }
- }
- if (klavesa == '#')
- {
- resetFunc();
- }
- if (klavesa == '*')
- {
- for (int i = 0; i <= 25500; i++)
- {
- #define echoPin1 A1
- #define echoPin2 A2
- #define echoPin3 A3
- #define echoPin4 2
- #define trigPin A0
- char klavesa = klavesnice.getKey();
- long duration;
- int distance;
- long duration2;
- int distance2;
- long duration3;
- int distance3;
- long duration4;
- int distance4;
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin1, INPUT);
- pinMode(echoPin2, INPUT);
- pinMode(echoPin3, INPUT);
- pinMode(echoPin4, INPUT);
- display.clearDisplay();
- display.setCursor(0, 0);
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin1, HIGH);
- distance = duration * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration2 = pulseIn(echoPin2, HIGH);
- distance2 = duration2 * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration3 = pulseIn(echoPin3, HIGH);
- distance3 = duration3 * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration4 = pulseIn(echoPin4, HIGH);
- distance4 = duration4 * 0.034 / 2;
- display.print("Dis.1:");
- display.print(distance);
- display.print("\n");
- display.print("Dis.2:");
- display.print(distance2);
- display.print("\n");
- display.print("Dis.3:");
- display.print(distance3);
- display.print("\n");
- display.print("Dis.4:");
- display.print(distance4);
- display.print("\n");
- display.display();
- if (klavesa == '*')
- {
- i = 25501;
- lock();
- }
- }
- }
- if (klavesa == 'C') {
- state = false;
- First = '.';
- Second = '.';
- Third = '.';
- Fourth = '.';
- writenew();
- delay(300);
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- First = klavesa;
- state = true;
- }
- }
- state = false;
- writenew();
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- Second = klavesa;
- state = true;
- }
- }
- state = false;
- writenew();
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- Third = klavesa;
- state = true;
- }
- }
- state = false;
- writenew();
- while (state == false) {
- char klavesa = klavesnice.getKey();
- if (klavesa) {
- Fourth = klavesa;
- state = true;
- }
- }
- state = false;
- writenew();
- keyFirst = First;
- keySecond = Second;
- keyThird = Third;
- keyFourth = Fourth;
- display.setCursor(0, 15);
- display.print("Pin set");
- display.display();
- delay(1000);
- lock();
- }
- }
- }
- void writenew() {
- display.clearDisplay();
- display.setCursor(0, 0);
- display.print("NEW:");
- display.print(First);
- display.print(Second);
- display.print(Third);
- display.print(Fourth);
- display.display();
- }
- void loop_distance()
- {
- #define echoPin1 A1
- #define echoPin2 A2
- #define echoPin3 A3
- #define echoPin4 2
- #define trigPin A0
- char klavesa = klavesnice.getKey();
- long duration;
- int distance;
- long duration2;
- int distance2;
- long duration3;
- int distance3;
- long duration4;
- int distance4;
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin1, INPUT);
- pinMode(echoPin2, INPUT);
- pinMode(echoPin3, INPUT);
- pinMode(echoPin4, INPUT);
- display.clearDisplay();
- display.setCursor(0, 0);
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration = pulseIn(echoPin1, HIGH);
- distance = duration * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration2 = pulseIn(echoPin2, HIGH);
- distance2 = duration2 * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration3 = pulseIn(echoPin3, HIGH);
- distance3 = duration3 * 0.034 / 2;
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- duration4 = pulseIn(echoPin4, HIGH);
- distance4 = duration4 * 0.034 / 2;
- display.print("Dis.1:");
- display.print(distance);
- display.print("\n");
- display.print("Dis.2:");
- display.print(distance2);
- display.print("\n");
- display.print("Dis.3:");
- display.print(distance3);
- display.print("\n");
- display.print("Dis.4:");
- display.print(distance4);
- display.print("\n");
- display.display();
- delay(100);
- return;
- }
- void standby()
- {
- char klavesa = klavesnice.getKey();
- digitalWrite(3, LOW);
- digitalWrite(5, LOW);
- digitalWrite(13, LOW);
- display.clearDisplay();
- display.display();
- if (klavesa == '1')
- {
- lock();
- }
- }
- void lock() {
- menu = 0;
- display.clearDisplay();
- First = '.';
- Second = '.';
- Third = '.';
- Fourth = '.';
- display.setCursor(0, 0);
- display.print("PIN:");
- display.print(First);
- display.print(Second);
- display.print(Third);
- display.print(Fourth);
- display.display();
- delay(300);
- }
- int readDistanceCM() {
- digitalWrite(A0, LOW);
- delayMicroseconds(2);
- digitalWrite(A0, HIGH);
- delayMicroseconds(10);
- digitalWrite(A0, LOW);
- int duration = pulseIn(A1, HIGH);
- return duration / 58.31;
- }
- int readDistanceCM2() {
- digitalWrite(A0, LOW);
- delayMicroseconds(2);
- digitalWrite(A0, HIGH);
- delayMicroseconds(10);
- digitalWrite(A0, LOW);
- int duration = pulseIn(A2, HIGH);
- return duration / 58.31;
- }
- int readDistanceCM3() {
- digitalWrite(A0, LOW);
- delayMicroseconds(2);
- digitalWrite(A0, HIGH);
- delayMicroseconds(10);
- digitalWrite(A0, LOW);
- int duration = pulseIn(A3, HIGH);
- return duration * 0.034 / 2;
- }
- int readDistanceCM4() {
- digitalWrite(A0, LOW);
- delayMicroseconds(2);
- digitalWrite(A0, HIGH);
- delayMicroseconds(10);
- digitalWrite(A0, LOW);
- int duration = pulseIn(2, HIGH);
- return duration * 0.034 / 2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement