• 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
Zawieszanie wyświetlacza OLED
#44
Kod:
#include "DHT.h"                          // biblioteka DHT
#include "U8glib.h"                       // bibioteka OLED I2C

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);  // I2C / TWI

#define DHTPIN 2                          // definicja PIN dla DHT
#define DHTTYPE DHT22                     // DHT 22
DHT dht(DHTPIN, DHTTYPE, 6);                  // deklaracja DHT
char str[10];                         // znak stopni celsujsza i procent
int WILG;                           // zmienna wilgotnosc
float TEMP;  // zmienna temperatura w stopniach C

unsigned long aktualnyCzas = 0; // do millis
unsigned long zapamietanyCzas = 0;  // do millis


int relay_pin = 8;                // przekaznik
int relay_pin2 = 12;              // przekaznik
int relay_pin3 = 7;                // przekaznik
int relay_pin4 = 9;
#define led_info_promiennik 4         // dioda od promiennika
#define led_info_generator 13      // dioda od generatora pary
#define led_info_nic 1



int potencjometr = A0;                // odczyt napiecia z potentcjometru pinem analogowym 0
int wartosc = 0;                       // zmienna przechowujaca wartosc napiecia odczytanego
int dane[5]; // do potencjometru do sredniej
int i=0;  // do potencjometru do sredniej
int srednia;  // do potencjometru do sredniej

//------------------------------------------------------------------//
//                Sekcja ".initX"    (ZERO zainicjalizowane)                //
//------------------------------------------------------------------//
#define NOINIT __attribute__ ((section(".noinit")))
unsigned char DnoStosu NOINIT;            // Kontrola stosu
void ClrIntRam(void) __attribute__ ((naked)) __attribute__ ((section (".init3")));
void ClrIntRam(void)
{
unsigned char *AdrRam;
   //--- Zapisujemy od ostatniej zajetej komórki ram do wierzchołka stosu -32 bajty rezerwy ---
   for (AdrRam=&DnoStosu; AdrRam < (unsigned char*)RAMEND-32; AdrRam++)            // Wpisanie do IntRam $FF
       {
       *AdrRam = 0xFF;
       }
}

void setup()
{
 dht.begin();                          // inicjalizacja DHT
pinMode(potencjometr, INPUT); //pin A0 (pot) jako wejście
pinMode(relay_pin, OUTPUT);
pinMode(relay_pin2, OUTPUT);
pinMode(relay_pin3, OUTPUT);
pinMode(relay_pin4, OUTPUT);
digitalWrite(relay_pin, HIGH);
digitalWrite(relay_pin2, HIGH);
digitalWrite(relay_pin3, HIGH);
digitalWrite(relay_pin4, HIGH);
pinMode(led_info_promiennik, OUTPUT);
pinMode(led_info_generator, OUTPUT);
pinMode(led_info_nic, OUTPUT);

}

void draw(void){
u8g.firstPage();              
do {
u8g.setFont(u8g_font_helvB08);               // czcionka
u8g.drawStr( 2, 27, "Zwiekszanie wilgotnosci!");            
                   

u8g.drawStr( 2, 42, "Wilgotnosc :");            
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");

u8g.drawStr( 2, 57, "Wilg. zad.:");            
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() );                       // koniec petli obrazu

}
void draw2(void){
u8g.firstPage();              
do {
u8g.setFont(u8g_font_helvB08);               // czcionka
u8g.drawStr( 2, 27, "Zmniejszanie wilgotnosci!");            
                   

u8g.drawStr( 2, 42, "Wilgotnosc :");            
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");

u8g.drawStr( 2, 57, "Wilg. zad.:");            
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() );                       // koniec petli obrazu

}
void draw3(void){
u8g.firstPage();              
do {
u8g.setFont(u8g_font_helvB08);               // czcionka
u8g.drawStr( 2, 27, "Strefa Nieczulosci");            
                   

u8g.drawStr( 2, 42, "Wilgotnosc :");            
u8g.drawStr( 80, 42, dtostrf(WILG, 5, 2, str));
u8g.drawStr( 110, 42, "%");

u8g.drawStr( 2, 57, "Wilg. zad.:");            
u8g.drawStr( 80, 57, dtostrf(wartosc, 5, 2, str));
u8g.drawStr( 110, 57, "%");
} while( u8g.nextPage() );                       // koniec petli obrazu

}
void loop() {

aktualnyCzas = millis();

if (aktualnyCzas - zapamietanyCzas >= 50UL) {
   //Zapamietaj aktualny czas
   zapamietanyCzas = aktualnyCzas;
}
                     
WILG = dht.readHumidity();                     // odczytaj wilgotnosc
TEMP = dht.readTemperature();                  // odczytaj temp
wartosc = analogRead(A0);
dane[i]=wartosc; // do sredniej potencjoemtru
i++;
if(i==5){
i=0;
}
for(int j=0;j<5;j++){
 srednia+=dane[j]; // do sredniej potencjoemtru
}
srednia/=5.0; // do sredniej potencjoemtru
wartosc  = map(wartosc, 0, 1023, 0, 100);           // skalowanie od 0 do 100            

// PETLA OD WARUNKOW
if(wartosc>(WILG+2)) {
 u8g.firstPage();
 do {
   draw();
 } while (u8g.nextPage() );
digitalWrite(relay_pin2, HIGH); //Wyłączenie Promiennika
digitalWrite(relay_pin3, LOW); // ON wentylatora
digitalWrite(relay_pin4, LOW);  //ON wentylatora
digitalWrite(relay_pin, LOW);  // Wlaczenie GENERATORA PARY  
digitalWrite(led_info_generator, HIGH); //Włączenie diody od GENERATORA
digitalWrite(led_info_promiennik, LOW); //WYLACZENIE diody od PROMIENNIKA
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od Strefy Nieczułości
}
else if(wartosc<(WILG-2)){

u8g.firstPage();
 do {
   draw2();
 } while (u8g.nextPage() );
digitalWrite(relay_pin3, HIGH);  // OFF wentylatorow
digitalWrite(relay_pin4, HIGH);  // OFF wentylatorów
digitalWrite(relay_pin, HIGH);  // Wylaczenie GENERATORA
digitalWrite(relay_pin2, LOW); // Wlaczenie Promiennika
digitalWrite(led_info_promiennik, HIGH); //Włączenie diody od PROMIENNIKA
digitalWrite(led_info_generator, LOW); //Wyłączenie diody od GENERATORA
digitalWrite(led_info_nic, LOW); // Wyłączenie diody od Strefy Nieczułosci
}
else { // tolerancja 2 stopni odnosnie rownosci ze wzgledu na te wahania potencjometru
u8g.firstPage();
 do {
   draw3();
 } while (u8g.nextPage() );
digitalWrite(relay_pin, HIGH); // Wyłaczenie generatora
digitalWrite(relay_pin2, HIGH); // Wyłączenie promiennika
digitalWrite(relay_pin3, HIGH);  // OFF wentylatorow
digitalWrite(relay_pin4, HIGH);  // OFF wentylatorów
digitalWrite(led_info_promiennik, LOW); //WYLACZENIE diody od PROMIENNIKA
digitalWrite(led_info_generator, LOW); //WYLACZENIE diody od GENERATORA
digitalWrite(led_info_nic, HIGH); // Włączenie diody od Strefy Nieczułosci
}
}

//----------------------------------------------------------------------//
//                Sprawdz zajetość stosu                                    //
//----------------------------------------------------------------------//
void TestStosu()
{
unsigned char *AdrRam;
unsigned int cnt=0;


   //--- Sprawdzamy od ostatniej zajetej komórki ram do wierzchołka stosu -32 bajty rezerwy ---
   for (AdrRam=(&DnoStosu)+1; AdrRam < (unsigned char*)RAMEND-32; AdrRam++)            // Wpisanie do IntRam $FF
       {
       cnt++;
       if (*AdrRam != 0xFF)
           {
           FreeRam = cnt;                    // Wolny obszar RAM'u
           if (FreeRam < 32 )
               {                            // Jesli za mały obszar to generuj błąd
               PrintError( ERR_STOS );
               StanLedErr=LED_ERR_STOS;
               sprintf_P(str, PSTR(" Free $%04x RAM"CRLF), FreeRam); PrintString(str); _delay_ms(TIMUARTFREE);
               }
           return;
           }
       }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Zawieszanie wyświetlacza OLED - przez Automatyk231 - 25-10-2018, 11:01
RE: Zawieszanie wyświetlacza OLED - przez es2 - 25-10-2018, 11:29
RE: Zawieszanie wyświetlacza OLED - przez es2 - 25-10-2018, 13:02
RE: Zawieszanie wyświetlacza OLED - przez es2 - 25-10-2018, 13:22
RE: Zawieszanie wyświetlacza OLED - przez es2 - 25-10-2018, 14:07
RE: Zawieszanie wyświetlacza OLED - przez error105 - 25-10-2018, 14:44
RE: Zawieszanie wyświetlacza OLED - przez es2 - 25-10-2018, 18:28
RE: Zawieszanie wyświetlacza OLED - przez es2 - 26-10-2018, 14:20
RE: Zawieszanie wyświetlacza OLED - przez error105 - 25-10-2018, 20:43
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 25-10-2018, 23:52
RE: Zawieszanie wyświetlacza OLED - przez error105 - 26-10-2018, 10:52
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 26-10-2018, 11:47
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 26-10-2018, 12:57
RE: Zawieszanie wyświetlacza OLED - przez error105 - 26-10-2018, 13:37
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 26-10-2018, 14:03
RE: Zawieszanie wyświetlacza OLED - przez es2 - 26-10-2018, 16:36
RE: Zawieszanie wyświetlacza OLED - przez es2 - 27-10-2018, 16:28
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 26-10-2018, 16:51
RE: Zawieszanie wyświetlacza OLED - przez es2 - 26-10-2018, 17:02
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 26-10-2018, 17:39
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 28-10-2018, 05:26
RE: Zawieszanie wyświetlacza OLED - przez es2 - 28-10-2018, 13:37
RE: Zawieszanie wyświetlacza OLED - przez es2 - 28-10-2018, 14:12
RE: Zawieszanie wyświetlacza OLED - przez es2 - 28-10-2018, 14:57
RE: Zawieszanie wyświetlacza OLED - przez Automatyk231 - 28-10-2018, 23:41
RE: Zawieszanie wyświetlacza OLED - przez es2 - 28-10-2018, 23:58
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 29-10-2018, 02:20
RE: Zawieszanie wyświetlacza OLED - przez es2 - 29-10-2018, 12:04
RE: Zawieszanie wyświetlacza OLED - przez es2 - 29-10-2018, 12:38
RE: Zawieszanie wyświetlacza OLED - przez es2 - 29-10-2018, 13:05
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 29-10-2018, 20:42
RE: Zawieszanie wyświetlacza OLED - przez es2 - 29-10-2018, 21:05
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 29-10-2018, 22:10
RE: Zawieszanie wyświetlacza OLED - przez es2 - 30-10-2018, 01:08
RE: Zawieszanie wyświetlacza OLED - przez error105 - 30-10-2018, 00:22
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 30-10-2018, 08:46
RE: Zawieszanie wyświetlacza OLED - przez kaczakat - 30-10-2018, 14:15
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 00:55
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 10:30
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 11:05
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 11:12
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 11:23
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 11:33
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 12:57
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 13:11
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 13:23
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 14:29
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 14:49
RE: Zawieszanie wyświetlacza OLED - przez es2 - 03-11-2018, 15:52
Zawieszanie wyświetlacza OLED - przez wchpikus - 03-11-2018, 15:59

Skocz do:


Przeglądający: 1 gości