• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
LCD menu
#6
Kod:
//Biblioteki
#include <OneWire.h>                         //dodaj biblitekę LiquidCrystal.h
#include <DallasTemperature.h>               //dodaj biblitekę LiquidCrystal.h
#include <LiquidCrystal_I2C.h>
#include "PinChangeInterrupt.h"
//Przypisanie Pinów
#define dmuchawa 9
#define pompa 10
#define podajnik 11
#define disconnected 12 //Przekaźnik nie używany, zostawiony do przyszłej rozbudowy
#define switch1 2
#define rotaryA 4
#define rotaryB 3
//Zmienne
boolean sw1pre = 1, sw1akt = 1;
int x = 0, xpre = 0, one_wire = 8, value=0;                           //x, y - pozycja kursora, z zmienne pomocnicze menuTransmisja 1-Wire (czujniki temperatury na pinie 8)
float t1,t3,t5;                                //t1 - temperatura nastawiona, t3 - temperatura pieca, t5 - temperatura w pokoju
unsigned long czas = millis();                                          
unsigned long time = 0;
//Zainicjowanie Bibliotek
LiquidCrystal_I2C  lcd(0x27, 20, 4);
OneWire oneWire(one_wire);                   //wywołujemy transmisję 1-Wire na pinie 10
DallasTemperature sensors(&oneWire);         //informujemy Arduino, ze przy pomocy 1-Wire
//Utworzenie znaku kursora
byte cursor[8] = {
0b11000,
0b10100,
0b10010,
0b10001,
0b10001,
0b10010,
0b10100,
0b11000
};
void setup(void)
{
lcd.createChar(0, cursor); //Utworzenie znaku kursora
time = millis();
pinMode(disconnected, OUTPUT);
pinMode(dmuchawa, OUTPUT);
pinMode(pompa, OUTPUT);
pinMode(podajnik, OUTPUT);
pinMode(switch1, INPUT_PULLUP);
pinMode(rotaryA, INPUT_PULLUP);
pinMode(rotaryB, INPUT_PULLUP);  
digitalWrite(dmuchawa, HIGH);
digitalWrite(pompa, HIGH);
digitalWrite(podajnik, HIGH);
digitalWrite(disconnected, HIGH);
sensors.begin();                           //rozpocznij odczyt z czujnika
//lcd.begin();
lcd.backlight();
Serial.begin(9600);
lcd.clear();                             //wyczysc ekran
lcd.setCursor(1,0);
lcd.print("STEROWNIK PIECA CO");
lcd.setCursor(8,1);
lcd.print("V1.0");
lcd.setCursor(4,2);
   for(x=0; x<=12; x++){
     delay(800);
     lcd.print("#");
   }
   x=0;
   lcd.clear();
attachPCINT(digitalPinToPCINT(switch1), pressbutton, FALLING);
attachPCINT(digitalPinToPCINT(rotaryA), rotaryUP, RISING);
attachPCINT(digitalPinToPCINT(rotaryB), rotaryDW, RISING);
}
//Obrót Enkodera w Lewo
void rotaryDW(void) {
if ((millis() - time) > 50)
       value--;
       time = millis();
   }
//Obrót Enkodera w Prawo
void rotaryUP(void) {
if ((millis() - time) > 50)
       value++;
       time = millis();
   }
//Nacisnięcie przycisku Enkodera
void pressbutton(){
xpre = x;
x++;
value=0;
}
//Wyświetlanie aktualnej temperatury
void menu(){
if(xpre != x){
   lcd.clear();
   xpre = x;
}
  
       lcd.setCursor(0,0);
       lcd.print("Temp. Nast.:");
       lcd.print(t1);
       lcd.setCursor(0,1);                       //ustaw kursor w pozycji 0,0
       lcd.print("Temp. Piec :");               //wyswietl "Temperatura: "
       lcd.print(t3);    //wyswietl wartosc z czujnika 0
       lcd.write(byte(223));                       //wyswietl znak stopnia
       lcd.print("C");      
       lcd.setCursor(0,2);                       //ustaw kursor w pozycji 0,0
       lcd.print("Temp. Pokoj:");               //wyswietl "Temperatura: "
       lcd.print(t5);    //wyswietl wartosc z czujnika 1
       lcd.write(byte(223));                       //wyswietl znak stopnia
       lcd.print("C");
}
//Odczyt temperatury z czujników
void tempread(){
   sensors.requestTemperatures();            //zazadaj odczyt temperatury z czujnika
   t3 = sensors.getTempCByIndex(0);
   t5 = sensors.getTempCByIndex(1);
}
void loop(void)
{
//Odczyt temeratury co 10s
   if((millis()- czas)> 10000){
     tempread();
     czas = millis();
   }
   page();
   menu();
}


void page(int a){
switch(a){
  case 0:{
    if(digitalRead(switch1){
     a=1;
      
    }
    break;
  }
    case 1:{

      
   break;
  }
   case 2:{
    break;
  }
   case 3:{
    break;
  }
   case 4:{
    break;
  }
   case 5:{
    break;
  }

}
  
}
Tu masz zarys jak to ma wyglądając .
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
  


Wiadomości w tym wątku
LCD menu - przez pawcio404 - 12-11-2017, 23:40
RE: LCD menu - przez adix - 13-11-2017, 19:48
RE: LCD menu - przez pawcio404 - 13-11-2017, 22:24
RE: LCD menu - przez adix - 13-11-2017, 22:26
RE: LCD menu - przez pawcio404 - 13-11-2017, 23:42
RE: LCD menu - przez adix - 14-11-2017, 00:23
RE: LCD menu - przez pawcio404 - 14-11-2017, 22:13
RE: LCD menu - przez adix - 14-11-2017, 23:01
RE: LCD menu - przez pawcio404 - 15-11-2017, 21:33
RE: LCD menu - przez adix - 15-11-2017, 22:21
RE: LCD menu - przez pawcio404 - 16-11-2017, 01:54
RE: LCD menu - przez adix - 19-11-2017, 00:45

Skocz do:


Przeglądający: 1 gości