Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- #include "HX711.h"
- const int LOADCELL_DOUT_PIN = 5;
- const int LOADCELL_SCK_PIN = 6;
- HX711 scale;
- #define clk 2
- #define dt 3
- #define sw 4
- #define in1 7
- #define in2 8
- #define in3 9
- #define in4 10
- #define calibration_factor 1064.5 //Kalibracni faktor
- volatile boolean TurnDetected;
- volatile boolean up;
- bool doonce = 0;
- char screen = 0;
- boolean changestate = 0;
- long weight;
- int pump1g = 20; //pocatecni hodnoty 1 pumpy
- int pump2g = 20; //pocatecni hodnoty 2 pumpy
- void isr0 () {
- TurnDetected = true;
- up = (digitalRead(clk) == digitalRead(dt));
- }
- void setup() {
- scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
- delay(2000);
- scale.set_scale(calibration_factor); //Načtení kalibračního faktoru
- scale.tare(); //Za předpokladu, že na stupnici není při startu žádná hmotnost, resetujte váhu na 0
- lcd.begin(20, 4); //
- lcd.backlight(); // zapnuti podsviceni
- pinMode(sw, INPUT_PULLUP);
- pinMode(clk, INPUT);
- pinMode(dt, INPUT);
- pinMode(in1, OUTPUT);
- pinMode(in2, OUTPUT);
- pinMode(in3, OUTPUT);
- pinMode(in4, OUTPUT);
- digitalWrite(in1, LOW);
- digitalWrite(in2, LOW);
- digitalWrite(in3, LOW);
- digitalWrite(in4, LOW);
- attachInterrupt (0, isr0, RISING);
- }
- void loop() {
- if (TurnDetected) {
- delay(200);
- doonce = 0;
- if (changestate == 0) {
- if (up) {
- screen++;
- if (screen > 3) {
- screen = 3;
- }
- }
- else {
- screen = screen - 1;
- if (screen < 0) {
- screen = 0;
- }
- }
- }
- else {
- if (up) {
- switch (screen) {
- case 0: pump1g = pump1g + 10;
- break;
- case 1: pump2g = pump2g + 10;
- break;
- }
- }
- else {
- switch (screen) {
- case 0: pump1g = pump1g - 10;
- break;
- case 1: pump2g = pump2g - 10;
- break;
- }
- }
- }
- TurnDetected = false;
- }
- if (digitalRead(sw) == LOW) {
- delay(200);
- changestate = !changestate;
- doonce = 0;
- }
- if (screen == 0 && doonce == 0) {
- lcd.clear();
- lcd.print("1 Slozka");
- lcd.setCursor(0, 1);
- lcd.print(pump1g);
- lcd.setCursor(3, 1);
- lcd.print("g");
- if (changestate == 0) {
- lcd.setCursor(9, 0 );
- lcd.print("Zmenit?");
- }
- doonce = 1;
- }
- if (screen == 1 && doonce == 0) {
- lcd.clear();
- lcd.print("2 Slozka");
- lcd.setCursor(0, 1);
- lcd.print(pump2g);
- lcd.setCursor(3, 1);
- lcd.print("g");
- if (changestate == 0) {
- lcd.setCursor(9, 0 );
- lcd.print("Zmenit?");
- }
- doonce = 1;
- }
- if (screen == 2 && doonce == 0) {
- lcd.clear();
- if (changestate == 0) {
- lcd.print("Zacit davkovat?");
- lcd.setCursor(0, 1);
- lcd.print("Spravny pomer?");
- doonce = 1;
- }
- else {
- lcd.print("Cekejte !");
- delay(2000);
- lcd.clear();
- //tady je pumpa 1
- lcd.print("Pumpa 1 Zapnuta");
- digitalWrite(in1, HIGH);
- while (scale.read() < pump1g) { }
- lcd.clear();
- lcd.print(pump1g);
- lcd.print("g");
- delay((pump1g/12)*1000);
- digitalWrite(in1, LOW);
- delay(2000);
- weight = scale.read();
- delay(100);
- lcd.clear();
- //tady je pumpa 2
- lcd.print("Pumpa 2 Zapnuta");
- digitalWrite(in3, HIGH);
- while (scale.read() - weight < 3000) { }
- lcd.clear();
- lcd.print(pump2g);
- lcd.print("g");
- delay((pump2g/12)*1000);
- digitalWrite(in3, LOW);
- delay(2000);
- changestate = 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement